#include <bits/stdc++.h>
using namespace std;
vector<int> g[500005];
int deg[500005];
int dp[500005][2];
void dfs(int now, int pre) {
  vector<int> d1;
  dp[now][1] = deg[now] - 1;
  for (auto i : g[now]) {
    if (i == pre) continue;
    dfs(i, now);
    dp[now][0] = max(dp[now][0], dp[i][0]);
    if (g[i].size() > 1) {
      d1.push_back(dp[i][1]);
      dp[now][1] = max(dp[now][1], deg[now] - 1 + dp[i][1]);
    }
  }
  sort(d1.rbegin(), d1.rend());
  int x = deg[now] + 1;
  for (int i = 0; i < 2; i++) {
    if (i < (int)d1.size()) {
      x += d1[i];
    }
  }
  dp[now][0] = max(dp[now][0], x);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    for (int i = 1; i < n + 1; i++) g[i].clear();
    for (int i = 1; i < n + 1; i++) {
      dp[i][0] = dp[i][1] = 0;
    }
    for (int i = 0; i < n - 1; i++) {
      int add1, add2;
      cin >> add1 >> add2;
      g[add1].push_back(add2);
      g[add2].push_back(add1);
    }
    if (n <= 2) {
      cout << 2 << '\n';
      continue;
    }
    int rt = 0;
    for (int i = 1; i < n + 1; i++) {
      deg[i] = g[i].size();
      if (deg[i] > 1) rt = i;
    }
    dfs(rt, rt);
    cout << dp[rt][0] << '\n';
  }
}
