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 = small[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 = large[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}')