B3637
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[1000010],dp[1000010],t[1000010];
int lowbit(int x) {return x & -x;}
void add(int x,int c) {
for (int i = x;i <= n;i += lowbit(i)) {
t[i] = max(t[i],c);
}
}
int ask(int x) {
int ans = 0;
for (int i = x;i;i -= lowbit(i)) {
ans = max(ans,t[i]);
}
return ans;
}
signed main(){
cin >> n;
int ans = 0;
memset (t,0,sizeof(t));
for (int i = 1;i <= n;i ++) {
cin >> a[i];
}
for (int i = 1;i <= n;i ++) {
dp[i] = ask(a[i] - 1) + 1;
ans = max(ans,dp[i]);
add(a[i],dp[i]);
}
cout << ans << endl;
return 0;
}