import java.util.Scanner;
//求最长上升子序列,合唱队的一部分
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int n = Integer.parseInt(in.nextLine());
String[] high = in.nextLine().split("\\s");
int[] highInt = new int[n];
int[] maxL = new int[n];//以每个位置作为结束位置最长连续子序列
int max = 0;//最长连续上升子序列的长度
for(int i=0;i<n;i++){
highInt[i] = Integer.parseInt(high[i]);
}
for(int i=0;i<n;i++){//双层循环
for(int j=0;j<i;j++){//内循环
if(highInt[i]>highInt[j]){
maxL[i] = Math.max(maxL[i],maxL[j]);
}
}
maxL[i] = maxL[i] + 1;//加上自身
max = Math.max(max,maxL[i]);//求最大值
}
System.out.println(max);
}
}
}