#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
// dp[i] ±íʾÒÔ a[i] ½áβµÄ×²»Ï½µ×ÓÐòÁеij¤¶È
vector<int> dp(n, 1);
// prev[i] ÓÃÓڼǼǰÇý½Úµã£¬ÒԱ㹹Ôì×²»Ï½µ×ÓÐòÁÐ
vector<int> prev(n, -1);
// ¶¯Ì¬¹æ»®Çó½â
for (int i = 1; i < n; ++i) {
for (int j = 0; j < i; ++j) {
if (a[j] < a[i] && dp[j] + 1 > dp[i]) {
dp[i] = dp[j] + 1;
prev[i] = j;
}
}
}
// ÕÒµ½×²»Ï½µ×ÓÐòÁеij¤¶È
int maxLen = 0;
int endIndex = -1;
for (int i = 0; i < n; ++i) {
if (dp[i] > maxLen) {
maxLen = dp[i];
endIndex = i;
}
}
cout << maxLen << endl;
return 0;
}
/**************************************************************
Problem: 1794
User: chenpengxi
Language: C++
Result: Accepted
Time:316 ms
Memory:2220 kb
****************************************************************/