#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll maxn=1e5+5;
ll n,res;
ll a[maxn];
vector<ll>b(maxn,2e9);
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(ll i=1;i<=n;i++)
{
cin>>a[i];
}
b[0]=-2e9;
for(ll i=1;i<=n;i++)
{
ll l=lower_bound(b.begin(),b.end(),a[i])-b.begin();
b[l]=a[i];
res=max(res,l);
}
cout<<res;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGxsIGxvbmcgbG9uZwpjb25zdCBsbCBtYXhuPTFlNSs1OwpsbCBuLHJlczsKbGwgYVttYXhuXTsKdmVjdG9yPGxsPmIobWF4biwyZTkpOwppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgIGNpbj4+bjsKICAgZm9yKGxsIGk9MTtpPD1uO2krKykKICAgewogICAgICAgY2luPj5hW2ldOwogICB9CiAgIGJbMF09LTJlOTsKICAgZm9yKGxsIGk9MTtpPD1uO2krKykKICAgewogICAgICAgbGwgbD1sb3dlcl9ib3VuZChiLmJlZ2luKCksYi5lbmQoKSxhW2ldKS1iLmJlZ2luKCk7CiAgICAgICBiW2xdPWFbaV07CiAgICAgICByZXM9bWF4KHJlcyxsKTsKICAgfQogICBjb3V0PDxyZXM7Cn0K