#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD = 1e9 + 7;
#define fastio std::ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define test int t;cin>>t;while(t--)
double tick(){static clock_t oldt,newt=clock();double diff=1.0*(newt-oldt)/CLOCKS_PER_SEC;oldt=newt;return diff;}
namespace patch
{
template < typename T > std::string to_string( const T& n )
{
std::ostringstream stm ;
stm << n ;
return stm.str() ;
}
}
int ipow(int b, int e) {
if (e == 0)
return 1;
return e == 0 ? 1 : b * ipow(b, e - 1);
}
const int MAX=40005;
int segTree[4*MAX],lazyTree[4*MAX];
void lazyupd(int loq,int hiq,int lo,int hi,int pos,int val)
{
if(lazyTree[pos]!=0)
{
segTree[pos]=lazyTree[pos];
if(lo!=hi)
{
lazyTree[2*pos]=lazyTree[pos];
lazyTree[2*pos+1]=lazyTree[pos];
}
lazyTree[pos]=0;
}
//if(lo>hi) return;
if(loq>hi || hiq<lo || lo>hi) return;
if(loq<=lo && hiq>=hi)
{
segTree[pos]=val;
if(lo!=hi)
{
lazyTree[2*pos]=val;
lazyTree[2*pos+1]=val;
}
return;
}
int mid=(lo+hi)/2;
lazyupd(loq,hiq,lo,mid,2*pos,val);
lazyupd(loq,hiq,mid+1,hi,2*pos+1,val);
segTree[pos]=val;
}
int segQuer(int loq,int hiq,int lo,int hi,int pos)
{
if(lazyTree[pos]!=0)
{
segTree[pos]=lazyTree[pos];
if(lo!=hi)
{
lazyTree[2*pos]=lazyTree[pos];
lazyTree[2*pos+1]=lazyTree[pos];
}
lazyTree[pos]=0;
}
if(loq>hi || hiq<lo || lo>hi) return 0;
if(loq<=lo && hiq>=hi) return segTree[pos];
int mid=(lo+hi)/2;
return segQuer(loq,hiq,lo,mid,2*pos)+segQuer(loq,hiq,mid+1,hi,2*pos+1);
}
int main() {
#ifndef ONLINE_JUDGE
freopen("inp.txt", "r", stdin);
freopen("output.txt","w", stdout);
#endif
fastio;
test{
memset(segTree,0,sizeof(segTree));
memset(lazyTree,0,sizeof(lazyTree));
int n;cin>>n;
pair<int,int> ranges[MAX];
vector<int> arr;
map<int,int> seen;
for(int i=0;i<n;i++)
{
int l,r;cin>>l>>r;
//l--,r--;
ranges[i].first=l;
ranges[i].second=r;
if(seen[l]==0)
{
arr.push_back(l);
seen[l]=1;
}
if(seen[r]==0)
{
arr.push_back(r);
seen[r]=1;
}
}
sort(arr.begin(),arr.end());
map<int,int> compress;
for(int i=0;i<arr.size();i++)
compress[arr[i]]=i+1;
for(int i=0;i<n;i++)
lazyupd(compress[ranges[i].first],compress[ranges[i].second],1,arr.size(),1,i+1);
set<int> res;
for(int i=1;i<=arr.size();i++)
{
res.insert(segQuer(i,i,1,arr.size(),1));
}
int result=res.size();
if(res.find(0)!=res.end())
result--;
cout<<result<<"\n";
}
//cout<<tick()<<"\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmNvbnN0IGludCBNT0QJPSAxZTkgKyA3OwoKI2RlZmluZSBmYXN0aW8JCQlzdGQ6Omlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKQojZGVmaW5lIHRlc3QgaW50IHQ7Y2luPj50O3doaWxlKHQtLSkKCmRvdWJsZSB0aWNrKCl7c3RhdGljIGNsb2NrX3Qgb2xkdCxuZXd0PWNsb2NrKCk7ZG91YmxlIGRpZmY9MS4wKihuZXd0LW9sZHQpL0NMT0NLU19QRVJfU0VDO29sZHQ9bmV3dDtyZXR1cm4gZGlmZjt9CgpuYW1lc3BhY2UgcGF0Y2gKewogICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBUID4gc3RkOjpzdHJpbmcgdG9fc3RyaW5nKCBjb25zdCBUJiBuICkKICAgIHsKICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RtIDsKICAgICAgICBzdG0gPDwgbiA7CiAgICAgICAgcmV0dXJuIHN0bS5zdHIoKSA7CiAgICB9Cn0KCmludCBpcG93KGludCBiLCBpbnQgZSkgewogICAgaWYgKGUgPT0gMCkKICAgICAgICByZXR1cm4gMTsKICAgIHJldHVybiBlID09IDAgPyAxIDogYiAqIGlwb3coYiwgZSAtIDEpOwp9Cgpjb25zdCBpbnQgTUFYPTQwMDA1OwoKaW50IHNlZ1RyZWVbNCpNQVhdLGxhenlUcmVlWzQqTUFYXTsKCnZvaWQgbGF6eXVwZChpbnQgbG9xLGludCBoaXEsaW50IGxvLGludCBoaSxpbnQgcG9zLGludCB2YWwpCnsKCWlmKGxhenlUcmVlW3Bvc10hPTApCgl7CgkJc2VnVHJlZVtwb3NdPWxhenlUcmVlW3Bvc107CgkJaWYobG8hPWhpKQoJCXsKCQkJbGF6eVRyZWVbMipwb3NdPWxhenlUcmVlW3Bvc107CgkJCWxhenlUcmVlWzIqcG9zKzFdPWxhenlUcmVlW3Bvc107CgkJfQoJCWxhenlUcmVlW3Bvc109MDsKCX0KCgkvL2lmKGxvPmhpKSByZXR1cm47CgoJaWYobG9xPmhpIHx8IGhpcTxsbyB8fCBsbz5oaSkgcmV0dXJuOwoKCWlmKGxvcTw9bG8gJiYgaGlxPj1oaSkKCXsKCQlzZWdUcmVlW3Bvc109dmFsOwoJCWlmKGxvIT1oaSkKCQl7CgkJCWxhenlUcmVlWzIqcG9zXT12YWw7CgkJCWxhenlUcmVlWzIqcG9zKzFdPXZhbDsKCQl9CgkJcmV0dXJuOwoJfQoKCWludCBtaWQ9KGxvK2hpKS8yOwoKCWxhenl1cGQobG9xLGhpcSxsbyxtaWQsMipwb3MsdmFsKTsKCWxhenl1cGQobG9xLGhpcSxtaWQrMSxoaSwyKnBvcysxLHZhbCk7CgoJc2VnVHJlZVtwb3NdPXZhbDsKCn0KCmludCBzZWdRdWVyKGludCBsb3EsaW50IGhpcSxpbnQgbG8saW50IGhpLGludCBwb3MpCnsKCWlmKGxhenlUcmVlW3Bvc10hPTApCgl7CgkJc2VnVHJlZVtwb3NdPWxhenlUcmVlW3Bvc107CgoJCWlmKGxvIT1oaSkKCQl7CgkJCWxhenlUcmVlWzIqcG9zXT1sYXp5VHJlZVtwb3NdOwoJCQlsYXp5VHJlZVsyKnBvcysxXT1sYXp5VHJlZVtwb3NdOwoJCX0KCQlsYXp5VHJlZVtwb3NdPTA7Cgl9CgoJaWYobG9xPmhpIHx8IGhpcTxsbyB8fCBsbz5oaSkgcmV0dXJuIDA7CgoJaWYobG9xPD1sbyAmJiBoaXE+PWhpKSByZXR1cm4gc2VnVHJlZVtwb3NdOwoKCWludCBtaWQ9KGxvK2hpKS8yOwoKCXJldHVybiBzZWdRdWVyKGxvcSxoaXEsbG8sbWlkLDIqcG9zKStzZWdRdWVyKGxvcSxoaXEsbWlkKzEsaGksMipwb3MrMSk7Cn0KCmludCBtYWluKCkgewoJI2lmbmRlZiBPTkxJTkVfSlVER0UKCQlmcmVvcGVuKCJpbnAudHh0IiwgInIiLCBzdGRpbik7CgkJZnJlb3Blbigib3V0cHV0LnR4dCIsInciLCBzdGRvdXQpOwoJI2VuZGlmCglmYXN0aW87CgoKCXRlc3R7CgkJbWVtc2V0KHNlZ1RyZWUsMCxzaXplb2Yoc2VnVHJlZSkpOwoJCW1lbXNldChsYXp5VHJlZSwwLHNpemVvZihsYXp5VHJlZSkpOwoJCWludCBuO2Npbj4+bjsKCgkJcGFpcjxpbnQsaW50PiByYW5nZXNbTUFYXTsKCQl2ZWN0b3I8aW50PiBhcnI7CgkJbWFwPGludCxpbnQ+IHNlZW47CgkJZm9yKGludCBpPTA7aTxuO2krKykKCQl7CgkJCWludCBsLHI7Y2luPj5sPj5yOwoJCQkvL2wtLSxyLS07CgoJCQlyYW5nZXNbaV0uZmlyc3Q9bDsKCQkJcmFuZ2VzW2ldLnNlY29uZD1yOwoKCQkJaWYoc2VlbltsXT09MCkKCQkJewoJCQkJYXJyLnB1c2hfYmFjayhsKTsKCQkJCXNlZW5bbF09MTsKCQkJfQoJCQlpZihzZWVuW3JdPT0wKQoJCQl7CgkJCQlhcnIucHVzaF9iYWNrKHIpOwoJCQkJc2VlbltyXT0xOwoJCQl9CQoJCX0KCQlzb3J0KGFyci5iZWdpbigpLGFyci5lbmQoKSk7CgoJCW1hcDxpbnQsaW50PiBjb21wcmVzczsKCQkKCQlmb3IoaW50IGk9MDtpPGFyci5zaXplKCk7aSsrKQoJCQljb21wcmVzc1thcnJbaV1dPWkrMTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCQlsYXp5dXBkKGNvbXByZXNzW3Jhbmdlc1tpXS5maXJzdF0sY29tcHJlc3NbcmFuZ2VzW2ldLnNlY29uZF0sMSxhcnIuc2l6ZSgpLDEsaSsxKTsKCgkJc2V0PGludD4gcmVzOwoKCQlmb3IoaW50IGk9MTtpPD1hcnIuc2l6ZSgpO2krKykKCQl7CgkJCXJlcy5pbnNlcnQoc2VnUXVlcihpLGksMSxhcnIuc2l6ZSgpLDEpKTsKCQl9CgoJCWludCByZXN1bHQ9cmVzLnNpemUoKTsKCgkJaWYocmVzLmZpbmQoMCkhPXJlcy5lbmQoKSkKCQkJcmVzdWx0LS07CgoJCWNvdXQ8PHJlc3VsdDw8IlxuIjsKCX0KCgkvL2NvdXQ8PHRpY2soKTw8IlxuIjsKCXJldHVybiAwOwoJCQp9Cg==