#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fi first
#define se second
const int MAXN = 1e6+7;
int a[MAXN];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for(int i = 1;i <= n;i++) {
cin >> a[i];
}
vector<int> f;
for(int i = 1;i <= n;i++) {
int p = lower_bound(f.begin(),f.end(),a[i]) - f.begin();
if(p == f.size()) f.push_back(a[i]);
else f[p] = a[i];
}
cout << f.size();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKY29uc3QgaW50IE1BWE4gPSAxZTYrNzsKaW50IGFbTUFYTl07CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIGZvcihpbnQgaSA9IDE7aSA8PSBuO2krKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgdmVjdG9yPGludD4gZjsKICAgIGZvcihpbnQgaSA9IDE7aSA8PSBuO2krKykgewogICAgICAgIGludCBwID0gbG93ZXJfYm91bmQoZi5iZWdpbigpLGYuZW5kKCksYVtpXSkgLSBmLmJlZ2luKCk7CiAgICAgICAgaWYocCA9PSBmLnNpemUoKSkgZi5wdXNoX2JhY2soYVtpXSk7CiAgICAgICAgZWxzZSBmW3BdID0gYVtpXTsKICAgIH0KICAgIGNvdXQgPDwgZi5zaXplKCk7CiAgICByZXR1cm4gMDsKfQ==