func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 100005;   vector<long long> g[100005];   long long vis[MAXN], s[MAXN], gc[MAXN];   long long n;   void dfs(long long v) {     vis[v] = 1;     s[v] = 1;     for (auto i : g[v]) {       if (!vis[i]) {         dfs(i);         s[v] += s[i];         gc[v] = max(gc[v], s[i]);       }     }     gc[v] = max(gc[v], n - s[v]);   }   int pa[MAXN], sz[MAXN];   long long find_pa(long long pos) {     if (pa[pos] != pos) pa[pos] = find_pa(pa[pos]);     return pa[pos];   }   void join(int a, int b) {     int x = find_pa(a), y = find_pa(b);     if (x != y) {       if (sz[x] >= sz[y])         sz[x] += sz[y], pa[y] = x;       else         sz[y] += sz[x], pa[x] = y;     }   }   void dsu_init(long long n) {     for (long long i = 0, ggdem = n; i < ggdem; ++i) pa[i] = i, sz[i] = 1;   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long t;     cin >> t;     while (t--) {       cin >> n;       for (long long i = 0, ggdem = n - 1; i < ggdem; ++i) {         long long u, v;         cin >> u >> v;         u--;         v--;         g[u].push_back(v);         g[v].push_back(u);       }       dfs(0);       long long mini = n;       for (long long i = 0, ggdem = n; i < ggdem; ++i) {         mini = min(mini, gc[i]);       }       vector<long long> v;       for (long long i = 0, ggdem = n; i < ggdem; ++i) {         if (gc[i] == mini) v.push_back(i);       }       assert(((int)v.size()) <= 2);       sort(v.begin(), v.end());       if (((int)v.size()) == 1) {         for (long long k = 0, ggdem = 2; k < ggdem; ++k)           cout << 1 <<     << g[0][0] + 1 <<   n ;       } else {         assert(mini == n / 2 && n % 2 == 0);         dsu_init(n);         for (long long i = 0, ggdem = n; i < ggdem; ++i) {           for (auto j : g[i]) {             if (min(i, j) != v[0] || max(i, j) != v[1]) {               join(i, j);             }           }         }         long long br = 0;         for (long long i = 0, ggdem = n; i < ggdem; ++i) {           if (((int)g[i].size()) == 1 && i != v[0] &&               find_pa(i) != find_pa(v[1])) {             cout << i + 1 <<     << g[i][0] + 1 <<   n ;             cout << i + 1 <<     << v[1] + 1 <<   n ;             br++;             break;           }         }         assert(br);       }       for (long long i = 0, ggdem = n; i < ggdem; ++i) g[i].clear();       for (long long i = 0, ggdem = n; i < ggdem; ++i)         vis[i] = 0, s[i] = 0, gc[i] = 0;     }     return 0;   }   