#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("zvon.in");
ofstream out("zvon.out");
const int N=100001;
vector<int> a[N];
int t[N], n;
bool cmp(int x, int y){
return t[x]>t[y];
}
void citire(){
int i,x,y;
in>>n;
for(i=1;i<n;i++)
{
in>>x>>y;
a[x].push_back(y);
}
}
void dfs(int x){
int i,y;
for(i=0;i<a[x].size();i++){
y=a[x][i];
dfs(y);
}
sort(a[x].begin(),a[x].end(),cmp);
t[x]=0;
for(i=0;i<a[x].size();i++){
y=a[x][i];
t[x]=max(t[x] , i+1+t[y]);
}
}
int main()
{
int TEST;
in>>TEST;
while(TEST>0){
citire();
dfs(1);
out<<t[1]<<"\n";
for(int i=1;i<n;i++){
a[i].clear();
t[i]=0;
}
TEST--;
}
return 0;
}