n = int(input()) cnt = 0 for i in range(n): print("?", *[1 if i == j else 0 for j in range(n)]) cnt += 1 x = int(input()) if x == 1: p0 = i break from sys import setrecursionlimit as srl srl(10**6) X = [i for i in range(n) if i != p0] def main(l, r): if l == r: return [] if l+1 == r: return [X[l]] m = (l+r) >> 1 A0 = main(l, m)[::-1] A1 = main(m, r)[::-1] B = [] while A0 and A1: rep = [0] * n rep[A0[-1]] = 1 rep[A1[-1]] = 2 cnt += 1 print("?", *rep) x = int(input()) if x == 3: B.append(A0.pop()) else: B.append(A1.pop()) while A0: B.append(A0.pop()) while A1: B.append(A1.pop()) return B Ans = [p0] + main(0, n-1) Y = [0] * n for i in range(1, n+1): Y[Ans[i-1]] = i print("!", *Y) assert cnt <= 12000