'use strict'
function Main(input) {
    // 入力の取得・整形
    input = input.trim().split("\n")
    input = input.map(elem => {
        // 'x y'といった文字列を配列[x, y]に変換する
        return elem.split(' ').map(str => parseInt(str))
    })
    const N = input[0][0]
 
    // 配列a,bの共通区間を求める関数
    const makeInterval = (a, b) => {
        const start = a[0] > b[0] ? a[0] : b[0]
        const end = a[1] > b[1] ? b[1] : a[1]
        return [start, end]
    }
 
    // 全区間の共通区間を求めていく
    const resultArr = input.reduce((accum, current, index) => {
      if(index === 0) {
          // 最初は[N, M]だからスキップする
          return accum
      }
      return makeInterval(accum, current) 
    }, [1, N])
 
    // [6, 3]のように、開始のほうが大きくなってる場合は0を返す。そうでない場合区間に含まれる数の個数を返す
    const result = (resultArr[0] > resultArr[1]) ? 0 : resultArr[1] - resultArr[0] + 1
 
    console.log(result)
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"))