#include <bits/stdc++.h>
using namespace std;
const int N=9e4+50;
long long n,m,a[N],b[N],c[N],lz[N],ans;
bool vis[N];
map<int,int> pos;
void pushdown(int x,int l,int r){
if(!lz[x])return;
lz[x*2]=lz[x];
lz[x*2+1]=lz[x];
lz[x]=0;
}
void cov(int x,int l,int r,int lp,int rp,int v){
if(l>rp||r<lp)return;
if(lp<=l&&r<=rp){
lz[x]=v;
return;
}
int mid=(l+r)/2;
pushdown(x,l,r);
cov(x*2,l,mid,lp,rp,v);
cov(x*2+1,mid+1,r,lp,rp,v);
}
void calc(int x,int l,int r){
if(l==r){
if(lz[x]&&!vis[lz[x]]){
vis[lz[x]]=true;
++ans;
}
return;
}
int mid=(l+r)/2;
pushdown(x,l,r);
calc(x*2,l,mid);
calc(x*2+1,mid+1,r);
}
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=m;++i){
scanf("%lld%lld",&a[i],&b[i]);
c[i*2-1]=a[i];
c[i*2]=b[i];
}
sort(c+1,c+1+2*m);
for(int i=1;i<=2*m;++i)
pos[c[i]]=i;
for(int i=1;i<=m;++i){
a[i]=pos[a[i]];
b[i]=pos[b[i]];
cov(1,1,2*m,a[i],b[i],i);
}
calc(1,1,2*m);
printf("%lld",ans);
return 0;
}