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()