import sys def query(x,y): print("?",x,y) sys.stdout.flush() return int(input()) from collections import deque N = int(input()) deq = deque([i for i in range(1,N+1)]) win = [[] for i in range(N+1)] while len(deq)>1: ndeq = deque([]) while deq: x = deq.popleft() if not deq: ndeq.append(x) break y = deq.popleft() z = query(x,y) if z==x: win[x].append(y) else: win[y].append(x) ndeq.append(z) deq = ndeq one = deq[0] L = win[one] res = L[0] for i in range(1,len(L)): res = query(res,L[i]) print("!",res)