#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
vector<int>q[maxn];
int dp[maxn];
int res;
void dfs(int u,int f)
{
	vector<int>w;
	for(int i=0;i<q[u].size();i++)
	{
		int v=q[u][i];
		if(v==f) continue;
		dfs(v,u);
//		f[u] = min(f[v]+1,f[u]);
		dp[u] = min(dp[v]+1,dp[u]);
		w.push_back(dp[v]);
	}
	if(w.empty()){
		dp[u]=0;
		return ;
	}
	sort(w.begin(),w.end());
	for(int i=0;i<w.size()-1;i++) res = max(res,w[i]+2);
	if(u==1) res = max(res,w.back()+1);
	else res = max(res, w.back()+2);
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		for(int i=1;i<=n;i++) q[i].clear(),dp[i]=n+1;;
		for(int i=1;i<n;i++)
		{
			int a,b;
			cin>>a>>b;
			q[a].push_back(b);q[b].push_back(a);
		}
		dfs(1,0);
//		cout<<dp[2]<<endl;
		cout<<res<<endl;
		res=0;
	}
 	return 0; 
}