#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
int e[maxn], ne[maxn], h[maxn], idx = 0;
int sz[maxn];
int ans = 0;
void add(int a, int b) {
  e[idx] = b, ne[idx] = h[a];
  h[a] = idx++;
}
void dfs(int now, int fa) {
  sz[now] = 1;
  for (int i = h[now]; i != -1; i = ne[i]) {
    int j = e[i];
    if (j == fa) continue;
    dfs(j, now);
    sz[now]++;
  }
}
int dfs2(int now, int fa) {
  int d1 = 0, d2 = 0;
  for (int i = h[now]; i != -1; i = ne[i]) {
    int j = e[i];
    if (j == fa) continue;
    int d = dfs2(j, now);
    if (d > d1)
      d2 = d1, d1 = d;
    else if (d > d2)
      d2 = d;
  }
  if (d1 >= 1 && d2 >= 1) {
    if (now != 1)
      ans = max(ans, d1 + d2 + sz[now] - 1);
    else
      ans = max(ans, d1 + d2 + sz[now] - 2);
  } else if (d2 == 0 && d1 >= 1) {
    if (now != 1)
      ans = max(ans, d1 + sz[now]);
    else
      ans = max(ans, d1 + sz[now] - 1);
  }
  return (d1 == 0 ? 1 : d1 + sz[now] - 1);
}
int main() {
  int t;
  scanf("%d", &t);
  memset(h, -1, sizeof h);
  while (t--) {
    int n;
    scanf("%d", &n);
    idx = 0;
    ans = 0;
    for (int i = 1; i <= n - 1; i++) {
      int a, b;
      scanf("%d%d", &a, &b);
      add(a, b);
      add(b, a);
    }
    dfs(1, -1);
    dfs2(1, -1);
    cout << ans << endl;
    for (int i = 1; i <= n; i++) h[i] = -1, sz[i] = 0;
  }
  return 0;
}
