//矩形嵌套
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
struct rec{
int length;
int width;
}rect;
bool moreThan(const rec& rect1,const rec& rect2)
{
if(rect1.length!=rect2.length)
return rect1.length > rect2.length;
else
return rect1.width > rect2.width;
}
int main()
{
int cases,n;
int i,j,a,b,temp;
vector<rec> rectVect;
int width,Max;
int s[1000];
cin >> cases;
while(cases--)
{
cin >> n;
Max=0;
rectVect.clear();
memset(s,0,sizeof(s));
for(i=0;i<n;i++)
{
cin >> a >> b;
if(a<b)
{//保证a>=b,实际上是保证length>width
temp=a;a=b;b=temp;
}
rect.length=a;
rect.width=b;
rectVect.push_back(rect);
}
sort(rectVect.begin(),rectVect.end(),moreThan);
s[0]=1;
for(i=1;i<n;++i)
{
width=rectVect[i].width;
for(j=i-1;j>=0;--j)
{
if(rectVect[j].width > width)
{
++s[i];
width=rectVect[j].width;
}
}
++s[i];
if(Max<s[i])
Max=s[i];
}
cout << Max << endl;
}
return 0;
}