#include <bits/stdc++.h>
using namespace std;

int n,g[200005],mid,ok;
vector<int> e[200005],s;

void dfs(int now,int fa)
{
    if(e[now].size()==1&&now!=1)
    {
        g[now]=mid;
        return;
    }
    for(auto to:e[now])
        if(to!=fa) dfs(to,now);
    g[now]=-1145141;
    int cnt=0;
    for(auto to:e[now])
        if(to!=fa)
        {
            if(g[to]-2<0)
            {
                if(g[to]==1) cnt++;
                else ok=0;
            }
            g[now]=max(g[now],g[to]-1);
        }
    if(cnt>1) ok=0; else if(cnt==1) g[now]=0;
    //if(mid==2)
    //printf("? %d %d %d\n",now,g[now],ok);
}

bool check()
{
    ok=1;
    dfs(1,1);
    return ok;
}

void solve(int kase)
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) e[i].clear();
    for(int i=1,x,y;i<n;i++)
    {
        scanf("%d%d",&x,&y);
        e[x].push_back(y);
        e[y].push_back(x);
    }
    int l=1,r=n;
    while(l<r)
    {
        mid=l+r>>1;
        if(check()) r=mid; else l=mid+1;
    }
    printf("%d\n",l);
}

int main()
{
    int _;
    scanf("%d",&_);
    for(int i=1;i<=_;i++) solve(i);
    return 0;
}

/*
5
1 2
2 4
2 3
3 5
*/
