#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//英语 看博友分析 抄博友程序 dfs+位运算 巧妙 没掌握
//1
//2
//1 36
//36 2
//1
long long comb[50];
int ans;
int cal(long long x)
{
int js=0;
for(int i=0;i<40;i++)
{
if(x&(1LL<<i))
{
js++;
}
}
return js;
}
void dfs(int k,int i,long long stat)//巧妙 背
{
//cout<<k<<" "<<i<<" "<<stat<<endl;
//cout<<(stat&comb[i])<<endl;
//cout<<cal(stat&comb[i])<<endl;
if(k>ans)
{
ans=k;
}
for(;i<=36;i++)
{
if(cal(stat&comb[i])>=(k+1))
{
dfs(k+1,i+1,stat&comb[i]);
}
}
}
int main()
{
//cout<<((1LL<<36)-1)<<endl;//36
int T;
cin>>T;
while(T--)
{
ans=0;
int n;
cin>>n;
memset(comb,0,sizeof(comb));
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
//comb[x]|=(1LL<<(y));//没掌握 ac
comb[x]|=(1LL<<(y-1));//抄博友程序 ac
}
dfs(0,1,(1LL<<36)-1);
cout<<ans<<endl;
}
return 0;
}