"""

区間スケジューリング

終端で降順にソートすれば良い

"""

n, m=list(map(int, input().split()))

hope=[]

for i in range(m):

    a, b=list(map(int, input().split()))

    hope.append((a, b))

hope.sort(reverse=True, key=lambda x: x[0])

hope.sort(reverse=True, key=lambda x: x[1])

ans=0

for i in range(m-1):

    if i==0:

        target=hope[i][0]

    if target<hope[i+1][1]:

        if target<hope[i+1][0]:

            target=hope[i+1][0]

    else:

        ans=ans+1

        target=hope[i+1][0]

print((ans+1))

"""

区間スケジューリング

終端で降順にソートすれば良い

最適解は，貪欲法で，1つ次の区間を通るように串刺すこと

終端で降順にソートしているので，1本で区間を刺せる条件はi<jのとき，a[i]<b[j]

さらにその後，刺せる範囲が狭まる場合(a[i]>b[i])は，狭めて次の区間に行く

"""

n, m=list(map(int, input().split()))

hope=[]

for i in range(m):

    a, b=list(map(int, input().split()))

    hope.append((a, b))

hope.sort(reverse=True, key=lambda x: x[1])

ans=0

for i in range(m-1):

    if i==0:

        target=hope[i][0]

    if target<hope[i+1][1]:

        if target<hope[i+1][0]:

            target=hope[i+1][0]

    else:

        ans=ans+1

        target=hope[i+1][0]

print((ans+1))

"""
区間スケジューリング
終端で降順にソートすれば良い
"""
n, m = list(map(int, input().split()))
hope = []
for i in range(m):
    a, b = list(map(int, input().split()))
    hope.append((a, b))
hope.sort(reverse=True, key=lambda x: x[0])
hope.sort(reverse=True, key=lambda x: x[1])
ans = 0
for i in range(m - 1):
    if i == 0:
        target = hope[i][0]
    if target < hope[i + 1][1]:
        if target < hope[i + 1][0]:
            target = hope[i + 1][0]
    else:
        ans = ans + 1
        target = hope[i + 1][0]
print((ans + 1))

"""
区間スケジューリング
終端で降順にソートすれば良い
最適解は，貪欲法で，1つ次の区間を通るように串刺すこと
終端で降順にソートしているので，1本で区間を刺せる条件はi<jのとき，a[i]<b[j]
さらにその後，刺せる範囲が狭まる場合(a[i]>b[i])は，狭めて次の区間に行く
"""
n, m = list(map(int, input().split()))
hope = []
for i in range(m):
    a, b = list(map(int, input().split()))
    hope.append((a, b))
hope.sort(reverse=True, key=lambda x: x[1])
ans = 0
for i in range(m - 1):
    if i == 0:
        target = hope[i][0]
    if target < hope[i + 1][1]:
        if target < hope[i + 1][0]:
            target = hope[i + 1][0]
    else:
        ans = ans + 1
        target = hope[i + 1][0]
print((ans + 1))

+最適解は，貪欲法で，1つ次の区間を通るように串刺すこと +終端で降順にソートしているので，1本で区間を刺せる条件はi<jのとき，a[i]<b[j] +さらにその後，刺せる範囲が狭まる場合(a[i]>b[i])は，狭めて次の区間に行く -hope.sort(reverse=True, key=lambda x: x[0])