#include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int S,T,U = 0; //cin >> S >> T; int query = 0; auto ask = [&](char c) -> int { if(false){ if(c == 'A') return S; if(c == 'B') return T; if(c == 'C') return U; } map M; for(int i=0; i<50; i++){ assert(query < 8888); query++; cout << "? " << c << endl; int v; cin >> v; M[v]++; } int ret = 0,ap = -1; for(auto [k,v] : M) if(ap < v) ap = v,ret = k; return ret; }; auto add = [&](char A,char B,char C) -> void { if(false){ int ret = 0; if(A == 'A') ret += S,assert(S); if(A == 'B') ret += T,assert(T); if(A == 'C') ret += U,assert(U); if(B == 'A') ret += S,assert(S); if(B == 'B') ret += T,assert(T); if(B == 'C') ret += U,assert(U); if(C == 'A') S = ret; if(C == 'B') T = ret; if(C == 'C') U = ret; return; } assert(query < 8888); query++; cout << "+ " << A << " " << B << " " << C << endl; int ret; cin >> ret; if(ret == 0) return; assert(false); }; char A = 'A',B = 'B',C = 'C'; int x = ask('A'),y = ask('B'),c = 0; { while(true){ add(A,A,C); if(ask(C) == x+x) break; } swap(B,C); } bool first = true; for(int d=0; d<10; d++){ if((y>>d)&1){ if(first){ swap(A,C),swap(A,B); c += (1<