//思路是想着先加入一对数据,然后判断他们的关系,相离相交相融。但是在对数增多的时候,我只考虑了新增数据和已有数据的判断关系,而判断他们的关系并且执行后,还缺少关于已有数据对之间的关系是相交相容或是相离,就是这个我不懂写
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
int l,m,a[105]={0},b[105]={0};
scanf("%d %d",&l,&m);
int i,j,c=0,d=0,e=0,f=0,g=0,h=0;
int num=1;
scanf("%d %d",&a[c],&b[d]);//a是左边b是右边,先读入左边右边的第一个数字
for(i=1;i<m;i++){//读入次数
scanf("%d %d",&e,&f);
for(c=0,d=0,g=1;g<=num;g++,c++,d++){//读入一次,判断一次
if(e>=a[c]&&e<=b[d]&&f>b[d]){
b[d]=f;//情况一新增的与已有数据在左边相交
break;
}
if(f>=a[c]&&f<=b[d]&&e<a[c]){
a[c]=e;//情况二新增的与已有数据在右边相交
break;
}
if(e<a[c]&&f>b[d]){
a[c]=e;//情况三新增的比已有的范围大
b[d]=f;
break;
}
if(e>a[c]&&f<b[d]){
//情况四 新增的比已有的范围小
break;
}
if(f<a[c]){
a[num]=e;
b[num]=f;//情况五在左边相离
num++;
break;
}
if(e>b[d]){
a[num]=e;
b[num]=f;//情况六 在右边相离
num++;
break;
}
}
}
c=num-1,d=num-1;
int sum=0;
for(i=0;i<num;i++){
sum+=(b[d]-a[c]+1);
d--;
c--;
}
printf("%d",l-sum+1);
}