#include <bits/stdc++.h>
#define ll long long
#define N 100011
using namespace std;
ll n;
ll a[N],t[N],m;
map<ll,ll> mp;
void update(ll pos,ll val) {
    for (;pos<=m;pos+=pos&(-pos)) {
        t[pos]=max(t[pos],val);
    }
}
ll get(ll pos) {
    ll ans=0;
    for (;pos>0;pos-=pos&(-pos)) {
        ans=max(ans,t[pos]);
    }
    return ans;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> n;
    for (ll i=1;i<=n;i++) {
        cin >> a[i];
        mp[a[i]]++;
    }
    for (auto &x:mp) {
        m++;
        x.second=m;
    }
    for (ll i=1;i<=n;i++) a[i]=mp[a[i]];
    ll ans=0;
    for (ll i=1;i<=n;i++) {
        update(a[i],1);
        update(a[i],get(a[i]-1)+1);
    }
    cout << get(m) << endl;
}
