#include <iostream>
#include <thread>
#include <mutex>
#include <string>
using namespace std;
string g_write;
mutex mtx;
bool stop = false;
void thread_fun1(int num) {
while (num) {
if (mtx.try_lock()) {
int len = g_write.length();
if (len % 4 == 0) {
g_write += 'A';
num--;
}
mtx.unlock();
}
}
stop = true;
}
void thread_fun2() {
while(1) {
if (mtx.try_lock()) {
int len = g_write.length();
if (stop && len % 4 == 0) {
mtx.unlock();
return;
}
if (len % 4 == 1) {
g_write += 'B';
}
mtx.unlock();
}
}
}
void thread_fun3() {
while(1) {
if (mtx.try_lock()) {
int len = g_write.length();
if (stop && len % 4 == 0) {
mtx.unlock();
return;
}
if (len % 4 == 2) {
g_write += 'C';
}
mtx.unlock();
}
}
}
void thread_fun4() {
while(1) {
if (mtx.try_lock()) {
int len = g_write.length();
if (stop && len % 4 == 0) {
mtx.unlock();
return;
}
if (len % 4 == 3) {
g_write += 'D';
}
mtx.unlock();
}
}
}
int main () {
int in;
while (cin >> in) {
thread t1(thread_fun1, in);
thread t2(thread_fun2);
thread t3(thread_fun3);
thread t4(thread_fun4);
t1.join();
t2.join();
t3.join();
t4.join();
cout << g_write.c_str() << endl;
g_write.clear();
stop = false;
}
return 0;
}