#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
int a[10240] = { 0 };
int n;
void f() {
int ans = 1;
int dp[10240] = { 0 }; // dp[i]是第i个数结尾的最长递增子序列的长度
dp[1] = 1;
for (int i = 2; i <= n; i++) {
int preCnt = 0;
for (int j = 1; j < i; j++) { // 找到算上a[i]后最长的序列
if (dp[j] > preCnt && a[j] < a[i]) {
preCnt = dp[j];
}
}
dp[i] = preCnt + 1;
ans = max(ans, dp[i]);
}
cout << ans << endl;
}
int main() {
// system("chcp 65001");
cin.tie(0);
cout.tie(0);
freopen("C:/Users/zhaochen/Desktop/input.txt", "r", stdin);
while (cin >> n) {
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
f();
}
return 0;
}