import sys
from typing import List

def chmax(a, b):
    if a < b:
        a = b
        return True
    return False

def chmin(a, b):
    if b < a:
        a = b
        return True
    return False

def f(K, N, fac):
    ask = []
    rem = list(range(1, N+1))
    for i in range(N-1, -1, -1):
        po = K // fac[i]
        ask.append(rem[po])
        rem.pop(po)
        K -= fac[i] * po
    print("?", *ask)
    sys.stdout.flush()
    re = int(input())
    return re

def g(K, N, fac):
    ask = []
    rem = list(range(1, N+1))
    for i in range(N-1, -1, -1):
        po = K // fac[i]
        ask.append(rem[po])
        rem.pop(po)
        K -= fac[i] * po
    print("!", *ask)
    sys.stdout.flush()

def main():
    fac = [1] * 405
    for i in range(1, 401):
        fac[i] = fac[i-1] * i

    N = int(input())
    
    left, right = 0, fac[N]
    while right - left > 1:
        mid = (left + right) // 2
        res = f(mid, N, fac)
        if res:
            left = mid
        else:
            right = mid
    
    g(left, N, fac)

if __name__ == "__main__":
    main()