#include <bits/stdc++.h>
#include <utility>
#include <vector>
using namespace std;
int main() {
int L,M;
while(cin>>L>>M)
{
vector<pair<int,int>> q;
pair<int ,int>one;
int Tree_num=L+1;//树的数量=马路长度+1
int remove_num=0;//要移除的树的数量,初始为0
int s,e;//s表示上一个要移除区间的起点,e表示上一个要移除区间的终点
while(M--)//输入M个区间
{
cin>>one.first>>one.second;
q.push_back(one);
}
//对区间按照起点排序
sort(q.begin(),q.end(),[](const pair<int, int> &a,const pair<int, int> &b)
{
return a.first<b.first;
});
//先处理第一个区间
s=q[0].first;
e=q[0].second;
remove_num+=(e-s+1);
//处理后面的区间
for(int i=1;i<q.size();i++)
{
//当前区间被上一个区间包含了
if(q[i].second<=e) continue;
//当前区间和上一个区间交叉
if(q[i].first<=e&&q[i].second>e)
{
remove_num+=(q[i].second-e);
e=q[i].second;
}
//当前区间和上一个区间首尾不相连
if(q[i].first>e)
{
s=q[i].first;
e=q[i].second;
remove_num+=(e-s+1);
}
}
cout<<Tree_num-remove_num<<endl;
}
}
// 64 位输出请用 printf("%lld")