#include <iostream>
#include <cstring>
using namespace std;
int N[40001];
int cache[40001];
int main(void)
{
int code;
cin>>code;
for(int i = 1; i<=code; i++)
cin>>N[i];
int result = 0;
memset(cache, -1, sizeof(cache));
for(int i = 1; i<=code; i++)
{
if(cache[i] != -1) continue;
cache[i] = 1;
for(int j = i; j>=1; j--)
{
if(N[i] > N[j] && cache[i] < cache[j] +1){
cache[i] = cache[j] + 1;
if(result < cache[i]) result = cache[i];
}
}
}
cout<<result<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgTls0MDAwMV07CmludCBjYWNoZVs0MDAwMV07CmludCBtYWluKHZvaWQpCnsKCWludCBjb2RlOwoJY2luPj5jb2RlOwoJZm9yKGludCBpID0gMTsgaTw9Y29kZTsgaSsrKQoJCWNpbj4+TltpXTsKCglpbnQgcmVzdWx0ID0gMDsKCW1lbXNldChjYWNoZSwgLTEsIHNpemVvZihjYWNoZSkpOwoJZm9yKGludCBpID0gMTsgaTw9Y29kZTsgaSsrKQoJewoJCWlmKGNhY2hlW2ldICE9IC0xKSBjb250aW51ZTsKCQljYWNoZVtpXSA9IDE7CgkJZm9yKGludCBqID0gaTsgaj49MTsgai0tKQoJCXsKCQkJaWYoTltpXSA+IE5bal0gJiYgY2FjaGVbaV0gPCBjYWNoZVtqXSArMSl7CgkJCQljYWNoZVtpXSA9IGNhY2hlW2pdICsgMTsKCQkJCWlmKHJlc3VsdCA8IGNhY2hlW2ldKSByZXN1bHQgPSBjYWNoZVtpXTsKCQkJfQoJCX0KCX0KCgljb3V0PDxyZXN1bHQ8PGVuZGw7CglyZXR1cm4gMDsKfQ==