#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
//英语 看博友分析 抄博友程序 dfs 背
vector<int> mp[208];
bool cmp(int x,int y)
{
return x>y;
}
int dfs(int x)
{
if(mp[x].size()==0)
{
return 1;
}
int da[208];
for(int i=0;i<mp[x].size();i++)
{
int y=mp[x][i];
da[i]=dfs(y);
}
sort(da,da+mp[x].size(),cmp);
int jg=da[0];
for(int i=1;i<mp[x].size();i++)
{
jg=max(jg,da[i]+i);
}
return jg;
}
int main()
{
int T;
cin>>T;
for(int o=0;o<T;o++)
{
for(int i=0;i<208;i++)
{
mp[i].clear();
}
int n;
cin>>n;
for(int h=0;h<n;h++)
{
int x;
int m;
cin>>x>>m;
for(int i=0;i<m;i++)
{
int y;
cin>>y;
mp[x].push_back(y);
}
}
cout<<dfs(1)<<endl;
}
return 0;
}