import sys

def send( prefix:str, x:int, y:int ) -> None:
    print( f'{prefix} {x} {y}', flush=True )
    
def ask( x:int, y:int ) -> bool:
    send( '?', x, y )
    response = input().strip()
    return response=='1'   
 
def solved( x:int, y:int ) -> None:
    send( '!', x, y )  
    sys.exit(0)    

def look( x:int, y:int ) -> None:
    if ask( x, y-1 ):
        if ask( x-1, y-1 ):
            solved( x-1, y-1 )
        else: 
            solved( x, y-1 )
    else:
        if ask( x-1, y ):
            solved( x-1, y )
        else: 
            solved( x, y )

if ask(2,2):
    look(2,2)
elif ask(2,4):
    look(2,4)
elif ask(4,2):
    look(4,2)
else:
    look(4,4)