```
#include<bits/stdc++.h>
using namespace std;
const int MAXN=10086;
struct xd{
int st,js;
}x[MAXN];
bool cmp(xd a,xd b){
return a.js<b.js;
}
int tem1,tem2,tem3,tem4,ans=0,maxx=-10000,n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&tem1,&tem2);
tem3=min(tem1,tem2);
tem4=max(tem1,tem2);
x[i].st=tem3;
x[i].js=tem4;
}
sort(x+1,x+1+n,cmp);
for(int i=1;i<=n;i++){
if(x[i].st>=maxx){
ans++;
maxx=x[i].js;
}
}
printf("%d\n",ans);
}
#include<bits/stdc++.h>
using namespace std;
const int MAXN=10086;
struct xd{
int st,js;
}x[MAXN];
bool cmp(xd a,xd b){
return a.js<b.js;
}
int tem1,tem2,tem3,tem4,ans=0,maxx=-10000,n;
int dp[MAXN];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&tem1,&tem2);
tem3=min(tem1,tem2);
tem4=max(tem1,tem2);
x[i].st=tem3;
x[i].js=tem4;
}
sort(x+1,x+1+n,cmp);
for(int i=1;i<=n;i++)dp[i]=1;
for(int i=2;i<=n;i++){
for(int j=1;j<i;j++){
if(x[i].st>=x[j].js){
dp[i]=max(dp[i],dp[j]+1);
ans=max(dp[i],ans);
}
}
}
printf("%d",ans);
}