//LIS no recursive
#include<bits/stdc++.h>
using namespace std;
//#define LOCAL
#define cls ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define Mod 998244353
#define ll long long int
#define sf scanf
#define pf printf
#define rep(i,a,b) for(int i=a;i<b;i++)
#define dec(i,a,b) for(int i=b;i>=a;i--)
#define mset(a,b) memset(a,b,sizeof(a))
const int maxn=2333;
int a[maxn];
int LIS(int a[],int n){
int lis[n];
lis[0]=1;
for(int i=1;i<n;i++){
lis[i]=1;
for(int j=0;j<i;j++){
if(a[i]>a[j]&&lis[i]<lis[j]+1){
lis[i]=lis[j]+1;
}
}
}
return *max_element(lis,lis+n);
}
int main() {
#ifdef LOCAL
freopen("in.in","r",stdin);
#endif // LOCAL
cls;
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
cout<<LIS(a,n)<<endl;
return 0;
}
Ly9MSVMgbm8gcmVjdXJzaXZlCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vI2RlZmluZSBMT0NBTAojZGVmaW5lIGNscyBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksY2luLnRpZSgwKSxjb3V0LnRpZSgwKQojZGVmaW5lIE1vZCA5OTgyNDQzNTMKI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgc2Ygc2NhbmYKI2RlZmluZSBwZiBwcmludGYKI2RlZmluZSByZXAoaSxhLGIpIGZvcihpbnQgaT1hO2k8YjtpKyspCiNkZWZpbmUgZGVjKGksYSxiKSBmb3IoaW50IGk9YjtpPj1hO2ktLSkKI2RlZmluZSBtc2V0KGEsYikgbWVtc2V0KGEsYixzaXplb2YoYSkpCmNvbnN0IGludCBtYXhuPTIzMzM7CmludCBhW21heG5dOwppbnQgTElTKGludCBhW10saW50IG4pewogICAgaW50IGxpc1tuXTsKICAgIGxpc1swXT0xOwogICAgZm9yKGludCBpPTE7aTxuO2krKyl7CiAgICAgICAgbGlzW2ldPTE7CiAgICAgICAgZm9yKGludCBqPTA7ajxpO2orKyl7CiAgICAgICAgICAgIGlmKGFbaV0+YVtqXSYmbGlzW2ldPGxpc1tqXSsxKXsKICAgICAgICAgICAgICAgIGxpc1tpXT1saXNbal0rMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAqbWF4X2VsZW1lbnQobGlzLGxpcytuKTsKfQppbnQgbWFpbigpIHsKI2lmZGVmIExPQ0FMCiAgICBmcmVvcGVuKCJpbi5pbiIsInIiLHN0ZGluKTsKI2VuZGlmIC8vIExPQ0FMCiAgICBjbHM7CiAgICBpbnQgbjsKICAgIGNpbj4+bjsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgIGNpbj4+YVtpXTsKICAgIH0KICAgIGNvdXQ8PExJUyhhLG4pPDxlbmRsOwoJcmV0dXJuIDA7Cn0K