#include <iostream>
using namespace std;

/*
最长递减序列
*/
int missile[30];
int dp[30]; //dp[i]表示以i位置结尾的最长递减序列的长度

int main() {
    int k;
    scanf("%d", &k);
    for(int i = 0; i < k; i++){
        scanf("%d", &missile[i]);
    }
    fill(dp, dp + 30, 1); //给dp赋初值1
  
    for(int i = 1; i < k; i++){ //遍历missile数组,找到比当前missile[i]要大的高度
        for(int j = 0; j < i; j++){
            if(missile[i] <= missile[j]){ //注意这里高度相同也能打到
                dp[i] = max(dp[j] + 1, dp[i]);
            }
        }
    }
  
    int max = 0;
    for(int i = 0; i < k; i++){ //遍历dp数组,找到最大值
        max = max > dp[i] ? max : dp[i];
    }
    printf("%d\n", max);
}
// 64 位输出请用 printf("%lld")