/*
某校大门外长度为l的马路上有一排树,
每两棵相邻的树之间的间隔都是1米。
我们可以把马路看成一个数轴,
马路的一端在数轴0的位置,另一端在l的位置;
数轴上的每个整数点,即0,1,2,…,l,都种有一棵树。
由于马路上有一些区域要用来建地铁。
这些区域用它们在数轴上的起始点(u)和终止点(v)表示。
已知任一区域的起始点和终止点的坐标都是整数,
区域之间可能有重合的部分。
现在要把这些区域中的树(包括区域端点处的两棵树)移走。
你的任务是计算将这些树都移走后,马路上还有多少棵树。
*/
#include<iostream>
using namespace std;
bool tree[10001];
int l,m;//马路的长度l和区域的数目m。
int u,v;//分别表示一个区域的起始点和终止点的坐标。
int sum;
int main(){
cin>>l>>m;
//把1~l这个区间内“种上”树。
for(int i=1;i<=l;i++){
tree[i]=1;
}
//输入区域的起始点和终止点的坐标。
for(int i=1;i<=m;i++){
cin>>u>>v;
//移除u~v区间内的树。
for(int j=u;j<=v;j++){
tree[j]=0;
}
}
for(int i=1;i<=l;i++){
if(tree[i]==1){
sum++;
}
}
cout<<sum+1;
return 0;
}