/*
分析:
简单贪心。
将所有的排序,然后一遍一遍筛选就行了。
2012-05-24
*/
分析:
简单贪心。
将所有的排序,然后一遍一遍筛选就行了。
2012-05-24
*/
#include"stdio.h"
#include"stdlib.h"
struct A
{
int l;
int w;
int k; //1未曾使用
}E[5011];
int cmp(const struct A *a,const struct A *b)
{
if(a->l!=b->l) return a->l-b->l;
else return a->w-b->w;
}
int main()
{
int T;
int n;
int ans;
int i;
int k1; //优化用的(其实试了试,不加这个优化也是0MS - - )
int temp;
int l_t,w_t;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=0;i<n;i++) {scanf("%d%d",&E[i].l,&E[i].w);E[i].k=1;}
qsort(E,n,sizeof(E[0]),cmp);
ans=0;
temp=0;
k1=0;
while(temp!=n)
{
l_t=w_t=0;
for(i=k1;i<n;i++) if(E[i].k) break;
k1=i;
for(i=k1;i<n;i++)
{
if(E[i].k==0) continue;
if(E[i].l>=l_t&&E[i].w>=w_t)
{
temp++;
E[i].k=0;
l_t=E[i].l;
w_t=E[i].w;
}
}
ans++;
}
printf("%d\n",ans);
}
return 0;
}