/**
* author: orzvanh14 ( Độc cô cầu đặc )
* created: 20.05.2026 21:04:02
* too lazy to update time
**/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define nn "\n"
#define pb push_back
#define all(a) a.begin(), a.end()
const int N = 1e5 + 5;
int n, a[N];
void nhap(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
}
void solve(){
vector<int> lis;
for(int i = 1; i <= n; i++){
int pos = lower_bound(all(lis), a[i]) - lis.begin();
if(pos == lis.size()){
lis.pb(a[i]);
}
else{
lis[pos] = a[i];
}
}
cout << lis.size() << nn;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
nhap();
solve();
return 0;
}
LyoqCiAqICAgIGF1dGhvcjogIG9yenZhbmgxNCAoIMSQ4buZYyBjw7QgY+G6p3UgxJHhurdjICkKICogICAgY3JlYXRlZDogMjAuMDUuMjAyNiAyMTowNDowMgogKiAgICB0b28gbGF6eSB0byB1cGRhdGUgdGltZQoqKi8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbm4gIlxuIgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGFsbChhKSBhLmJlZ2luKCksIGEuZW5kKCkKCmNvbnN0IGludCBOID0gMWU1ICsgNTsKCmludCBuLCBhW05dOwoKdm9pZCBuaGFwKCl7CiAgICBjaW4gPj4gbjsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIH0KfQoKdm9pZCBzb2x2ZSgpewogICAgdmVjdG9yPGludD4gbGlzOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKCiAgICAgICAgaW50IHBvcyA9IGxvd2VyX2JvdW5kKGFsbChsaXMpLCBhW2ldKSAtIGxpcy5iZWdpbigpOwoKICAgICAgICBpZihwb3MgPT0gbGlzLnNpemUoKSl7CiAgICAgICAgICAgIGxpcy5wYihhW2ldKTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgbGlzW3Bvc10gPSBhW2ldOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGxpcy5zaXplKCkgPDwgbm47Cn0KCnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBuaGFwKCk7CiAgICBzb2x2ZSgpOwoKICAgIHJldHVybiAwOwp9