from collections import deque def find(P): N = len(P) win = [[] for _ in range(N)] que = deque(list(range(N))) while len(que) > 1: a = que.popleft() b = que.popleft() if a > b: que.append(a) que.appendleft(b) continue print("? {} {}".format(P[a], P[b])) x = int(input()) if x == P[a]: que.append(a) win[a].append(b) else: que.append(b) win[b].append(a) i = que.pop() L = [P[j] for j in win[i]] return P[i], L N = int(input()) X = list(range(1, N + 1)) T1, Y = find(X) T2, Z = find(Y) print("! {}".format(T2))