← Home
#include<bits/stdc++.h>
#define N 200005
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>
using namespace std;
int id,T,n,K; vector<int>g[N];
pair<int,int> dfs(int x,int fa){
	if(id!=-1) return make_pair(-n,-1); 
	vector<pii >st;
	for(int &u:g[x]) if(u!=fa) st.pb(dfs(u,x)); 
	if(id!=-1) return make_pair(-n,-1);
	if(!st.size()) return make_pair(1,x);
	sort(st.begin(),st.end()); 
	if(st.size()>=2&&st[0].fi<K&&st[1].fi<K){
		id=st[0].se; return make_pair(-n,-1);
	}return make_pair(st[0].fi+1,st[0].se);
}bool chk(int rd){
	K=rd,id=-1; pii o=dfs(1,0); 
	if(o.fi>=K) return 1; 
	if(id==-1) id=o.se;
	int u=id; id=-1,o=dfs(u,0);
	return (o.fi>=K);
}signed main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n); for(int i=1;i<=n;i++) g[i].clear();
		for(int i=1,u,v;i<n;i++) scanf("%d%d",&u,&v),g[u].pb(v),g[v].pb(u);
		int l=1,r=n,ret=1;
		while(l<=r){
			int md=(l+r)>>1;
			if(chk(md)) l=md+1,ret=md;
			else r=md-1;
		}printf("%d\n",ret);
	}return 0;
}