#include using namespace std; using ll = long long; int main(){ int64_t seed = chrono::duration_cast(chrono::system_clock::now().time_since_epoch()).count(); mt19937_64 rnd(seed); int n; cin>>n; uniform_int_distribution mm(1,n); deque que; int l = 1; int r = 2; cout<<"? 1 2"; int t; cin>>t; if(t==1); else swap(l,r); que.push_back(l); que.push_back(r); int ni = 3; vector vis(n+1,0); vis[1] = 1; vis[2] = 1; for(;ni<=n;ni++){ int t1,t2; cout<<"? "<>t1; cout<<"? "<>t2; if(t2==1){ que.push_back(ni); continue; } if(t1==0){ que.push_front(ni); continue; } int l = 0; int r = que.size() - 1; while(r-l>1){ int mid = (r+l)/2; cout<<"? "<>op; if(op==1) l = mid; else r = mid; } deque nxt; for(int i = 0;i<=l;i++) nxt.push_back(que[i]); nxt.push_back(ni); for(int i = r;i