1 #include <cstring>
2 #include <iostream>
3 #include <algorithm>
4
5 using namespace std;
6
7 class Node
8 {
9 public:
10 int x;
11 int y;
12 bool operator <(const Node&n) const
13 {
14 return x<=n.x&&y<=n.y;
15 }
16 };
17
18 bool cmp(Node a,Node b)
19 {
20 if(a.x==b.x)
21 return a.y<b.y;
22 else
23 return a.x<b.x;
24 }
25
26 Node arr[100010];
27 Node ans[100010];
28
29 int main()
30 {
31 int T;
32 cin>>T;
33 while(T--)
34 {
35 int n;
36 cin>>n;
37 for(int i=0;i<n;i++)
38 {
39 cin>>arr[i].x>>arr[i].y;
40 }
41 sort(arr,arr+n,cmp);
42 int siz=1;
43 ans[0].x=arr[0].x;
44 ans[0].y=arr[0].y;
45 for(int i=1;i<n;i++)
46 {
47 int s=lower_bound(ans,ans+siz,arr[i])-ans;
48 if(s==siz)
49 {
50 if(ans[s-1].x<=arr[i].x&&ans[s-1].y<=arr[i].y)
51 {
52 ans[s].x=arr[i].x;
53 ans[s].y=arr[i].y;
54 siz++;
55 }
56 }
57 else
58 {
59 ans[s].x=arr[i].x;
60 ans[s].y=arr[i].y;
61 }
62
63 }
64 cout<<siz<<endl;
65 }
66 return 0;
67 }