#include #include using namespace std; int win[301]; int main(){ int N; cin >> N; int s; while(true){ vector v, u; for(int i = 1; i <= N; i++){ if(win[i] == 0) v.push_back(i); } for(int i = 0; i+1 < v.size(); i+= 2){ cout << "? " << v[i] << ' ' << v[i+1] << endl; int n; cin >> n; if(v[i] == n) win[v[i+1]] = v[i]; else win[v[i]] = v[i+1]; } int cnt = 0; for(int i = 1; i <= N; i++){ if(win[i] == 0) { cnt++; s = i; } } if(cnt == 1) break; } vector v; win[s] = -1; for(int i = 1; i <= N; i++){ if(win[i] == s) win[i] = 0; } while(true){ vector v, u; for(int i = 1; i <= N; i++){ if(win[i] == 0) v.push_back(i); } for(int i = 0; i+1 < v.size(); i+= 2){ cout << "? " << v[i] << ' ' << v[i+1] << endl; int n; cin >> n; if(v[i] == n) win[v[i+1]] = v[i]; else win[v[i]] = v[i+1]; } int cnt = 0; for(int i = 1; i <= N; i++){ if(win[i] == 0) { cnt++; s = i; } } if(cnt == 1) break; } cout << "! " << s << endl; }