#include <bits/stdc++.h>   using namespace std;   const int N = 500, INF = 1 << 30;   int nxt[N], a[N][N], n, x, Rank[N][N], now;   char s[10];   queue<int> q;   void init() {     scanf( %d , &n);     for (int i = 1; i <= n; i++)       for (int j = 1; j <= n; j++) scanf( %d , &a[i][j]);     puts( B );     fflush(stdout);     scanf( %s , s);     if (s[0] ==  I ) {       for (int i = 1; i <= n; i++)         for (int j = 1; j <= n; j++) a[i][j] = -a[i][j];     }     scanf( %d , &x);     if (x > n)       for (int i = 1; i <= n; i++)         for (int j = 1; j <= n; j++) a[i][j] = -a[i][j];   }   bool cmp(int x, int y) { return a[now][x - n] > a[now][y - n]; }   void prework() {     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= n; j++) Rank[i][j] = j + n;       now = i;       sort(Rank[i] + 1, Rank[i] + 1 + n, cmp);       q.push(i);     }     for (int i = 1; i <= n; i++) a[0][i] = a[i][0] = INF;     for (int i = 1; i <= n; i++) nxt[i] = nxt[i + n] = Rank[i][0] = 0;     while (!q.empty()) {       int x = q.front();       q.pop();       if (x == 0) continue;       while (nxt[x] == 0) {         int girl = Rank[x][++*Rank[x]];         if (a[x][girl - n] < a[nxt[girl]][girl - n])           nxt[nxt[girl]] = 0, q.push(nxt[girl]), nxt[girl] = x, nxt[x] = girl;       }     }   }   void work() {     prework();     for (int i = 1;; i++) {       if (x == -1 || x == -2) return;       printf( %d n , nxt[x]);       fflush(stdout);       scanf( %d , &x);     }   }   int main() {     int T;     scanf( %d , &T);     while (T--) {       init();       work();     }     return 0;   }   