#include <iostream>
#include <vector>
using namespace std;

const int INF = 1e+8;

// s[k] から座っている人までの距離
int dist(vector<char>& s, int k){
	int a=0, b=0;
	for(int i=k ; i >= 0 ; i-- , a++ ){
		if( i == 0 && s[i] == '#' ){
			a = INF;
			break;
		}
		if( s[i] != '#' ) break;
	}
	for(int i=k ; i < s.size() ; i++ , b++ ){
		if( i+1 == s.size() && s[i] == '#' ){
			b = INF;
			break;
		}
		if( s[i] != '#' ) break;
	}
	return min(a-1,b-1);
}

void f(vector<char>& s , char a ){
	if( a == 'A' ){
		// 一番最初に見つかった空席に座る
		for(int i=0 ; i < s.size() ; i++ ){
			if( s[i] == '#' ){
				s[i] = 'A';
				return ;
			}
		}
	}else if( a == 'B' ){
		// 隣が'A'でない空席に座る
		for(int i=s.size()-1 ; i >= 0  ; i-- ){
			if( s[i] != '#' ) continue;
			
			if( i == 0 ){
				if( i+1 == s.size() || s[i+1] != 'A' ){
					s[i] = 'B';
					return;
				}
			}else if( i == s.size()-1 ){
				if( i-1 < 0 || s[i-1] != 'A' ){
					s[i] = 'B';
					return;
				}
			}else{
				if( s[i-1] != 'A' && s[i+1] != 'A' ){
					s[i] = 'B';
					return;
				}
			}
		}
		// 座れる場所がなかった場合一番最初の空席に座る
		for(int i=0 ; i < s.size() ; i++ ){
			if( s[i] == '#' ){
				s[i] = 'B';
				return;
			}
		}
	}else if( a == 'C' ){
		// 左に人がいる空席に座る.
		for(int i=1 ; i < s.size() ; i++ ){
			if( s[i-1] != '#' && s[i] == '#' ){
				s[i] = 'C';
				return;
			}
		}
		// 全部空席のときは真ん中に座る.
		s[s.size()/2] = 'C';
		return;
	}else if( a == 'D' ){
		// 空席の数をチェック.
		int cnt = 0;
		for(int i=0 ; i < s.size() ; i++ ){
			if( s[i] == '#' ) cnt++;
		}
		if( cnt == s.size() ){ // 全部空席のとき
			s[0] = 'D';
			return;
		}
		
		// 一番距離の遠い席を探す.
		int m = dist(s,0);
		for(int i=1 ; i < s.size() ; i++ ){
			m = max( m , dist(s,i) );
		}
		for(int i=0 ; i < s.size() ; i++ ){
			if( m == dist(s,i) ){
				s[i] = 'D';
				return;
			}
		}
	}
}

int main(){
	int n, m;
	while( cin >> n >> m , n || m ){
		vector<char> s(n,'#');
		for(int i=0 ; i < m ; i++ ){
			char a;
			cin >> a;
			f( s , a );
		}
		for(int i=0 ; i < s.size() ; i++ ){
			cout << s[i];
		}
		cout << endl;
	}
}