#include using namespace std; #define ALL(x) begin(x),end(x) #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b ostream &operator<<(ostream &os,const vector&v){ for(int i=0;i<(int)v.size();i++) os< istream &operator>>(istream &is,vector&v){ for(T &x:v)is>>x; return is; } int Q=0; int query(int a,int b){ assert(Q<=335); Q++; cout<<"? "<>res;res--; return res; } pair> solve(vector v){ int n=(int)v.size(); vector> loser(100000); while(v.size()>1){ int m=(int)v.size(); vector nx; rep(i,m/2){ int l=v[2*i],r=v[2*i+1]; int win=query(l,r); // r wins if(l==win) swap(l,r); loser[r].push_back(l); nx.push_back(r); } if(m&1) nx.push_back(v.back()); swap(v,nx); } int winner=v[0]; return {winner,loser[winner]}; } signed main(){ int n;cin>>n; vector ord(n); iota(ALL(ord),0); auto p=solve(ord); auto pp=solve(p.second); cout<<"! "<<(pp.first+1)<