import sys
q = lambda d: print("? %d" % d, flush=True) or map(int, (input().split()))
for _ in range(int(input())):
vx, ops = set(i for i in range(1, int(input()) + 1)), []
while len(vx) > 2:
v1, v2 = q(len(vx) - 2)
vx.remove(v1)
if v2 > 0:
ops += [(v1, v2)]
else:
v3, _ = q(0)
vx.remove(v3)
ops += [(v3, 0), (v1, 0)]
p1, p2 = list(vx), []
for v1, v2 in ops[::-1]:
(p2 if p1[-1] == v2 else p1).append(v1)
print("! %s" % ' '.join(map(str, p1[::-1] + p2)), flush=True)
1473A - Replacing Elements | 959A - Mahmoud and Ehab and the even-odd game |
78B - Easter Eggs | 1455B - Jumps |
1225C - p-binary | 1525D - Armchairs |
1257A - Two Rival Students | 1415A - Prison Break |
1271A - Suits | 259B - Little Elephant and Magic Square |
1389A - LCM Problem | 778A - String Game |
1382A - Common Subsequence | 1512D - Corrupted Array |
667B - Coat of Anticubism | 284B - Cows and Poker Game |
1666D - Deletive Editing | 1433D - Districts Connection |
2B - The least round way | 1324A - Yet Another Tetris Problem |
246B - Increase and Decrease | 22E - Scheme |
1566A - Median Maximization | 1278A - Shuffle Hashing |
1666F - Fancy Stack | 1354A - Alarm Clock |
1543B - Customising the Track | 1337A - Ichihime and Triangle |
1366A - Shovels and Swords | 919A - Supermarket |