#include <bits/stdc++.h>
using namespace std;
#define int long long
#define yes cout << "YES\n";
#define no cout << "NO\n";
void FastIO(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
void solve(){
int n; cin >> n;
vector<vector<int>> a(n);
int maxlen = 0;
for (int i = 0; i < n; ++i){
int k; cin >> k;
a[i].resize(k);
for (int j = 0; j < k; ++j){
cin >> a[i][j];
}
maxlen = max(maxlen, k);
}
vector<char> used(n, 0);
vector<int> order;
int covered = 0;
auto suffix_less = [&](int i, int j, int c)->bool{
int li = (int)a[i].size();
int lj = (int)a[j].size();
int upto = min(li, lj);
for (int p = c; p < upto; ++p){
if (a[i][p] < a[j][p]) return true;
if (a[i][p] > a[j][p]) return false;
}
if (li != lj) return li < lj;
return i < j;
};
while (covered < maxlen){
int best = -1;
for (int i = 0; i < n; ++i){
if (used[i]) continue;
if ((int)a[i].size() <= covered) continue;
if (best == -1) best = i;
else if (suffix_less(i, best, covered)) best = i;
}
if (best == -1) break;
used[best] = 1;
order.push_back(best);
covered = max(covered, (int)a[best].size());
}
for (int i = 0; i < n; ++i) if (!used[i]) order.push_back(i);
vector<int> bottom;
bottom.reserve(maxlen);
for (int j = 0; j < maxlen; ++j){
int val = 0;
bool found = false;
for (int idx : order){
if ((int)a[idx].size() > j){
val = a[idx][j];
found = true;
break;
}
}
if (found) bottom.push_back(val);
else bottom.push_back(0);
}
for (int i = 0; i < (int)bottom.size(); ++i){
if (i) cout << ' ';
cout << bottom[i];
}
cout << '\n';
}
signed main(){
FastIO();
int t;
cin >> t;
while (t--){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSB5ZXMgY291dCA8PCAiWUVTXG4iOwojZGVmaW5lIG5vIGNvdXQgPDwgIk5PXG4iOwoKCnZvaWQgRmFzdElPKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBjb3V0LnRpZShudWxscHRyKTsKfQoKdm9pZCBzb2x2ZSgpewogICAgaW50IG47IGNpbiA+PiBuOwogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBhKG4pOwogICAgaW50IG1heGxlbiA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSl7CiAgICAgICAgaW50IGs7IGNpbiA+PiBrOwogICAgICAgIGFbaV0ucmVzaXplKGspOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgazsgKytqKXsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICAgICAgfQogICAgICAgIG1heGxlbiA9IG1heChtYXhsZW4sIGspOwogICAgfQoKICAgIHZlY3RvcjxjaGFyPiB1c2VkKG4sIDApOwogICAgdmVjdG9yPGludD4gb3JkZXI7CiAgICBpbnQgY292ZXJlZCA9IDA7CgogICAgYXV0byBzdWZmaXhfbGVzcyA9IFsmXShpbnQgaSwgaW50IGosIGludCBjKS0+Ym9vbHsKICAgICAgICBpbnQgbGkgPSAoaW50KWFbaV0uc2l6ZSgpOwogICAgICAgIGludCBsaiA9IChpbnQpYVtqXS5zaXplKCk7CiAgICAgICAgaW50IHVwdG8gPSBtaW4obGksIGxqKTsKICAgICAgICBmb3IgKGludCBwID0gYzsgcCA8IHVwdG87ICsrcCl7CiAgICAgICAgICAgIGlmIChhW2ldW3BdIDwgYVtqXVtwXSkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGlmIChhW2ldW3BdID4gYVtqXVtwXSkgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAobGkgIT0gbGopIHJldHVybiBsaSA8IGxqOwogICAgICAgIHJldHVybiBpIDwgajsKICAgIH07CgogICAgd2hpbGUgKGNvdmVyZWQgPCBtYXhsZW4pewogICAgICAgIGludCBiZXN0ID0gLTE7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpewogICAgICAgICAgICBpZiAodXNlZFtpXSkgY29udGludWU7CiAgICAgICAgICAgIGlmICgoaW50KWFbaV0uc2l6ZSgpIDw9IGNvdmVyZWQpIGNvbnRpbnVlOwogICAgICAgICAgICBpZiAoYmVzdCA9PSAtMSkgYmVzdCA9IGk7CiAgICAgICAgICAgIGVsc2UgaWYgKHN1ZmZpeF9sZXNzKGksIGJlc3QsIGNvdmVyZWQpKSBiZXN0ID0gaTsKICAgICAgICB9CiAgICAgICAgaWYgKGJlc3QgPT0gLTEpIGJyZWFrOwogICAgICAgIHVzZWRbYmVzdF0gPSAxOwogICAgICAgIG9yZGVyLnB1c2hfYmFjayhiZXN0KTsKICAgICAgICBjb3ZlcmVkID0gbWF4KGNvdmVyZWQsIChpbnQpYVtiZXN0XS5zaXplKCkpOwogICAgfQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIGlmICghdXNlZFtpXSkgb3JkZXIucHVzaF9iYWNrKGkpOwoKICAgIHZlY3RvcjxpbnQ+IGJvdHRvbTsKICAgIGJvdHRvbS5yZXNlcnZlKG1heGxlbik7CiAgICBmb3IgKGludCBqID0gMDsgaiA8IG1heGxlbjsgKytqKXsKICAgICAgICBpbnQgdmFsID0gMDsKICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgZm9yIChpbnQgaWR4IDogb3JkZXIpewogICAgICAgICAgICBpZiAoKGludClhW2lkeF0uc2l6ZSgpID4gail7CiAgICAgICAgICAgICAgICB2YWwgPSBhW2lkeF1bal07CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoZm91bmQpIGJvdHRvbS5wdXNoX2JhY2sodmFsKTsKICAgICAgICBlbHNlIGJvdHRvbS5wdXNoX2JhY2soMCk7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KWJvdHRvbS5zaXplKCk7ICsraSl7CiAgICAgICAgaWYgKGkpIGNvdXQgPDwgJyAnOwogICAgICAgIGNvdXQgPDwgYm90dG9tW2ldOwogICAgfQogICAgY291dCA8PCAnXG4nOwp9CgpzaWduZWQgbWFpbigpewogICAgRmFzdElPKCk7CgogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKCiAgICB3aGlsZSAodC0tKXsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K