vector<int> ask1(int l,int r){ cout << '?' <<" " << l << " " << r << endl; vector<int> v; forr(i,1,r-l+1){ int x; cin>>x; v.push_back(x); } return v; }
boolcheck(vector<int> x,int l, int r){ int cnt = 0; for(auto i:x){ if(i >= l && i <= r) cnt++; } if(cnt%2==0) return0; return1; } voidsolve(){ int n; cin >> n; int l = 1, r= n; int res = 0; while(l < r){ int mid = l + r >> 1; int f = 0; vector<int> b; b = ask1(l,mid); int t = check(b,l,mid); if(t){ r = mid; } else{ l = mid + 1; } } cout << '!' <<" " << l << endl; }