#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<utility>
#include<cmath>
#include<cstring>
#include<queue>
#include<cstdio>
#include<sstream>
#define loop(i,a,b) for(int i=a;i<b;i++) 
#define rep(i,a) loop(i,0,a)
#define pb push_back
#define mp make_pair
#define all(in) in.begin(),in.end()
const double PI=acos(-1);
const double EPS=1e-10;
const int inf=1e8;
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;
int main(){
	int n,m;
	while(cin>>n>>m,n){
		vector<string>in(n,"");
		rep(q,m){
			string s;cin>>s;
			if(s=="A"){
				rep(i,n)if(in[i]==""){
					in[i]="A";
					break;
				}
			}else if(s=="B"){
				vector<string>tmp=in;
				rep(i,n)if(in[i]=="A"){
					if(i)tmp[i-1]="!";
					if(i!=n-1)tmp[i+1]="!";
				}
				int I=inf;
				for(int i=n-1;i>=0;i--)if(tmp[i]==""){I=i;break;}
				if(I==inf){
					rep(i,n)if(in[i]==""){
						I=i;
						break;
					}
				}
				in[I]="B";
			}else if(s=="C"){
				int I=inf;
				rep(i,n)if(in[i]==""){
					if((i&&in[i-1]!="")||(i!=n-1&&in[i+1]!="")){
						I=i;
						break;
					}
				}
				if(I==inf)I=n/2;
				in[I]="C";
			}else{
				if(!q){
					in[0]="D";
					continue;
				}
				vi t;
				rep(i,n)if(in[i]!="")t.pb(i);
				int mi=inf,mii=0;
				if(t[0]!=0){mi=t[0];mii=0;}
				rep(i,t.size()-1)if(t[i+1]-t[i]>1){
					if(mi>(t[i+1]-t[i])/2){
						mi=(t[i+1]-t[i])/2;
						mii=t[i]+(t[i+1]-t[i])/2;
					}
				}
				if(t[t.size()-1]!=n-1&&mi>n-t[t.size()-1]-1){
					mii=n-1;
				}
				in[mii]="D";
			}
		}
		rep(i,n)cout<<(in[i]==""?"#":in[i]);
		cout<<endl;
	}
}