#!/usr/bin/env python3

# université pierre et marie curie - c. dürr - 2017
# http://www-desir.lip6.fr/~durrc/Iut/cpa/2017/tme5-progdyn/

# Construction de ponts
# algorithme: réduction vers plus longue sous séquence croissante
# complexité: O(n log n)

from sys import stdin
from tryalgo.longest_increasing_subsequence import longest_increasing_subsequence

def readint():
    return int(stdin.readline())

def readints():
    return map(int, stdin.readline().split())

def bridges(a, b):
    """
    Il existe une permutation L avec L[i]=j s'il existe un entier k tel que
    a[k] a le rang i dans a et b[k] le rang j dans b.

    Toute solution est une séquence croissante dans L et vice-versa.
    La difficulté est seulement de calculer L et puis d'appeler
    une procédure standard pour trouver une plus longue sous-séquence.

    complexité:
        calcul de L en O(n)
        plus longue sous-séquence en O(n log n)
    """
    n = len(a)
    assert n == len(b)
    Lb = [(b[i], i) for i in range(n)]
    Lb.sort()
    La = [(a[i], i) for i in range(n)]
    La.sort()
    rank = [0] * n
    for r in range(n):
        bi, i = Lb[r]
        rank[i] = r
    L = [rank[i] for ai, i in La]
    return len(longest_increasing_subsequence(L))

n = readint()
a = []
b = []
for _ in range(n):
    ai, bi = readints()
    a.append(ai)
    b.append(bi)

print(bridges(a, b))

