from functools import cmp_to_key
class Solution(object):
    def maxEnvelopes(self, envs):
        def liss(envs):
            def lmip(envs, tails, k):
                b, e = 0, len(tails) - 1
                while b <= e:
                    m = (b + e) >> 1
                    if envs[tails[m]][1] > k[1]:
                        e = m - 1
                    else:
                        b = m + 1
                return b

            tails = []
            for i, env in enumerate(envs):
                idx = lmip(envs, tails, env)
                if idx >= len(tails):
                    tails.append(i)
                else:
                    tails[idx] = i
            return len(tails)

        def f(x, y):
            return -1 if (x[0] < y[0] or x[0] == y[0] and x[1] > y[1]) else 1

        envs.sort(key=cmp_to_key(f))
        return liss(envs)


if __name__ == "__main__":
    N = int(input())
    block = []
    for _ in range(N):
        tmp = list(map(int, input().split()))
        block.append(tmp)
    print(Solution().maxEnvelopes(block))