有时候和答案差1
#include<bits/stdc++.h>
using namespace std;
int T;
void work(){
int l=2,r=999,ans;
int s;
while(l<r){
int lmid=(2*l+r)/3,rmid=(2*r+l+2)/3;
printf("? %d %d\n",lmid,rmid);
fflush(stdout);
scanf("%d",&s);
if(s==lmid*rmid){
l=rmid-1;
}
else if(s==lmid*(1+rmid)){
l=lmid+1;
r=rmid-1;
ans=rmid;
}
else{
r=lmid+1;
ans=lmid;
}
}
printf("! %d\n",ans);
fflush(stdout);
}
int main(){
scanf("%d",&T);
while(T--){
work();
}
return 0;
}