#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
#define Nmax 100010
using namespace std;
ifstream fin ("zvon.in");
ofstream fout ("zvon.out");
int T, N, timp, B[Nmax];
vector < int > V[Nmax];
void Reset_Values()
{
memset(B, 0, sizeof(B));
for (int i = 1; i <= N; i++) V[i].clear();
}
void DFS(int nod)
{
timp = max (B[nod], timp);
for (vector < int > :: iterator it = V[nod].begin(); it != V[nod].end(); it++)
{
B[*it] = B[nod] + 1;
B[nod] ++;
DFS(*it);
}
}
int main()
{
fin >> T;
while (T--)
{
Reset_Values();
fin >> N;
for (int i = 1, x, y; i < N; i++)
{
fin >> x >> y;
V[x].push_back(y);
}
timp = 0;
DFS(1);
fout << timp << '\n';
}
return 0;
}