#include<bits/stdc++.h>
#define INF 1000010000
#define nl '\n'
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define fi first
#define se second
#define pii pair<int,int>
#define pdd pair<double,double>
#define all(c) (c).begin(), (c).end()
#define SORT(c) sort(all(c))
#define sz(c) (c).size()
#define rep(i,n) for( int i = 0; i < n; ++i )
#define repi(i,n) for( int i = 1 ; i <= n; ++i )
#define repn(i,n) for( int i = n - 1 ; i >= 0 ; --i )
#define repf(j,i,n) for( int j = i ; j < n ; ++j )
#define die(s) {std::cout << s << nl;}
#define dier(s) {std::cout << s; return 0;}
#define vi vector<int>
typedef long long ll;
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.precision(0);
int T;
cin >> T;
while(T--){
vi a(13);
repi(i , 13)a[i] = i;
int n;
cin >> n;
rep(i , n){
int t;
cin >> t;
vi p(t);
rep(j , t){
cin >> p[j];
}
int tmp = a[p[0]];
rep(j , t - 1){
a[p[j]] = a[p[j + 1]];
}
a[p[sz(p) - 1]] = tmp;
}
repi(i , 10){
cout << a[i] << " ";
}
cout << nl;
}
return 0;
}
/*
2
4
4 1 2 3 4
5 1 5 7 9 2
4 1 9 3 2
3 3 4 8
2
2 1 3
6 2 5 7 9 4 8
*/
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgSU5GIDEwMDAwMTAwMDAKI2RlZmluZSBubCAnXG4nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcHBiIHBvcF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHBkZCBwYWlyPGRvdWJsZSxkb3VibGU+CiNkZWZpbmUgYWxsKGMpIChjKS5iZWdpbigpLCAoYykuZW5kKCkKI2RlZmluZSBTT1JUKGMpIHNvcnQoYWxsKGMpKQojZGVmaW5lIHN6KGMpIChjKS5zaXplKCkKI2RlZmluZSByZXAoaSxuKSBmb3IoIGludCBpID0gMDsgaSA8IG47ICsraSApCiNkZWZpbmUgcmVwaShpLG4pIGZvciggaW50IGkgPSAxIDsgaSA8PSBuOyArK2kgKQojZGVmaW5lIHJlcG4oaSxuKSBmb3IoIGludCBpID0gbiAtIDEgOyBpID49IDAgOyAtLWkgKQojZGVmaW5lIHJlcGYoaixpLG4pIGZvciggaW50IGogPSBpIDsgaiA8IG4gOyArK2ogKQojZGVmaW5lIGRpZShzKSB7c3RkOjpjb3V0IDw8IHMgPDwgbmw7fQojZGVmaW5lIGRpZXIocykge3N0ZDo6Y291dCA8PCBzOyByZXR1cm4gMDt9CiNkZWZpbmUgdmkgdmVjdG9yPGludD4KdHlwZWRlZiBsb25nIGxvbmcgbGw7Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmludCBtYWluKCkgewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKE5VTEwpOwoJY291dC5wcmVjaXNpb24oMCk7IAoJaW50IFQ7CgljaW4gPj4gVDsKCXdoaWxlKFQtLSl7CgkJdmkgYSgxMyk7CgkJcmVwaShpICwgMTMpYVtpXSA9IGk7CgkJaW50IG47CgkJY2luID4+IG47CgkJcmVwKGkgLCBuKXsKCQkJaW50IHQ7CgkJCWNpbiA+PiB0OwoJCQl2aSBwKHQpOwoJCQlyZXAoaiAsIHQpewoJCQkJY2luID4+IHBbal07CgkJCX0KCQkJaW50IHRtcCA9IGFbcFswXV07CgkJCXJlcChqICwgdCAtIDEpewoJCQkJYVtwW2pdXSA9IGFbcFtqICsgMV1dOwoJCQl9CgkJCWFbcFtzeihwKSAtIDFdXSA9IHRtcDsKCQl9CgkJcmVwaShpICwgMTApewoJCQljb3V0IDw8IGFbaV0gPDwgIiAiOwoJCX0KCQljb3V0IDw8IG5sOwoJfQoKCglyZXR1cm4gMDsKfQoKLyoKMgo0CjQgMSAyIDMgNAo1IDEgNSA3IDkgMgo0IDEgOSAzIDIKMyAzIDQgOAoKMgoyIDEgMwo2IDIgNSA3IDkgNCA4Ciov