#include <stdio.h>
#include <stdlib.h>

int longestIncreasingSubsequence(int arr[], int n) {
    if (n == 0) return 0;

    int *dp = (int*)malloc(n * sizeof(int)); // dp[i] 表示以 arr[i] 结尾的 LIS 长度
    int max_len = 1; // 全局最长长度

    for (int i = 0; i < n; i++) {
        dp[i] = 1; // 初始化为1(每个元素自身)
        for (int j = 0; j < i; j++) {
            if (arr[j] >= arr[i] && dp[i] < dp[j] + 1) {
                dp[i] = dp[j] + 1; // 更新更长的子序列
            }
        }	
        if (dp[i] > max_len) max_len = dp[i]; // 更新全局最大值
    }

    free(dp);
    return max_len;
}

int main() {
	int n;
	int arr[27];
	scanf("%d",&n);
	for(int i = 0 ; i < n ; i++){
		scanf("%d",&arr[i]);
	}
    

    printf("%d\n", longestIncreasingSubsequence(arr, n));
    return 0;
}