import java.util.*;
public class Main{
static Scanner sc = new Scanner(System.in);
static int N = 5010;
static int[] f = new int[N];
static PII[] a = new PII[N];
public static void main(String[] args){
int n = sc.nextInt();
for(int i = 1; i <= n ; i ++ ){
a[i] = new PII(sc.nextInt(),sc.nextInt());
}
Arrays.sort(a,1,n+1);
int res = 0;
for(int i = 1 ; i <= n ; i ++ ){
f[i] = 1;
for(int j = 1 ; j < i; j ++ ){
if(a[i].x > a[j].x){
f[i] = Math.max(f[i],f[j] + 1);
}
}
res = Math.max(res,f[i]);
}
System.out.println(res);
}
}
class PII implements Comparable<PII>{
int x,y;
public PII(int x,int y){
this.x = x;
this.y = y;
}
public int compareTo(PII o){
return Integer.compare(y,o.y);
}
}
1016. 最大上升子序列和
import java.util.*;
public class Main{
static Scanner sc=new Scanner(System.in);
static int[] a=new int[1010];
static int[] f=new int[1010];
public static void main(String[] args){
int n=sc.nextInt();
for(int i=1;i<=n;i++) a[i]=sc.nextInt();
for(int i=1;i<=n;i++){
f[i]=a[i];
for(int j=1;j<i;j++){
if(a[i]>a[j]){
f[i]=Math.max(f[i],f[j]+a[i]);
}
}
}
int res=0;
for(int i=1;i<=n;i++) res=Math.max(res,f[i]);
System.out.println(res);
}
}