#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,m,c[N],ans[N];
struct star{
int x,y;
bool operator<(const star&s)const{
if(y==s.y)return x>s.x;
return y<s.y;}
}st[N];
bool cmp(star a,star b){return a<b;}
int read(){
int xxx=0,www=1;char ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')www=-1;ch=getchar();}
while(ch>='0'&&ch<='9')xxx=xxx*10+ch-'0',ch=getchar();
return xxx*www;}
int lowbit(int x){return x&(-x);}
void update(int x,int y){for(;x<=n;x+=lowbit(x))c[x]+=y;}
int sum(int x){
int ans=0;
for(;x;x-=lowbit(x))ans+=c[x];
return ans;}
int run(){
memset(c,0,sizeof c);
sort(st+1,st+n+1,cmp);
if(st[n/2].y!=st[n/2+1].y)return 2;
for(int i=1;i<=n;i++){
int u=st[i].x;
update(u,1);
int v=sum(n)-sum(u-1);
if(v*2==n)return 3;}
return 4;
}
int main(){
int t=read();
while(t--){
n=read();
for(int i=1;i<=n;i++)st[i]={read(),read()};
int a=run();if(a==2){printf("2\n");continue;}
for(int i=1;i<=n;i++)swap(st[i].x,st[i].y);
printf("%d\n",min(a,run()));}
return 0;
}