#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000005 #define Inf64 4000000000000000001LL vector> ans; int cc = 0; int query(int x1,int x2,int y1,int y2){ cc++; assert(cc<=8000); cout<<"? "<>res; return res; } void dfs(int x1,int x2,int y1,int y2){ if(x1!=x2){ int m = (x1+x2)/2; int res = query(x1,m,y1,y2); if(res==0)dfs(m+1,x2,y1,y1); else{ dfs(x1,m,y1,y2); res = query(m+1,x2,y1,y2); if(res)dfs(m+1,x2,y1,y2); } } else if(y1!=y2){ int m = (y1+y2)/2; int res = query(x1,x2,y1,m); if(res==0)dfs(x1,x2,m+1,y2); else{ dfs(x1,x2,y1,m); res = query(x1,x2,m+1,y2); if(res)dfs(x1,x2,m+1,y2); } } else{ ans.emplace_back(x1,y1); } } int main(){ dfs(0,1000000,0,1000000); cout<<"! "<