#include<stdio.h>
int main(){
int dp[101010],n,i,a[101010],max,min,mid;
for(i=0;i<100010;i++){
dp[i]=1000000010;
}
scanf("%d\n",&n);
for(i=0;i<n;i++){
scanf("%d\n",&a[i]);
}
for(i=0;i<n;i++){
max=100005,min=0;
mid=(max+min)/2;
while(min<max){
if(dp[mid]==a[i]){
break;
}
else if(dp[mid]>a[i]){
max=mid;
}
else{
min=mid+1;
}
mid=(max+min)/2;
}
dp[mid]=a[i];
}
for(i=0;i<100005;i++){
if(dp[i]==1000000010){
printf("%d\n",i);
break;
}
}
return 0;
}
