rt
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N = 5009;
int n, a[N], dp[N], len;
int main() {
ios::sync_with_stdio(false); cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
dp[1] = a[1];
len = 1;
for (int i = 1; i <= n; i++) {
if (a[i] > dp[len]) {
dp[++len] = a[i];
} else if (a[i] < dp[len]) {
int p = upper_bound(dp + 1, dp + 1 + len, a[i]) - dp;
dp[p] = a[i];
}
}
cout << len << endl;
return 0;
}