#include int main(){ int H,W; scanf("%d %d",&H,&W); printf("? %d %d\n",1,1); fflush(stdout); int d1; scanf("%d",&d1); if(d1==-1)return 1; printf("? %d %d\n",H,W); fflush(stdout); int d2; scanf("%d",&d2); if(d2==-1)while(1); int D[2][2]={{-1,-1},{-1,-1}}; int size=0; for(int i=1;i<=H;i++){ for(int j=1;j<=W;j++){ int dist1=(i-1)*(i-1)+(j-1)*(j-1); int dist2=(i-H)*(i-H)+(j-W)*(j-W); if(dist1==d1 && dist2==d2){ if(size>=2)return 1; D[size][0]=i; D[size][1]=j; size++; } } } printf("? %d %d\n",D[0][0],D[0][1]); fflush(stdout); int d3; scanf("%d",&d3); if(d3==-1)return 0; if(d3==0)printf("! %d %d\n",D[0][0],D[0][1]),fflush(stdout); else{ if(size==1)return 1; printf("! %d %d\n",D[1][0],D[1][1]),fflush(stdout); } return 0; }