#include
#include
using namespace std;
int n;
int niza[105];
int dp[105];
int LIS(int i) {
if(dp[i] != -1) {
return dp[i];
}
int longest_sequence = 0;
for(int j = i + 1; j < n; j++) {
if(niza[i] <= niza[j]) {
longest_sequence = max(longest_sequence, LIS(j) + 1);
}
}
return dp[i] = longest_sequence;
}
int main() {
cin >> n;
for(int i = 0; i < n; i++) {
cin >> niza[i];
dp[i] = -1; // znaci deka nemame nisto presmetano vo dinamickoto programiranje
}
int longest_sequence = 0;
for(int i = 0; i < n; i++) {
longest_sequence = max(longest_sequence, LIS(i) + 1);
}
cout << longest_sequence << endl;
}
// 4 3 1 3 5 6 2 10 11
// LIS(0) = max(LIS(4) + 1, LIS(5) + 1, LIS(7) + 1, LIS(8) + 1) = 4
// LIS(4) = max(LIS(5) + 1, LIS(7) + 1, LIS(8) + 1) = max(3, 2, 1) = 3
// LIS(5) = max(LIS(7) + 1, LIS(8) + 1) = max(2, 1) = 2
// LIS(7) = max(LIS(8) + 1) = 0 + 1 = 1
// LIS(8) = 0
// LIS(i)