#include<iostream>
#include<cmath>
#include<cstring>
#define INF 100000
using namespace std;
int n;
char seki[101],c;
void SetA(short);
void SetB();
void SetC(bool);
void SetD(bool);
int main(){
  int m;
  while(cin >> n >> m && n||m){
    memset(seki,'#',sizeof(seki));
    for(int i=0;i<m;i++){
      cin >> c;
      if(c=='A') SetA(1);
      else if(c=='B') SetB();
      else if(c=='C') SetC((i==0 ? false : true));
      else SetD((i==0 ? false : true));
    }
    for(int i=0;i<n;i++) cout << seki[i];
    cout << endl;
  }
}
void SetA(short ab){  // とりあえず左の席
  for(int i=0;i<n;i++){
    if(seki[i]=='#'){
      seki[i] = (ab==1 ? 'A' : (ab==2 ? 'B' : 'D'));
      return;
    }
  }
}
void SetB(){  // 隣にAがいなければHappy
  for(int i=n-1;i>=0;i--){
    if(seki[i-1]!='A' && seki[i]=='#' && seki[i+1]!='A'){
      seki[i] = 'B';
      return;
    }
  }
  SetA(2);
}
void SetC(bool k){ // 人が好き
  if(!k){
    seki[(n%2==1 ? (n+1)/2 : (n/2+1)) -1] = 'C';
    return;
  }
  for(int i=0;i<n;i++){
    if(seki[i] != '#'){
      if(seki[i+1] == '#'){
	seki[i+1] = 'C';
	return;
      }
      if(seki[i-1] == '#'){
	seki[i-1] = 'C';
	return;
      }
    }
  }
}
void SetD(bool k){ // 人が嫌い
  if(!k){
    seki[0] = 'D';
    return;
  }
  int MAX=0,j,m,MAXi;
  for(int i=0;i<n;i++){
    if(seki[i]=='#'){
      for(j=i-1;j>=0;j--) if(seki[j]!='#') break;
      for(m=i+1;m<n;m++) if(seki[m]!='#') break;
      if(j==-1) j = INF;
      if(m==n) m = INF;
      if(j==INF){
	if(k-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 seki[MAXi] = 'D';
}