#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=5e5+10;
ll n,m,a[N];
struct node {
ll l,r,val,lazy;
}
e[N << 2];
void pushup(ll i) {
e[i].val=e[i << 1].val+e[i << 1 | 1].val;
}
void pushdown(ll i) {
if (e[i].lazy) {
ll mid=(e[i].l + e[i].r)>>1;
e[i << 1].val+=e[i].lazy * (mid - e[i].l + 1);
e[i << 1 | 1].val+=e[i].lazy * (e[i].r - mid);
e[i << 1].lazy+=e[i].lazy;
e[i << 1 | 1].lazy+=e[i].lazy;
e[i].lazy=0;
}
}
void build(ll l, ll r, ll i) {
e[i].l=l;
e[i].r=r;
e[i].lazy=0;
if (l==r) {
e[i].val=a[l];
return;
}
ll mid=(l + r)>>1;
build(l, mid, i << 1);
build(mid + 1, r, i << 1 | 1);
pushup(i);
}
void modify(ll l, ll r, ll k, ll i) {
if (e[i].l > r || e[i].r < l) return;
if (e[i].l >=l && e[i].r <=r) {
e[i].val=k * (e[i].r - e[i].l + 1);
e[i].lazy=k;
return;
}
pushdown(i);
modify(l, r, k, i << 1);
modify(l, r, k, i << 1 | 1);
pushup(i);
}
ll query(ll x, ll i) {
if (e[i].l==e[i].r) {
return e[i].val;
}
pushdown(i);
ll mid=(e[i].l + e[i].r)>>1;
if (x <=mid) return query(x, i << 1);
else return query(x, i << 1 | 1);
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int ans=0;
cin>>n>>m;
for (ll i=1; i <=n; i++) a[i]=1;
build(1, n, 1);
while (m--) {
ll x,y,z=0;
cin>>x>>y;
modify(x, y, z, 1);
}
for (ll i=1; i <=n; i++) {
ans+=query(i, 1);
}
cout << ans << '\n';
return 0;
}