H,W=map(int,input().split())
n=H
f=[1,2]
while 1:
f+=[f[-1]+f[-2]]
if f[-1]*2+f[-2]>=n:
break
f.reverse()
L=f[0]*2+f[1]
a=[-1]*(L+1)
for i in range(L+1-n-1):
a[~i]=-(L+1)+i
l=0
r=L
for m in f:
m1=l+m
m2=r-m
if 1<=m1<=n and a[m1]==-1:
print("?",m1,1)
a[m1]=H**2+W**2-int(input())
if 1<=m2<=n and a[m2]==-1:
print("?",m2,1)
a[m2]=H**2+W**2-int(input())
if a[m1]=n:
break
f.reverse()
L=f[0]*2+f[1]
a=[-1]*(L+1)
for i in range(L+1-n-1):
a[~i]=-(L+1)+i
l=0
r=L
for m in f:
m1=l+m
m2=r-m
if 1<=m1<=n and a[m1]==-1:
print("?",1,m1)
a[m1]=H**2+W**2-int(input())
if 1<=m2<=n and a[m2]==-1:
print("?",1,m2)
a[m2]=H**2+W**2-int(input())
if a[m1]