#include <bits/stdc++.h>
using namespace std;
vector<int> vec[201], v[201];
int afis[201], scor[201], n, test[201];
bool viz[201];
void elim(int val) {
  for (int i = 0; i < v[val].size(); i++) scor[v[val][i]]--;
}
bool incearca(int start) {
  int i, j;
  for (i = 1; i <= n; i++) {
    scor[i] = vec[i].size();
    viz[i] = 0;
  }
  afis[1] = vec[start][0];
  elim(vec[start][0]);
  afis[2] = vec[start][1];
  elim(vec[start][1]);
  viz[vec[start][0]] = viz[vec[start][1]] = 1;
  for (int i = 3; i <= n; i++) {
    int cnt = 0;
    for (j = 1; j < n; j++)
      if (scor[j] == 1) cnt++;
    if (cnt >= 2 || cnt == 0) return 0;
    for (j = 1; j < n; j++)
      if (scor[j] == 1) {
        for (int k = 0; k < vec[j].size(); k++)
          if (!viz[vec[j][k]]) {
            viz[vec[j][k]] = 1;
            elim(vec[j][k]);
            afis[i] = vec[j][k];
            break;
          }
        cnt = 0;
        for (int k = i; k >= i - vec[j].size() + 1; k--) test[++cnt] = afis[k];
        sort(test + 1, test + cnt + 1);
        for (int a = 1, b = 0; b < vec[j].size(); a++, b++)
          if (test[a] != vec[j][b]) return 0;
        break;
      }
    if (j == n) return 0;
  }
  return 1;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t, i, k, j, a;
  cin >> t;
  while (t--) {
    cin >> n;
    for (i = 1; i <= n; i++) {
      vec[i].clear();
      v[i].clear();
    }
    for (i = 1; i < n; i++) {
      cin >> k;
      for (j = 1; j <= k; j++) {
        cin >> a;
        v[a].push_back(i);
        vec[i].push_back(a);
      }
    }
    for (i = 1; i < n; i++)
      if (vec[i].size() == 2) {
        if (incearca(i)) break;
        swap(vec[i][0], vec[i][1]);
        if (incearca(i)) break;
        swap(vec[i][0], vec[i][1]);
      }
    for (i = 1; i <= n; i++) cout << afis[i] << " ";
    cout << '\n';
  }
  return 0;
}
