func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   const ll INF = 1e18 + 1;   const ll mod = 1e9 + 7;   vector<vector<ll> > adj;   vector<ll> desc, max_n;   ll gmnc = INF;   void print_vec(vector<ll> vec) {     for (int i = 0; i < vec.size(); ++i) {       cout << vec[i] <<    ;     }     cout << endl;   }   ll desc_cnt(ll curr, ll par) {     ll cnt = 1;     for (auto it : adj[curr]) {       if (it != par) {         cnt += desc_cnt(it, curr);       }     }     desc[curr] = cnt;     return cnt;   }   void max_neigh_cnt(ll curr, ll par) {     ll mnc = -INF;     mnc = max(mnc, desc[1] - desc[curr]);     for (auto it : adj[curr]) {       if (it != par) {         mnc = max(mnc, desc[it]);       }     }     gmnc = min(gmnc, mnc);     max_n[curr] = mnc;     for (auto it : adj[curr]) {       if (it != par) {         max_neigh_cnt(it, curr);       }     }   }   int main() {     cin.tie(0);     ios_base::sync_with_stdio(0);     ll t;     cin >> t;     while (t--) {       ll n;       cin >> n;       adj.clear();       desc.clear();       max_n.clear();       gmnc = INF;       adj.resize(n + 1);       desc.resize(n + 1);       max_n.resize(n + 1);       for (int i = 1; i <= n - 1; ++i) {         ll x, y;         cin >> x >> y;         adj[x].push_back(y);         adj[y].push_back(x);       }       desc_cnt(1, 1);       max_neigh_cnt(1, 1);       vector<ll> cn;       for (int i = 1; i <= n; ++i) {         if (max_n[i] == gmnc) {           cn.push_back(i);         }       }       pair<ll, ll> e1, e2;       if (cn.size() > 1) {         for (auto it : adj[cn[0]]) {           if (it != cn[1]) {             e1 = make_pair(cn[0], it);             e2 = make_pair(cn[1], it);             break;           }         }       } else {         e1 = make_pair(cn[0], adj[cn[0]][0]);         e2 = e1;       }       cout << e1.first <<     << e1.second << endl;       cout << e2.first <<     << e2.second << endl;     }   }   