#!/usr/bin/env python3
import sys

n = int(input())
ans = [0]*n
knownloc = [-1]*n
pairs = [set() for _ in range(n)]

def put(i, v):
    ans[i] = v
    knownloc[v] = i
    
def query(i, j):
    sys.stdout.write('? %d %d\n' % (i+1, j+1))
    sys.stdout.flush()
    (v1, v2) = map(int, input().split())
    if v1 == v2:
        put(i, v1)
        put(j, v2)
    else:
        pairs[v1].add((i, j, v1, v2))
        pairs[v2].add((i, j, v1, v2))
    return v1, v2

for i in range(0, n, 2): query(i, i+1)

for v in range(n):
    if len(pairs[v]) != 2: continue
    (i1, i2, v1, v2) = P1 = pairs[v].pop()
    (j1, j2, w1, w2) = P2 = pairs[v].pop()
    if v1 != v: (v1, v2) = (v2, v1)
    if w1 != v: (w1, w2) = (w2, w1)
    if v2 == w2:
        pairs[v] = set([P1, P2])
        continue
    pairs[v2].remove(P1)
    pairs[w2].remove(P2)

    (z1, z2) = query(i1, j1)
    if z1 == z2:
        put(i2, v1+v2-z1)
        put(j2, w1+w2-z1)
    else:
        put(i2, v if v2 in [z1, z2] else v2)
        put(j2, v if w2 in [z1, z2] else w2)

rempairs = [P for v in range(n) for P in pairs[v] if v == P[2]]

while len(rempairs) > 1:
    (i1, i2, v1, v2) = P1 = rempairs.pop()
    for a in range(len(rempairs)-1, -1, -1):
        (j1, j2, w1, w2) = P2 = rempairs[a]
        if len(set([v1,v2,w1,w2])) > 2:
            rempairs.pop(a)
            break
    else:
        rempairs.append(P1)
        break
    (z1, z2) = query(i1, j1)
    if v2 in [w1, w2]: (v1, v2) = (v2, v1)
    if w2 in [v1, v2]: (w1, w2) = (w2, w1)
    put(i2, v1 if v2 in [z1, z2] else v2)
    put(j2, w1 if w2 in [z1, z2] else w2)
    if z1 != z2:
        rempairs.append((i1, j1, z1, z2))

while len(rempairs) == 2:
    (i1, i2, v1, v2) = rempairs.pop()
    (j1, j2, w1, w2) = rempairs.pop()
    (z1, z2) = query(i1, j1)
    if z1 == z2:
        put(i2, v1+v2-z1)
        put(j2, w1+w2-z1)
    else:
        rempairs.append((i1, j1, v1, v2))
        rempairs.append((i2, j2, v1, v2))

while rempairs:
    (i1, i2, v1, v2) = P = rempairs.pop()
    j = knownloc[v1]
    (z1, z2) = query(i1, j)
    if z1 != z2:
        rempairs.append((i1, j, z1, z2))
        put(i2, v1)
    else:
        put(i2, v2)

print('! %s' % ' '.join(map(str, ans)))
