#include "combo.h"
#include <algorithm>
#include <vector>
#include <cassert>
using namespace std;
#define all(v) (v).begin(), (v).end()
template <typename T>
bool minimize(T& target, T candidate) {
return target > candidate ? (target = candidate, true) : false;
}
template <typename T>
bool maximize(T& target, T candidate) {
return target < candidate ? (target = candidate, true) : false;
}
vector<char> chr = {'A', 'B', 'X', 'Y'};
string guess_sequence(int N) {
string S;
if (press("AB") == 0) {
if (press("X"))
S.push_back('X');
else
S.push_back('Y');
} else {
if (press("A"))
S.push_back('A');
else
S.push_back('B');
}
chr.erase(remove(all(chr), S[0]), chr.end());
while (S.size() < N) {
S.push_back(chr[0]);
S.push_back(chr[1]);
int coin = press(S);
if (coin == S.size() - 2) {
S.pop_back();
S.pop_back();
S.push_back(chr[2]);
} else if (coin == S.size() - 1)
S.pop_back();
}
if (press(S) != S.size())
S.pop_back();
return S;
}