#include <bits/stdc++.h>
using namespace std;
template <typename T>
void out(T x) {
  cout << x << endl;
  exit(0);
}
const long long mod = 1e9 + 7;
const int maxn = 1e6 + 5;
vector<int> s[maxn];
bool viz[maxn];
int ans[maxn];
void reset(int n) {
  for (int i = 0; i <= n; i++) {
    viz[i] = false;
    ans[i] = 0;
  }
}
void solve() {
  int n;
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    s[i].clear();
    int k;
    cin >> k;
    s[i].resize(k);
    for (int j = 0; j < k; j++) {
      cin >> s[i][j];
    }
  }
  for (int x = 1; x <= n; x++) {
    reset(n);
    ans[1] = x;
    viz[x] = true;
    int j;
    for (j = 2; j <= n;) {
      int before = j;
      for (int o = 0; o < n - 1; o++) {
        int unused = 0;
        int pick = -1;
        for (int y : s[o]) {
          if (!viz[y]) {
            unused++;
            pick = y;
          }
        }
        if (unused == 1) {
          ans[j++] = pick;
          viz[pick] = true;
          break;
        }
      }
      if (j == before) break;
    }
    if (j > n) {
      bool ok = true;
      for (int i = 0; i < n - 1; i++) {
        set<int> vals;
        for (int x : s[i]) {
          vals.insert(x);
        }
        vector<int> inds;
        for (int j = 1; j <= n; j++) {
          if (vals.count(ans[j])) {
            inds.push_back(j);
          }
        }
        sort(inds.begin(), inds.end());
        for (int i = 1; i < (int)inds.size(); i++) {
          if (inds[i] != inds[i - 1] + 1) {
            ok = false;
          }
        }
      }
      if (ok) {
        for (int i = 1; i <= n; i++) {
          cout << ans[i] << " ";
        }
        cout << "\n";
        return;
      }
    }
  }
  assert(false);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t;
  cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}
