#include <bits/stdc++.h>
long long int power(long long int a, long long int b) {
  long long int z = 1;
  while (b) {
    if (b & 1) {
      z *= a;
      z %= 1000000007;
    }
    a *= a;
    a %= 1000000007;
    b /= 2;
  }
  return z % 1000000007;
}
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long int t;
  cin >> t;
  while (t--) {
    long long int n;
    cin >> n;
    vector<set<long long int>> sq;
    for (int i = 0; i < n - 1; ++i) {
      long long int k;
      cin >> k;
      set<long long int> cur;
      while (k--) {
        long long int x;
        cin >> x;
        cur.insert(x);
      }
      sq.push_back(cur);
    }
    for (int f = 1; f <= n; ++f) {
      std::vector<long long int> ans;
      ans.push_back(f);
      std::vector<set<long long int>> seq = sq;
      for (auto &st : seq)
        if (st.count(f)) st.erase(f);
      bool chk = true;
      for (int i = 1; i < n; ++i) {
        int cnt = 0;
        int nxt = -1;
        for (auto &st : seq) {
          if (st.size() == 1) {
            cnt++;
            nxt = *st.begin();
          }
        }
        if (cnt != 1) {
          chk = false;
          break;
        }
        ans.push_back(nxt);
        for (auto &st : seq)
          if (st.count(nxt)) st.erase(nxt);
      }
      if (chk) {
        set<set<long long int>> allseq(sq.begin(), sq.end());
        for (int i = 1; i < n; ++i) {
          bool found = false;
          set<long long int> ss;
          ss.insert(ans[i]);
          for (int j = i - 1; j >= 0; --j) {
            ss.insert(ans[j]);
            if (allseq.count(ss)) {
              found = true;
              allseq.erase(ss);
              break;
            }
          }
          if (!found) chk = false;
        }
      }
      if (chk) {
        for (auto i : ans) cout << i << " ";
        cout << "\n";
        ;
        break;
      }
    }
  }
  return 0;
}
