#include <bits/stdc++.h>
using namespace std;
void update(int &a, int b) {
  if (b > a) a = b;
}
int T;
int dp[300300];
int n;
vector<int> v[300300];
int ans = 1;
void dfs(int now, int par) {
  if (par >= 0 && v[now].size() == 1) {
    dp[now] = 1;
    return;
  }
  int mx = 0, mx2 = 0;
  for (int i = 0; i < v[now].size(); i++) {
    int to = v[now][i];
    if (to != par) {
      dfs(to, now);
      if (dp[to] > mx)
        mx2 = mx, mx = dp[to];
      else if (dp[to] > mx2)
        mx2 = dp[to];
    }
  }
  int add_this = v[now].size() - 1;
  update(ans, mx + mx2 + add_this - (bool)(mx2 > 0) + 1);
  dp[now] = mx + add_this;
}
int main() {
  scanf("%d", &T);
  while (T--) {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) v[i].clear();
    for (int i = 0; i < n - 1; i++) {
      int a, b;
      scanf("%d%d", &a, &b);
      a--, b--;
      v[a].push_back(b);
      v[b].push_back(a);
    }
    ans = 1;
    dfs(0, -1);
    cout << ans << endl;
  }
  return 0;
}
