//算法思想1:使用标记数组,初始化为1,移走一颗置0累计首次置0次数
//算法思想2:数学思想,取挖掉区间并集,最后减去挖去区间大小剩余便是所求;
//使用思想1,思想2待实现
#include<iostream>
using namespace std;
int main(){
int n,m;
scanf("%d%d",&n,&m);
int t[n++];//500个点有501棵树
for(int i=0;i<n;i++) t[i]=1;
for(int i=0;i<m;i++){
int l,r;
scanf("%d%d",&l,&r);
while(l++<=r){
if(t[l]==1){
t[l]=0;
n--;
}
}
}
printf("%d\n",n);
return 0;
}