#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("zvon.in");
ofstream fout("zvon.out");
const int Nmax=100005;
vector <int> G[Nmax];
int T,L[Nmax],N;
void Read()
{
fin>>N;
for(int i=1;i<N;++i)
{
int x,y;
fin>>x>>y;
G[x].push_back(y);
}
}
bool comp(int x, int y)
{
return L[x]>L[y];
}
void DFS(int Nod)
{
for( int i=0; (int)i<G[Nod].size(); i++)
DFS(G[Nod][i]);
sort(G[Nod].begin(),G[Nod].end(),comp);
L[Nod]=0;
for(int i=0; (int)i<G[Nod].size(); i++)
L[Nod]=max(L[Nod],i+1+L[G[Nod][i]]);
}
int main()
{
fin>>T;
while(T)
{
Read();
DFS(1);
fout<<L[1]<<"\n";
for(int i=0; i<=N; i++)
{
G[i].clear();
L[i]=0;
}
--T;
}
return 0;
}