// Tazoe

#include <iostream>
using namespace std;

int main()
{
	while(true){
		int n, m;
		cin >> n >> m;

		if(n==0&&m==0)
			break;

		char C[10000];
		for(int i=0; i<n; i++){
			C[i] = '#';
		}

		for(int i=0; i<m; i++){
			char a;
			cin >> a;

			if(a=='A'){
				for(int j=0; j<n; j++){
					if(C[j]=='#'){
						C[j] = a;
						break;
					}
				}
			}
			else if(a=='B'){
				bool flg = false;
				for(int j=n-1; j>=0; j--){
					if(C[j]=='#'&&(j==0||C[j-1]!='A')&&(j==n-1||C[j+1]!='A')){
						C[j] = a;
						flg = true;
						break;
					}
				}

				if(!flg){
					for(int j=0; j<n; j++){
						if(C[j]=='#'){
							C[j] = a;
							break;
						}
					}
				}
			}
			else if(a=='C'){
				if(i==0){
					C[n/2] = a;
				}
				else{
					for(int j=0; j<n; j++){
						if(C[j]!='#'&&j!=n-1&&C[j+1]=='#'){
							C[j+1] = a;
							break;
						}
						else if(C[j]!='#'&&j!=0&&C[j-1]=='#'){
							C[j-1] = a;
							break;
						}
					}
				}
			}
			else if(a=='D'){
				if(i==0){
					C[0] = a;
				}
				else{
					int D[10000];
					int d = 10000;
					for(int j=0; j<n; j++){
						if(C[j]!='#'){
							d = 0;
							D[j] = d;
						}
						else{
							d++;
							D[j] = d;
						}
					}

					d = 10000;
					for(int j=n-1; j>=0; j--){
						if(C[j]!='#'){
							d = 0;
						}
						else{
							d++;
							if(D[j]>d){
								D[j] = d;
							}
						}
					}

					int d_max = -1;
					int j_max = -1;
					for(int j=0; j<n; j++){
						if(D[j]>d_max){
							d_max = D[j];
							j_max = j;
						}
					}

					C[j_max] = a;
				}
			}
		}

		for(int i=0; i<n; i++){
			cout << C[i];
		}
		cout << '\n';
	}

	return 0;
}