#include <bits/stdc++.h>
using namespace std;
long long power(long long x, long long y, long long p) {
  long long res = 1;
  x = x % p;
  while (y > 0) {
    if (y & 1) res = (res * x) % p;
    y = y >> 1;
    x = (x * x) % p;
  }
  return res;
}
int n;
vector<pair<int, pair<int, int> > > v1;
int dfs(int s, int par, vector<int> v[], int sz[]) {
  sz[s] = 1;
  int mx = 0, ind;
  for (int i = 0; i < v[s].size(); i++) {
    int u = v[s][i];
    if (u != par) {
      int p = dfs(u, s, v, sz);
      if (mx < p) {
        mx = p;
        ind = u;
      }
      sz[s] += p;
    }
  }
  if (n - sz[s] > mx && par != s) {
    mx = n - sz[s];
    ind = par;
  }
  v1.push_back({mx, {s, ind}});
  return sz[s];
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t;
  cin >> t;
  while (t--) {
    cin >> n;
    vector<int> v[n + 1];
    for (int i = 0; i < n - 1; i++) {
      int a, b;
      cin >> a >> b;
      v[a].push_back(b);
      v[b].push_back(a);
    }
    int sz[n + 1];
    memset(sz, 0, sizeof(sz));
    int p = dfs(1, 1, v, sz);
    sort(v1.begin(), v1.end());
    int q = v1[0].first;
    int f = 0, ind2, ind1;
    for (int i = 1; i < v1.size(); i++) {
      if (v1[i].first == q) {
        ind1 = v1[i].second.first;
        ind2 = v1[i].second.second;
        f = 1;
        break;
      }
    }
    if (!f) {
      cout << v1[0].second.first << " " << v1[0].second.second << endl;
      cout << v1[0].second.first << " " << v1[0].second.second << endl;
    } else {
      int u = ind1;
      for (int i = 0; i < v[u].size(); i++) {
        if (v[u][i] != v1[0].second.first && v[u][i] != v1[0].second.second) {
          cout << u << " " << v[u][i] << endl;
          u = v[u][i];
          break;
        }
      }
      cout << u << " " << v1[0].second.first << endl;
    }
    v1.clear();
  }
}
