#include <iostream>
#include <algorithm>
using namespace std;
struct point {
int x,y;
}p[5005];
int a[5005];
bool cmp(point a,point b)
{
if(a.x==b.x) return a.y>b.y;
return a.x>b.x;
}
int main(int argc, char *argv[])
{
int t,n,m,i,j,*k;
cin>>t;
while(t--)
{
cin>>n;m=1;
for(i=0;i<n;i++)
cin>>p[i].x>>p[i].y;
sort(p,p+n,cmp);
a[0]=p[0].y;
for(i=1;i<n;i++)
if(p[i].y>a[m-1]) a[m++]=p[i].y;
else {
k=lower_bound(a,a+m,p[i].y);
a[k-a]=p[i].y;
}
cout<<m<<endl;
}
return 0;
}//求有几个递减序列,就是求最长单调递增的长度