#include <bits/stdc++.h>
const int maxn = 1e5 + 500;
const int mod = 1e9 + 7;
const int inf = 123456789;
using namespace std;
int n, t, a, b, c;
vector<int> v[maxn], ans2[maxn];
vector<int> ans;
set<int> st[maxn];
int vis[maxn];
map<tuple<int, int>, int> mp;
void add(int a, int b, int i) {
  if (mp.find({a, b}) != mp.end()) {
    int x = mp[{a, b}];
    ans2[x].push_back(i);
    ans2[i].push_back(x);
    mp.erase({a, b});
  } else {
    mp[{a, b}] = i;
  }
}
void ins(int a, int b) {
  if (st[a].count(b)) {
    st[a].erase(b);
  } else {
    st[a].insert(b);
  }
  if (st[b].count(a)) {
    st[b].erase(a);
  } else {
    st[b].insert(a);
  }
}
void dfs(int x, int fa) {
  vis[x] = 1;
  ans.push_back(x);
  for (int i : v[x]) {
    if (i == fa || vis[i]) continue;
    dfs(i, x);
    if (x == 1) break;
  }
}
void dfs1(int x, int fa) {
  for (int i : ans2[x]) {
    if (i != fa) {
      dfs1(i, x);
    }
  }
  cout << x << " ";
}
void init(int x) {
  ans.clear();
  mp.clear();
  memset(vis, 0, sizeof(vis));
  for (int i = 1; i <= x; i++) {
    ans2[i].clear();
    v[i].clear();
    st[i].clear();
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    cin >> n;
    init(n);
    for (int i = 1; i < n - 1; i++) {
      cin >> a >> b >> c;
      if (a > b) swap(a, b);
      if (a > c) swap(a, c);
      if (b > c) swap(b, c);
      ins(a, b);
      ins(a, c);
      ins(b, c);
      add(a, b, i);
      add(a, c, i);
      add(b, c, i);
    }
    for (int i = 1; i <= n; i++) {
      for (int it : st[i]) {
        v[i].push_back(it);
      }
    }
    dfs(1, 0);
    for (int i : ans) {
      cout << i << " ";
    }
    cout << '\n';
    dfs1(1, 0);
    cout << '\n';
  }
  return 0;
}
