#include <bits/stdc++.h>
typedef int BIT[2 + 201 / 32];
int size(int a[]) { return a[0]; }
int tst(int a[], int i) { return a[1 + (i >> 5)] & (1 << (i & 0x1F)); }
void set(int a[], int i) {
  if (!tst(a, i)) {
    a[1 + (i >> 5)] |= (1 << (i & 0x1F));
    a[0]++;
  }
}
void clr(int a[], int i) {
  if (tst(a, i)) {
    a[1 + (i >> 5)] &= ~(1 << (i & 0x1F));
    a[0]--;
  }
}
int n;
std::vector<int> a[201];
BIT bit[201], bin[201];
int main() {
  void restore();
  int tc;
  scanf("%d", &tc);
  while (tc--) {
    for (int i = 1; i < 201; i++) a[i].clear();
    memset(bit, 0, sizeof(bit));
    scanf("%d", &n);
    for (int i = 1; i <= n - 1; i++) {
      int t, d;
      scanf("%d", &t);
      for (int j = 1; j <= t; j++) {
        scanf("%d", &d);
        a[i].push_back(d);
        set(bit[i], d);
      }
    }
    restore();
  }
  return (0);
}
std::vector<int> ans;
void restore() {
  int test(int p, int d);
  int is_valid(std::vector<int> & s);
  void print(std::vector<int> & s);
  for (int d = 1; d <= n; d++) {
    memset(bin, 0, sizeof(bin));
    for (int i = 1; i <= n - 1; i++) {
      for (int j = 0; j < a[i].size(); j++) set(bin[i], a[i][j]);
    }
    ans.clear();
    ans.push_back(d);
    if (test(1, d)) {
      if (is_valid(ans)) {
        print(ans);
        return;
      }
    }
  }
}
int test(int p, int d) {
  if (p == n) return (1);
  for (int i = 1; i <= n - 1; i++) clr(bin[i], d);
  int count = 0, index;
  for (int i = 1; i <= n - 1; i++)
    if (size(bin[i]) == 1) {
      count++;
      index = i;
    }
  if (count != 1) return (0);
  for (int i = 1; i <= n; i++)
    if (tst(bin[index], i)) {
      ans.push_back(i);
      return test(p + 1, i);
    }
}
int is_valid(std::vector<int>& s) {
  int is_equal(std::vector<int> & a, BIT bit);
  int used[201];
  memset(used, 0, sizeof(used));
  std::vector<int> seg;
  for (int i = 1; i < s.size(); i++) {
    seg.clear();
    seg.push_back(s[i]);
    for (int j = i - 1; j >= 0; j--) {
      seg.push_back(s[j]);
      for (int k = 1; k <= n - 1; k++) {
        if (!used[k] && is_equal(seg, bit[k])) {
          used[k] = 1;
          break;
        }
      }
    }
  }
  for (int i = 1; i <= n - 1; i++)
    if (!used[i]) return (0);
  return (1);
}
int is_equal(std::vector<int>& a, BIT bit) {
  for (int i = 0; i < a.size(); i++)
    if (!tst(bit, a[i])) return (0);
  if (a.size() != size(bit)) return (0);
  return (1);
}
void print(std::vector<int>& s) {
  for (int i = 0; i < s.size(); i++) printf("%d ", s[i]);
  printf("\n");
}
