#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define sp ' '
#define st first
#define nd second
int a[30001];
int res[30001];
int binary(int lo , int hi,int val){
int mid = (lo + hi) / 2;
while (mid != lo && hi != mid){
if (res[mid] >= val) hi = mid;
else lo = mid;
mid = (lo + hi)/2;
}
for (int i=lo ;i <= hi ;++i) if (res[i] >= val) return i;
return -1;
}
int main(){
ios_base::sync_with_stdio(0);
//freopen ("f.txt","r" , stdin);
int n; cin >> n;
for (int i=1;i<=n;++i) cin >> a[i];
int mxh = 0;
for (int i=1;i<=n;++i){
int x = binary(1 , mxh , a[i]);
if (x == -1) res[++mxh] = a[i];
else res[x] = min (res[x] , a[i]);
}
cout << mxh;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIHNwICcgJwojZGVmaW5lIHN0IGZpcnN0CiNkZWZpbmUgbmQgc2Vjb25kCgppbnQgYVszMDAwMV07CmludCByZXNbMzAwMDFdOwoKaW50IGJpbmFyeShpbnQgbG8gLCBpbnQgaGksaW50IHZhbCl7CiAgICBpbnQgbWlkID0gKGxvICsgaGkpIC8gMjsKICAgIHdoaWxlIChtaWQgIT0gbG8gJiYgaGkgIT0gbWlkKXsKICAgICAgICBpZiAocmVzW21pZF0gPj0gdmFsKSBoaSA9IG1pZDsKICAgICAgICAgICAgZWxzZSBsbyA9IG1pZDsKICAgICAgICBtaWQgPSAobG8gKyBoaSkvMjsKICAgIH0KICAgIGZvciAoaW50IGk9bG8gO2kgPD0gaGkgOysraSkgaWYgKHJlc1tpXSA+PSB2YWwpIHJldHVybiBpOwogICAgcmV0dXJuIC0xOwp9CgppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIC8vZnJlb3BlbiAoImYudHh0IiwiciIgLCBzdGRpbik7CiAgICBpbnQgbjsgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaT0xO2k8PW47KytpKSBjaW4gPj4gYVtpXTsKICAgIGludCBteGggPSAwOwogICAgZm9yIChpbnQgaT0xO2k8PW47KytpKXsKICAgICAgICBpbnQgeCA9IGJpbmFyeSgxICwgbXhoICwgYVtpXSk7CiAgICAgICAgaWYgKHggPT0gLTEpIHJlc1srK214aF0gPSBhW2ldOwogICAgICAgIGVsc2UgcmVzW3hdID0gbWluIChyZXNbeF0gLCBhW2ldKTsKICAgIH0KICAgIGNvdXQgPDwgbXhoOwp9Cg==