#include using namespace std; int main(){ string s; cin >> s; int Q; cin >> Q; int N,M; cin >> N >> M; if(s.at(0) == 'B') swap(N,M); vector> X(N); int idx = 0; for(auto &[x,p] : X) cin >> x,p = idx++; sort(X.begin(),X.end()); auto share = [&](int pos) -> int { assert(Q > 0),Q--; assert(pos < N); cout << "share " << pos+1 << endl; int ret; cin >> ret; if(ret == -1) exit(0); return ret; }; bool check = false; auto answer = [&](int x) -> void { if(check && x != 123456789) assert(false); cout << "answer " << x << endl; exit(0); }; int l1 = 0,l2 = 0,left = (N+M+1)/2; while(left > 3 && l1 < N && l2 < M){ int k1 = min(left/2,N-l1),k2 = min(left/2,M-l2); k1--,k2--; int v1 = X.at(l1+k1).first,v2 = share(X.at(l1+k1).second); if(v1 < v2 || (v1 == v2 && s.at(0) == 'A')) l1 += k1,left -= k1; else l2 += k2,left -= k2; } if(l1 == N) answer(share(0)); if(l2 == M) answer(share(l2+left-1)); while(left){ int v1 = X.at(l1).first,v2 = share(X.at(l1).second); left--; if(left == 0) answer(min(v1,v2)); if(v1 < v2 || (v1 == v2 && s.at(0) == 'A')) l1++; else l2++; } }