#include <bits/stdc++.h>
#include "combo.h"
using namespace std;
const int NR = 3;
char vp[] = {'A', 'B', 'X', 'Y'};
string v;
string v2;
string guess_sequence(int n) {
//la inceput gasesc prima litera din 2 queryuri
//pun ab si dupa pun a sau x in functie de rezultat
//dupa la fiecare pas raman cu 3 litere care pot fi acolo deci fac un string format din prefixul de lungime p
//astfel incat in functie de urmatoarea litera sa am raspunsurile p, p + 1 sau p + 2 si sa stiu care este
//caz particular cand mai e doar o litera si o ghicesc din 2
//deci fac 2 + 2 + n - 2 = n + 2 query uri
int x, p, i;
x = press("AB");
if (x == 0) {
x = press("X");
if (x == 0) {
v = "Y";
p = 3;
} else {
v = "X";
p = 2;
}
} else {
x = press("A");
if (x == 0) {
v = "B";
p = 1;
} else {
v = "A";
p = 0;
}
}
for (i = 0; i < 4; i++) {
if (i > p) {
vp[i - 1] = vp[i];
}
}
//am ramas cu restul in afara de cel care este pe prima pozitie ca stiu ca nu va mai aparea in restul sirului
for (i = 2; i < n; i++) {
v2.clear();
//deci da i - 1 daca este vp[0] sau i daca este vp[1] sau i + 1 daca este vp[2]
v2 = v + vp[1] + v + vp[2] + vp[0] + v + vp[2] + vp[1] + v + vp[2] + vp[2];
x = press(v2);
if (x == i - 1) {
v += vp[0];
} else if (x == i) {
v += vp[1];
} else {
v += vp[2];
}
}
x = press(v + vp[0]);
if (x == n) {
v += vp[0];
} else {
x = press(v + vp[1]);
if (x == n) {
v += vp[1];
} else {
v += vp[2];
}
}
return v;
}