#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
template <class T>
using orderStaticTree =
tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define ll long long
#define saleh \
ios_base::sync_with_stdio(false); \
cin.tie(nullptr);
const int md = 1e9 + 7;
int main()
{
saleh;
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
vector<int> ans(2 * n + 2);
map<int, int> seen;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
int x;
cin >> x;
ans[i + j] = x;
seen[x] = 1;
}
}
for (int i = 1; i <= 2 * n; i++)
{
if (seen.find(i) == seen.end())
{
ans[1] = i;
break;
}
}
for (int i = 1; i <= 2 * n; i++)
cout << ans[i] << " ";
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp0ZW1wbGF0ZSA8Y2xhc3MgVD4KdXNpbmcgb3JkZXJTdGF0aWNUcmVlID0KICAgIHRyZWU8VCwgbnVsbF90eXBlLCBsZXNzPFQ+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCgojZGVmaW5lIHNhbGVoICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBcCiAgICBjaW4udGllKG51bGxwdHIpOwoKY29uc3QgaW50IG1kID0gMWU5ICsgNzsKCmludCBtYWluKCkKewogICAgc2FsZWg7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkKICAgIHsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICB2ZWN0b3I8aW50PiBhbnMoMiAqIG4gKyAyKTsKICAgICAgICBtYXA8aW50LCBpbnQ+IHNlZW47CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgaisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbnQgeDsKICAgICAgICAgICAgICAgIGNpbiA+PiB4OwogICAgICAgICAgICAgICAgYW5zW2kgKyBqXSA9IHg7CiAgICAgICAgICAgICAgICBzZWVuW3hdID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMiAqIG47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmIChzZWVuLmZpbmQoaSkgPT0gc2Vlbi5lbmQoKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYW5zWzFdID0gaTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDIgKiBuOyBpKyspCiAgICAgICAgICAgIGNvdXQgPDwgYW5zW2ldIDw8ICIgIjsKICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=