using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using static System.Console;
using static PB10004.Algorithm.Util;

namespace PB10004.Algorithm
{
    class Template
    {
        static void Main(string[] args)
        {
            new ABC103D().Solve();
        }
    }
    public class ABC103A
    {
        public void Solve()
        {
            var array = ReadIntArray();
            var newArray = new int[3];
            newArray[0] = Math.Abs(array[1] - array[0]);
            newArray[1] = Math.Abs(array[2] - array[1]);
            newArray[2] = Math.Abs(array[2] - array[0]);
            WriteLine(newArray.Sum() - newArray.Max());
        }
    }
    public class ABC103B
    {
        public void Solve()
        {
            var S = ReadLine();
            var T = ReadLine();
            var tmp = S;
            for (int i = 0; i <= S.Length; i++)
            {
                bool flag = true;
                for(int j = 0; j < S.Length; j++)
                {
                    if(S[(j+i)%S.Length] != T[j])
                    {
                        flag = false;
                    }
                }
                if (flag)
                {
                    WriteLine("Yes");
                    return;
                }
            }
            WriteLine("No");
        }
    }
    public class ABC103C
    {
        public void Solve()
        {
            var N = ReadInt();
            var array = ReadIntArray();
            WriteLine(array.Sum() - N);
        }
    }
    public class ABC103D
    {
        List<Link> links = new List<Link>();
        HashSet<int> lefts = new HashSet<int>();
        HashSet<int> rights = new HashSet<int>();
        public void Solve()
        {
            var array = ReadIntArray();
            var N = array[0];
            var M = array[1];
            for (int i = 0; i < M; i++)
            {
                var line = ReadIntArray();
                var a = line[0]-1;
                var b = line[1]-1;
                links.Add(new Link() { Src = a, Dest = b });
                lefts.Add(a);
                rights.Add(b);
            }
            var count = 0;
            while(links.Select(x=>x.Src).Max() >= links.Select(x=>x.Dest).Min())
            {
                var min = links.Select(x => x.Dest).Min();
                links = links.Where(x => x.Src >= min).ToList();
                count++;
                
            }
            WriteLine(count+1);
        }
    }
    public struct Link
    {
        public int Src, Dest;
    }
    public static class Util
    {
        /// <summary>
        /// 標準入力をint型にパースする
        /// </summary>
        /// <returns></returns>
        public static int ReadInt()
        {
            return int.Parse(ReadLine());
        }
        /// <summary>
        /// 標準入力をint型の配列にする
        /// </summary>
        /// <returns></returns>
        public static int[] ReadIntArray()
        {
            return ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();
        }
        /// <summary>
        /// 標準入力をlong型にパースする
        /// </summary>
        /// <returns></returns>
        public static long ReadLong()
        {
            return long.Parse(ReadLine());
        }
        /// <summary>
        /// 標準入力をlong型の配列にする
        /// </summary>
        /// <returns></returns>
        public static long[] ReadLongArray()
        {
            return ReadLine().Split(' ').Select(long.Parse).ToArray();
        }
        /// <summary>
        /// 一定値の数列を生成する
        /// </summary>
        /// <param name="value"></param>
        /// <param name="length"></param>
        /// <returns></returns>
        public static IEnumerable<long> ConstSeq(long value, long length)
        {
            for (int i = 0; i < length; i++)
            {
                yield return value;
            }
        }
        /// <summary>
        /// int配列の累積和を求める
        /// </summary>
        /// <param name="array"></param>
        /// <returns></returns>
        public static IEnumerable<int> CumulativeSum(IEnumerable<int> array)
        {
            int tmp = 0;
            foreach (var num in array)
                yield return tmp += num;
        }
        /// <summary>
        /// long配列の累積和を求める
        /// </summary>
        /// <param name="array"></param>
        /// <returns></returns>
        public static IEnumerable<long> CumulativeSum(IEnumerable<long> array)
        {
            long tmp = 0;
            foreach (var num in array)
                yield return tmp += num;
        }
        /// <summary>
        /// 最大公約数をユークリッドの互除法で求める
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static long Gcd(long a, long b)
        {
            return b == 0 ? a : Gcd(b, a % b);
        }
        /// <summary>
        /// 最小公倍数を求める
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static long Lcm(long a, long b)
        {
            return a * b / Gcd(a, b);
        }
    }
}

Measured memory_bytes: 38660