#include <bits/stdc++.h>
using namespace std;

#define MAX 10000
char C[MAX + 2];
int n, m;
void setLeft(char ch) {
	for (int i = 1;; i++) {
		if (C[i] == '#') {
			C[i] = ch;
			return;
		}
	}
}
void setB() {
	for (int i = n; i >= 1; i--) {
		if (C[i] == '#' && C[i - 1] != 'A' && C[i + 1] != 'A') {
			C[i] = 'B';
			return;
		}
	}
	setLeft('B');
}
bool isEmpty() {
	for (int i = 1; i <= n; i++)
		if (C[i] != '#')
			return false;
	return true;
}
void setC() {
	if (isEmpty()) {
		C[n / 2 + 1] = 'C';
		return;
	}
	for (int i = 1; i <= n; i++) {
		if (C[i] == '#')
			continue;
		if (C[i + 1] == '#') {
			C[i + 1] = 'C';
			return;
		}
		if (C[i - 1] == '#') {
			C[i - 1] = 'C';
			return;
		}
	}
}
int getDist(int p) {
	int l = 0, r = 0;
	while (C[p + l - 1] == '#')
		l--;
	if (C[p + l - 1] == 'X')
		l = -1000000;
	while (C[p + r + 1] == '#')
		r++;
	if (C[p + r + 1] == 'X')
		r = 1000000;
	return min((-1) * l, r);
}
void setD() {
	if (isEmpty()) {
		C[1] = 'D';
		return;
	}
	int d, mi, md = -1;
	for (int i = 1; i <= n; i++) {
		if (C[i] != '#')
			continue;
		d = getDist(i);
		if (d > md) {
			md = d;
			mi = i;
		}
	}
	C[mi] = 'D';
}
main() {
	char ch;
	while( cin >> n >> m && n && m ) {
		for(int i = 0;i<=n+1;i++) C[i] = '#';
		C[0] = C[n+1] = 'X';
		for(int i = 1;i<=m;i++) {
			cin >> ch;
			if ( ch == 'A' ) setLeft('A');
			else if ( ch == 'B' ) setB();
			else if ( ch == 'C' ) setC();
			else if ( ch == 'D' ) setD();
		}
		for(int i = 1;i<=n;i++) cout << C[i];
		cout << endl;
	}
}