#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int li[100005],ri[100005];
int cov[100005 << 4];
int a[100005 * 3];
int cnt;
bool hash[100005];
int binarySearsh(int key, int n){
int l = 0, r = n - 1;
while(l <= r){
int mid = (l + r) / 2;
if(a[mid] == key) return mid;
else if(a[mid] < key) l = mid + 1;
else r = mid - 1;
}
return -1;
}
void pushDown(int p){
if(cov[p] != -1){
cov[p << 1] = cov[p << 1 | 1] = cov[p];
cov[p] = -1;
}
}
void update(int p, int l, int r, int x, int y, int c){
if(x <= l && y >= r){
cov[p] = c;
return;
}
pushDown(p);
int mid = (l + r) / 2;
if(x <= mid) update(p << 1, l, mid, x, y, c);
if(y > mid) update(p << 1 | 1, mid + 1, r, x, y, c);
}
void query(int p, int l, int r){
if(cov[p] != -1){
if(!hash[cov[p]]){
cnt++;
hash[cov[p]]=true;
}
return;
}
if(l == r) return;
int mid = (l + r) / 2;
query(p << 1, l, mid);
query(p << 1 | 1, mid + 1, r);
}
int main(){
int t, n;
scanf("%d", &t);
while(t--){
scanf("%d", &n);
int k = 0;
for(int i = 0; i < n; i++){
scanf("%d%d", &li[i], &ri[i]);
a[k++] = li[i];
a[k++] = ri[i];
}
sort(a, a + k);
int h = 1;
for(int i = 1; i < k; i++)
if(a[i] != a[i - 1]) a[h++] = a[i];
for(int i = h - 1; i > 0; i--)
if((a[i] - a[i - 1]) > 1) a[h++] = a[i - 1] + 1;
sort(a, a + h);
memset(cov, -1, sizeof(cov));
for(int i = 0; i < n; i++){
int l = binarySearsh(li[i], h);
int r = binarySearsh(ri[i], h);
update(1, 0, h - 1, l, r, i);
}
cnt = 0;
memset(hash, false, sizeof(hash));
query(1, 0, h - 1);
printf("%d\n", cnt);
}
return 0;
}
//presented by 大吉大利,今晚AC