#include<iostream>
using namespace std;
int main()
{
int l,m,u,t1,t2,s,k=0,h=0;cin>>l>>m;
int q[105],z[105],a[100],b[100];
for(int i=0;i<m;i++)
cin>>q[i]>>z[i];//读入
s=q[0];//初始连续段的开头
for(int i=0;i<m;i++)
for(int j=i+1;j<m;j++)
{
if(q[i]>q[j])
{
t1=q[j]; q[j]=q[i]; q[i]=t1;
}
if(z[i]>z[j])
{
t2=z[j]; z[j]=z[i]; z[i]=t2;
}
}//由小到大排序,为了好进行连续砍树
for(int i=0;i<m;i++)
{
if(z[i]>=q[i+1])
u=z[i+1]-s;
else
{
a[k]=u; s=q[i+1]; b[k]=q[i+1]-z[i]; k++;
}
}//进行计算,无法连续就更新开头,开始下一段,并把中间的空保留
for(int i=0;i<k;i++)
h=h+b[k];//计算每一个连续段中间剩余的树
for(int i=0;i<k;i++)
u=u+a[i];//把所有连续段加起来
cout<<l+h-u<<;//输出剩余的树
return 0;
}