#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;   }   