import std.algorithm;
import std.array;
import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

T read(T)() { return readln.chomp.to!T; }
T[] reads(T)() { return readln.split.to!(T[]); }
alias readint = read!int;
alias readints = reads!int;

void main() {
    auto nm = readints;
    int m = nm[1];
    int[][] a;
    for (int i = 0; i < m; i++) a ~= readints;

    // 各区間の右端の位置でソート
    a.sort!((a, b) => a[1] < b[1]);

    int ans = 0;
    int p = -1; // 切断した位置
    foreach (e; a) {
        // 切断した区間に含まれないので、新しい切断が必要
        if (p < e[0]) {
            // 切断位置を更新
            p = e[1] - 1;
            ans++;
        }
    }
    writeln(ans);
}
