#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <algorithm>

using namespace std;

#define rep(i,j) REP((i), 0, (j))
#define REP(i,j,k) for(int i=(j);(i)<(k);++i)
#define BW(a,x,b) ((a)<=(x)&&(x)<=(b))
#define F first
#define S second
#define INF 1 << 30

typedef pair<int, int> pi;
typedef pair<int, pi> pii;
typedef vector<int> vi;
typedef queue<int> qi;
typedef long long ll;

int n, m, f, dis, pos;
char c[100];

int main(){
  while(scanf("%d%d", &n, &m) && n){
    rep(i, n) c[i] = '#';
    char p[2];
    rep(k, m){
      scanf("%s", p);
      switch(p[0]){
      case 'A':
	rep(i, n) if(c[i] == '#'){ c[i] = 'A'; break;;}
	break;
      case 'B':
	if(c[n-2] != 'A' && c[n-1] == '#'){ c[n-1] = 'B'; break;}
	for(int i = n-2; i > 0; i--) if(c[i+1] != 'A' && c[i-1] != 'A' && c[i] == '#'){ c[i] = 'B'; goto e1;}
	if(c[1] != 'A' && c[0] == '#'){ c[0] = 'B'; break;}
	rep(i, n) if(c[i] == '#'){ c[i] = 'B'; break;}
      e1:
	break;
      case 'C':
	rep(i, n-1) if(c[i] != '#' && c[i+1] == '#'){ c[i+1] = 'C'; goto e2;}
	f = 0;
	rep(i, n) if(c[i] != '#') f = 1;
	if(f){
	  c[0] = 'C';
	}else{
	  if(n%2) c[(n+1)/2] = 'C';
	  else c[n/2+1] = 'C';
	}
      e2:
	break;
      case 'D':
	dis = 0, pos = 0;
	rep(i, n){
	  if(c[i] != '#') continue;
	  int j;
	  f = 0;
	  for(j = 1; j < n; j++){
	    if(i-j >= 0 && c[i-j] != '#') f = 1;
	    //	    printf("%d ", f);
	    if(i+j < n && c[i+j] != '#') f = 1;
	    //	    printf("%d ", f);
	    if(f){
	      if(dis < j){
		dis = j;
		pos = i;
	      }
	      break;
	    }
	  }
	  //	  printf("%d %d %d\n",i, dis, pos);
	}

	c[pos] = 'D';
	break;
      }
    }
  
    rep(i, n) putchar(c[i]); puts("");
  }
  return 0;
}