#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000;
int n,f[maxn],maxx = 0;
struct node{
int x,y;
}a[maxn];
bool cmp(node a,node b);
int main(){
for(int i = 0;i<maxn;i++)f[i]=1;
scanf("%d",&n);
for(int i = 0;i<n;i++){
scanf("%d%d",&a[i].x,&a[i].y);
if(a[i].x>a[i].y)swap(a[i].x,a[i].y);
}
sort(a,a+n,cmp);
for(int i = 1;i<n;i++)
for(int j=0;j<i;j++)
if(a[i].x>=a[j].y)f[i] = max(f[i],f[j]+1);
for(int i = 0;i<n;i++)maxx = max(maxx,f[i]);
printf("%d\n",maxx);
return 0;
}
bool cmp(node a,node b){
if(a.x!=b.x)return a.x<b.x;
return a.y<b.y;
}