#include <iostream>
#include<algorithm>
#include<string.h>
using namespace std;
struct node
{
int s;
int e;
};
node meet[1000];
bool visited[1000];
bool cmp(node a,node b)
{
if(a.s!=b.s) return a.s<b.s;
return a.e<b.e;
}
int main()
{ int n,k;
// getchar();
while( cin>>n)
{
int i,j,count=0,tmp;
memset(visited,0,sizeof(visited));
for(i=0;i<n;i++)
cin>>meet[i].s>>meet[i].e;
sort(meet,meet+n,cmp);
//while(1)
// {
for(i=0;i<n;i++)
{
if(visited[i]==1) continue;
if(i==n)break;
k=meet[i].e; visited[i]=1;
for(j=i+1;j<n;j++)
{
if(visited[j]==0&&k<=meet[j].s)
{
k=meet[j].e;
visited[j]=1;
}
}
count++;
}
//}
cout<<count<<endl;
}
return 0;
}
#include<algorithm>
#include<string.h>
using namespace std;
struct node
{
int s;
int e;
};
node meet[1000];
bool visited[1000];
bool cmp(node a,node b)
{
if(a.s!=b.s) return a.s<b.s;
return a.e<b.e;
}
int main()
{ int n,k;
// getchar();
while( cin>>n)
{
int i,j,count=0,tmp;
memset(visited,0,sizeof(visited));
for(i=0;i<n;i++)
cin>>meet[i].s>>meet[i].e;
sort(meet,meet+n,cmp);
//while(1)
// {
for(i=0;i<n;i++)
{
if(visited[i]==1) continue;
if(i==n)break;
k=meet[i].e; visited[i]=1;
for(j=i+1;j<n;j++)
{
if(visited[j]==0&&k<=meet[j].s)
{
k=meet[j].e;
visited[j]=1;
}
}
count++;
}
//}
cout<<count<<endl;
}
return 0;
}