import java.util.Scanner;
//最长上升序列
public class LIS {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int length = scanner.nextInt();
int[] values = new int[length];
int[] curlength = new int[length];
for (int i = 0; i < values.length; i++) {
values[i] = scanner.nextInt();
curlength[i] = 1;
}
int max = LISMAX(values,curlength);
System.out.println(max);
}
private static int LISMAX(int[] values, int[] curlength) {
for (int i = 1; i < values.length; i++) {
for (int j = 0; j < i; j++) {
if (values[i] > values[j]) {
curlength[i] = max(curlength[j] + 1,curlength[i]);
}
}
}
return max(curlength);
}
private static int max(int[] arr) {
int tag = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[tag] < arr[i])
tag = i;
}
return arr[tag];
}
private static int max(int i, int j) {
return i >= j ? i : j;
}
}