import collections n,q = map(int,input().split()) def query(a,b,c,d): print('?',a,b,c,d,flush=True) x = int(input()) return x a = collections.deque(range(n)) b = collections.deque() c = collections.deque() for i in range(n//2): x = a.popleft() y = a.popleft() z = query(x,x,y,y) if z == 1: c.append(x) b.append(y) else: c.append(y) b.append(x) a = c + a while len(a) > 1: c = collections.deque() while a: x = a.popleft() y = a.popleft() z = query(x,x,y,y) if z == 1: c.append(x) else: c.append(y) a = c ans = [a[0],a[0]] a = b #print(a,b) while len(a) > 1: c = collections.deque() while a: x = a.popleft() y = a.popleft() z = query(x,x,y,y) if z == 0: c.append(x) else: c.append(y) a = c ans.extend([a[0],n-1]) #print(ans) ans = list(map(lambda x:x+1,ans)) print('!',*ans) #1 3 4 2