import java.util.*;
/**
* @since 2017年4月22日
* @version 1.0
*/
public class s2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int map[][] = new int[n][2];
for (int i = 0; i < n; i++) {
map[i][0] = sc.nextInt();
map[i][1] = sc.nextInt();
}
int max = Integer.MIN_VALUE;
boolean vis[] = new boolean[n];
int ***[] = new int[n];
for (int i = 0; i < n; i++) {
if (!vis[i])
max = Math.max(dfs(map, vis, i, ***), max);
}
if (max != 1)
max--;
System.out.println(max);
}
private static int dfs(int[][] map, boolean[] vis, int id, int[] ***) {
if (***[id] != 0)
return ***[id];
int co = 0;
for (int i = 0; i < map.length; i++) {
if (!vis[i] && i != id
&& ((map[i][0] <= map[id][0]&& map[i][1] < map[id][1])
|| (map[i][0] < map[id][0] && map[i][1] <= map[id][1]))) {
vis[i] = true;
co = Math.max(co, dfs(map, vis, i, ***));
}
}
***[id] = co + 1;
return co + 1;
}
}