vector<int>vec[100002];
int maxx,maxp1,maxp2,d[100002],pre,mem[100002];
bool vis[100002];
void dfs(int s)
{
vis[s]=true;
for(int i=0;i<vec[s].size();i++)
{
if(!vis[vec[s][i]])
{
d[vec[s][i]]=d[s]+1;
dfs(vec[s][i]);
}
}
}
int main()
{
int T,i,n,j,u,v,r,l,p1,p2;
scanf("%d",&T);
for(r=0;r<T;r++)
{
scanf("%d",&n);
for(j=0;j<n-1;j++)
{
scanf("%d %d",&u,&v);
vec[u].push_back(v);
vec[v].push_back(u);//无向连通无环图
}
memset(vis,false,sizeof(vis));
dfs(1);//一次dfs
maxx=0;
for(i=1;i<=n;i++)
{
if(d[i]>maxx)
{
maxx=d[i];
maxp1=i;
}
}
memset(vis,false,sizeof(vis));
memset(d,0,sizeof(d));
dfs(maxp1);//二次dfs
maxx=0;
for(i=1;i<=n;i++)
{
if(d[i]>=maxx)
{
maxx=d[i];//找到最大直径
maxp2=i;
}
}