N, Q = map(int, input().split())
small = []
large = []
for i in range(N//2):
    l1 = 2*i+1
    l2 = 2*i+2
    r = N
    print(f'? {l1} {r} {l2} {r}')
    x = int(input())
    if x == 1:
        small.append(l1-1)
        large.append(l2-1)
    else:
        small.append(l2-1)
        large.append(l1-1)
imin = small[0]
for item in small[1:]:
    l1 = imin
    l2 = item
    print(f'? {l1+1} {l1+1} {l2+1} {l2+1}')
    x = int(input())
    if x == 0:
        imin = item

imax = large[0]
for item in large[1:]:
    l1 = imax
    l2 = item
    print(f'? {l1+1} {N} {l2+1} {N}')
    x = int(input())
    if x == 1:
        imax = item
print(f'! {imin+1} {imin+1} {imax+1} {N}')