from typing import List, Tuple, Optional from collections import deque import sys import itertools import heapq import bisect import math from collections import deque, defaultdict from functools import lru_cache, cmp_to_key input = sys.stdin.readline if __file__ != 'prog.py': sys.setrecursionlimit(10 ** 6) def readints(): return map(int, input().split()) def readlist(): return list(readints()) def readstr(): return input()[:-1] def query(l, r): print(f'? {l} {r}', flush=True) S = int(input()) return S N = int(input()) P = [] prev = 0 rest = {i for i in range(1, N + 1)} for i in range(1, N): S = query(1, i) n = S - prev P.append(n) rest.discard(n) prev = S P.append(rest.pop()) ans = f"! {' '.join([str(n) for n in P])}" print(ans, flush=True)