N,Q=map(int,input().split())

WIN=[]
LOSE=[]

for i in range(1,N,2):
    print("?",i,N,i+1,N,flush=True)
    ans=int(input())

    if ans==0:
        WIN.append(i)
        LOSE.append(i+1)
    else:
        WIN.append(i+1)
        LOSE.append(i)

while len(WIN)>1:
    x=WIN.pop()
    y=WIN.pop()

    print("?",x,N,y,N,flush=True)
    ans=int(input())
    if ans==0:
        WIN.append(x)
    else:
        WIN.append(y)

while len(LOSE)>1:
    x=LOSE.pop()
    y=LOSE.pop()

    print("?",x,N,y,N,flush=True)
    ans=int(input())
    if ans==1:
        LOSE.append(x)
    else:
        LOSE.append(y)

      
print("!",LOSE[0],LOSE[0],WIN[0],N,flush=True)