import sys def perm(N, ord, fac): L = [None for i in range(N)] for i in range(N): L[i] = ord // fac[N - i - 1] ord %= fac[N - i - 1] ans = [None for i in range(N)] used = [1 for i in range(N)] for i in range(N): temp = 0 for j in range(N): temp += used[j] if temp == L[i] + 1: ans[i] = j + 1 used[j] = 0 break return ans N = int(input()) fac = [1 for i in range(N)] for i in range(1, N): fac[i] = fac[i - 1] * i m = [0, fac[N - 1] * N] while m[1] - m[0] > 1: mid = (m[0] + m[1]) // 2 perm_mid = perm(N, mid, fac) print('?', *perm_mid) sys.stdout.flush() m[1 - int(input())] = mid print('!', *perm(N, m[0], fac))