//include
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cmath> 
#include <iomanip>
#include <math.h>
#include <utility>
#include <functional>
#include <cstdlib>
//using
using namespace std;
using vl = vector <long long>;
using vs = vector <string>;
using vc = vector <char>;
using ll= long long;
using vvl = vector<vector<ll> >;
//vector<vector<char> > hyou(N, vector<char>(N));
using vd = vector <double>;
//define
//#define int long long
#define rep(i,n) for(int i=0; i<n; i++)
#define print(n) cout<<n<<endl;
#define sortp(d) sort(d.begin(),d.end()) //1234
#define sortm(d) sort(d.rbegin(),d.rend()) //4321
//素数判定　O(√A) 
bool is_prime(int x){
 if(x<=1) return false;
 for(int i=2;i*i<=x;i++)
 if(x%i==0) return false;
 return true;
 }
/*順列生成
do {
  // 順列に対する処理
} while (next_permutation(配列変数.begin(), 配列変数.end()));*/

//絶対値　abs()
//文字→数字　'0' アルファベット→数字　'a'　'A'が65番,'a'が97番だわ
//型キャスト　char('a'+1)

//グローバル変数宣言
 ll p=0,q=0;//r=0;

int main()
{
  ll n,m;
  cin>>n>>m;
  vl l(m),r(m);
  q=n;
  rep(i,m){cin>>l[i]>>r[i];p=max(p,l[i]);q=min(q,r[i]);}
  ll a=0;
  a=max(a,q-p+1);
  print(a)
}
#include <stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
const int MAXN=1000005;
vector <int> adj[MAXN];
int prof[MAXN],low[MAXN],padre[MAXN],cont,N,M,root;
bool usa[MAXN],ap[MAXN];
void articulationPoints(int v){
    int child=0;
    usa[v]=true;
    low[v]=prof[v]=++cont;
    for (int i=0; i<(int)adj[v].size(); i++){
        int w=adj[v][i];
        if (!usa[w]){
            child++;
            padre[w]=v;
            articulationPoints(w);
            low[v]=min(low[v],low[w]);
            if (padre[v]==-1 && child>1) ap[v]=true;
            if (padre[v]!=-1 && low[w]>=prof[v]) ap[v]=true;
        } else if(w!=padre[v]) low[v]=min(low[v],prof[w]);
    }
}
int main()
{
    scanf("%d%d",&N,&M);
    int a,b;
    for (int i=0; i<M; i++){
        scanf("%d%d",&a,&b);
        adj[a].push_back(b); adj[b].push_back(a);
    }
    fill(padre,padre+N,-1);
    articulationPoints(0);
    for (int i=0; i<N; i++)
        if (ap[i])printf("%d\n",i);
    return 0;
}