#include<iostream>
#include<cstring>
using namespace std;
int main(){
int a[10001],b[10001];
int n,j;
while(cin>>n){
memset(a,0,sizeof(a)); memset(b,0,sizeof(b));
int k = 0;
cin>>a[0];
b[k] = a[0];
for(int i = 1;i<n;++i){
cin>>a[i];
for( j = 0;j<=k;++j){
if(b[j] > a[i]){
b[j] = a[i];
break;
}
}
if(j > k){
b[++k] = a[i];
}
}
cout<<++k<<endl;
}
return 0;
}
#include<cstring>
using namespace std;
int main(){
int a[10001],b[10001];
int n,j;
while(cin>>n){
memset(a,0,sizeof(a)); memset(b,0,sizeof(b));
int k = 0;
cin>>a[0];
b[k] = a[0];
for(int i = 1;i<n;++i){
cin>>a[i];
for( j = 0;j<=k;++j){
if(b[j] > a[i]){
b[j] = a[i];
break;
}
}
if(j > k){
b[++k] = a[i];
}
}
cout<<++k<<endl;
}
return 0;
}