#include<bits/stdc++.h>
using namespace std;
typedef long long int lld;
#define INF 100000

int n,m;
string str;

void SetA(int num){
  for(int i=0;i<n;i++){
    if(str[i] == '#'){
      if(num == 1) str[i] = 'A';
      else if(num == 2) str[i] = 'B';
      else str[i] = 'D';
      return;
    }
  }
}

void SetB(){
  for(int i=n-1;i>=0;i--){
    if(str[i] == '#' && str[i-1] != 'A' && str[i+1] != 'A'){
      str[i] = 'B';
      return;
    }
  }
  SetA(2);
}

void SetC(int c){
  if(c == 0) {
    str[(n%2==1 ? (n+1)/2 : (n/2+1)) -1] = 'C';
    return;
  }
  for(int i=0;i<n;i++){
    if(str[i] != '#'){
      if(str[i+1] == '#') {
	str[i+1] = 'C';
	return;
      }
      if(str[i-1] == '#') {
	str[i-1] = 'C';
	return;
      }
    }
  } 
}

void SetD(int c){
  if(c == 0){
    str[0] = 'D';
    return;
  }
  int MAX=0,j,m,MAXi;
  for(int i=0;i<n;i++){
    if(str[i]=='#'){
      for(j=i-1;j>=0;j--) if(str[j]!='#') break;
      for(m=i+1;m<n;m++) if(str[m]!='#') break;
      if(j==-1) j = INF;
      if(m==n) m = INF;
      if(j==INF){
	if(c-i > MAX) MAX = m-i,MAXi=i,MAXi=i;
      } else if(m==INF){
	if(i-j > MAX) MAX = i-j,MAXi=i;
      } else{
	if(min(m-i,i-j) > MAX) MAX=min(m-i,i-j),MAXi=i;
      }
    }
  }
  if(MAX == 0) SetA(3);
  else str[MAXi] = 'D';
}
  
int main(){
  while(cin >> n >> m , n || m){
    str = "";
    for(int i=0;i<n;i++) str += '#';
    for(int c=0;c<m;c++){
      char h; cin >> h;
      if(h == 'A') SetA(1);
      else if(h == 'B') SetB();
      else if(h == 'C') SetC((c==0 ? 0 : 1));
      else SetD((c==0 ? 0 : 1));
    }
    cout << str << endl;
  }
}