/*
www.youtube.com/YugiHackerChannel
linktr.ee/YugiHacker
*/
#include<bits/stdc++.h>
#define el cout<<"\n"
#define f0(i,n) for(int i=0;i<n;++i)
#define f1(i,n) for(int i=1;i<=n;++i)
#define maxn 200005
using namespace std;
int n, a[maxn], b[maxn], t[maxn * 4];
void update(int id, int l, int r, int p, int v) {
if (l == r) {
t[id] = v;
return;
}
int mid = (l + r) / 2;
if (p <= mid) update(id*2, l, mid, p, v);
else update(id*2+1, mid+1, r, p, v);
t[id] = max(t[id*2], t[id*2+1]);
}
int get (int id, int l, int r, int u, int v) {
if (r < u || v < l) return 0;
if (u <= l && r <= v) return t[id];
int mid = (l + r) / 2;
return max(get(id*2, l, mid, u, v), get(id*2+1, mid+1, r, u, v));
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin >> n;
for (int i=1; i<=n; i++) {
cin >> a[i];
b[i] = a[i];
}
sort(b+1, b+n+1);
for (int i=1; i<=n; i++) {
int x = lower_bound(b+1, b+n+1, a[i]) - b;
int dp = get(1, 1, n, 1, x-1) + 1;
update(1, 1, n, x, dp);
}
cout << get(1, 1, n, 1, n);
}
Ci8qCiAgICB3d3cueW91dHViZS5jb20vWXVnaUhhY2tlckNoYW5uZWwKICAgIGxpbmt0ci5lZS9ZdWdpSGFja2VyCiovCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZWwgY291dDw8IlxuIgojZGVmaW5lIGYwKGksbikgZm9yKGludCBpPTA7aTxuOysraSkKI2RlZmluZSBmMShpLG4pIGZvcihpbnQgaT0xO2k8PW47KytpKQojZGVmaW5lIG1heG4gMjAwMDA1CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBhW21heG5dLCBiW21heG5dLCB0W21heG4gKiA0XTsKdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCBwLCBpbnQgdikgewogICAgaWYgKGwgPT0gcikgewogICAgICAgIHRbaWRdID0gdjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICBpZiAocCA8PSBtaWQpIHVwZGF0ZShpZCoyLCBsLCBtaWQsIHAsIHYpOwogICAgZWxzZSB1cGRhdGUoaWQqMisxLCBtaWQrMSwgciwgcCwgdik7CiAgICB0W2lkXSA9IG1heCh0W2lkKjJdLCB0W2lkKjIrMV0pOwp9CmludCBnZXQgKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYpIHsKICAgIGlmIChyIDwgdSB8fCB2IDwgbCkgcmV0dXJuIDA7CiAgICBpZiAodSA8PSBsICYmIHIgPD0gdikgcmV0dXJuIHRbaWRdOwogICAgaW50IG1pZCA9IChsICsgcikgLyAyOwogICAgcmV0dXJuIG1heChnZXQoaWQqMiwgbCwgbWlkLCB1LCB2KSwgZ2V0KGlkKjIrMSwgbWlkKzEsIHIsIHUsIHYpKTsKfQppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBiW2ldID0gYVtpXTsKICAgIH0KICAgIHNvcnQoYisxLCBiK24rMSk7CiAgICBmb3IgKGludCBpPTE7IGk8PW47IGkrKykgewogICAgICAgIGludCB4ID0gbG93ZXJfYm91bmQoYisxLCBiK24rMSwgYVtpXSkgLSBiOwogICAgICAgIGludCBkcCA9IGdldCgxLCAxLCBuLCAxLCB4LTEpICsgMTsKICAgICAgICB1cGRhdGUoMSwgMSwgbiwgeCwgZHApOwogICAgfQogICAgY291dCA8PCBnZXQoMSwgMSwgbiwgMSwgbik7Cn0K