#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000005 #define Inf64 1000000000000000001LL int query(char c){ map mp; rep(i,1){ cout<<"? "<>res; // assert(res!=-1); mp[res]++; } int ma = 0; for(auto a:mp){ ma = max(ma,a.second); } for(auto a:mp){ if(ma==a.second)return a.first; } } int add(char a,char b,char c){ cout<<"+ "<>z; //assert(z!=-1); return z; } int main(){ int x = query('A'); int y = query('B'); int curx = x; while(true){ add('A','A','B'); if(query('B')==curx*2)break; } curx *= 2; char cx,ans,trash; int cans = 0; if(y%2==1){ ans = 'A'; trash = 'C'; cx = 'B'; cans = x; } else{ ans = 'C'; cx = 'B'; trash = 'A'; } y /= 2; while(y!=0){ cout<