#!/usr/bin/env python3
# NOTE: WA, because this uses a fixed x to resolve (x,y) pairs.
import sys


def debug(*args):
    return
    print(*args, file=sys.stderr)


n = int(input())
k = n // 2
values = [None] * n

# Maps value to list of 2 positions
posof = [[] for _ in range(k)]
pairedwith = [None] * n


def query(i, j):
    print("?", i + 1, j + 1, flush=True)
    return [int(x) - 1 for x in input().split()]


def matchingpos(val, pos):
    return sum(posof[val]) - pos


def fix(*ps):
    debug("fix", *[x + 1 for x in ps])
    for pos in ps:
        pairedwith[pos] = pos


def make_pair(i, j):
    debug("make pair", i, j)
    pairedwith[i] = j
    pairedwith[j] = i


def set(pos, val, remove=True):
    debug("set", pos + 1, val + 1)
    if remove:
        posof[values[pos]].remove(pos)
    posof[val].append(pos)
    values[pos] = val


for i in range(0, n, 2):
    a, b = query(i, i + 1)
    set(i, a, remove=False)
    set(i + 1, b, remove=False)
    if a == b:
        fix(i, i + 1)
    else:
        make_pair(i, i + 1)


# Pos i is paired with i2.
# Same value as pos j, paired with j2.
# Query (i,j) and resolve i/i2/j/j2.
# Edge case:
i = 0
while i < n:
    if pairedwith[i] == i:
        i += 1
        continue
    j = matchingpos(values[i], i)
    i2 = pairedwith[i]
    j2 = pairedwith[j]
    # assert j2 != j
    x = values[i]
    assert values[i] == values[j]
    y = values[i2]
    z = values[j2]
    debug(i, j, i2, j2)
    debug(x, y, z)
    a, b = query(i, j)
    set(i, a)
    set(j, b)
    if y == z:
        if a == b:
            set(i2, x + y - a)
            set(j2, x + z - b)
            fix(i, j, i2, j2)
        else:
            set(i2, a)
            set(j2, b)
            make_pair(i, j)
            make_pair(i2, j2)
    else:  # y != z
        if a == b:
            fix(i, j, i2, j2)
        else:
            if j == j2:
                set(i2, z)
                fix(i2)
            else:
                set(i2, y if y not in [a, b] else x)
                set(j2, z if z not in [a, b] else x)
                fix(i2, j2)
            make_pair(i, j)

print("!", *[x + 1 for x in values])
