#include using namespace std; vectorask(vectorA){ cout << "?"; for(int i = 0; i < A.size(); i++){ cout << " " << A[i]; } cout << endl; vectorB(A.size() + 1); for(int i = 0; i < A.size() + 1; i++){ cin >> B[i]; } return B; } int main(){ int T; cin >> T; while(T--){ int N; cin >> N; vectorquery1, query2; for(int i = 0; i < N - 1; i++){ query1.push_back(i % 2); query2.push_back((i + 1) % 2); } auto ret1 = ask(query1); auto ret2 = ask(query2); vectorP(N); P[0] = ret1[0]; for(int i = 0; i < N - 1; i++){ if(ret1[i] != ret1[i + 1]){ P[i + 1] = ret1[i + 1]; } if(ret2[i] != ret2[i + 1]){ P[i + 1] = ret2[i + 1]; } } cout << "!"; for(int i = 0; i < N; i++){ cout << " " << P[i]; } cout << endl; } return 0; }