#include using namespace std; int main(int argc, char* argv[]){ ifstream input(argv[1]); int T; input >> T; for(int t = 0; t < T; t++){ int N; input >> N; vectorP(N + 1); for(int i = 1; i <= N; i++){ input >> P[i]; } int query_num = 0; cout << N << endl; while(true){ char type; assert(cin >> type); assert(type == '?' || type == '!'); if(type == '?'){ query_num++; assert(query_num <= 10); vectorA(N); for(int i = 1; i <= N - 1; i++){ assert(cin >> A[i]); assert(A[i] == 0 || A[i] == 1); } vectorB(N + 1); B[1] = P[1]; for(int i = 1; i <= N - 1; i++){ if(A[i] == 0){ B[i + 1] = min(B[i], P[i + 1]); } else{ B[i + 1] = max(B[i], P[i + 1]); } } for(int i = 1; i <= N; i++){ cout << B[i]; if(i < N){ cout << " "; } else{ cout << endl; } } } if(type == '!'){ vectorQ(N + 1); for(int i = 1; i <= N; i++){ assert(cin >> Q[i]); assert(P[i] == Q[i]); } break; } } } return 0; }