#include <bits/stdc++.h>

using namespace std;
#define  ll long long
#define f first
#define s second
const int N = 2e5+5;

int n , dp[N] , ans;
vector<int> adj[N];

void dfs(int node , int par)
{
    vector<int> v;
    for(auto ch : adj[node])
    {
        if (ch==par) continue;
        dfs(ch , node);
        v.push_back(dp[ch]+1);
    }
    sort(v.begin() , v.end());

    if (v.size())
    {
        if (node != 1)
        {
            int mx = v.back() , mn = v[0];
            if (adj[node].size() > 1) ans = max(ans , mx+1);

            dp[node] = mn;
        }
        else
        {
            int mx = v.back() , mn;
            v.pop_back();
            if (v.size()) mn = v.back();
            else mn = -1; //second maximum

            ans = max(ans , mn+1);
            ans = max(ans , mx);
            dp[node] = mx;
        }
    }
}

void clear()
{
    ans = 0;
    for(int i=1; i<=n; i++)
        adj[i].clear() , dp[i] = 0;
}

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int t;
    cin >> t;
    while(t--)
    {
        cin >> n;
        for(int i=1; i<n; i++)
        {
            int v,u;
            cin >> v >> u;
            adj[v].push_back(u) , adj[u].push_back(v);
        }

        dfs(1,1);

        cout << ans << '\n';

        clear();
    }


    return 0;
}