/*
若N个数 为递增序列
则最多需要N个导弹系统
贪心 + DP 见注释
*/
#include <stdio.h>
#define MAX 100000
int height[MAX]; //height[i]表示第i个防导弹系统所能防御的最大高度
int t; //t个数
int high; //height[i]中 最高高度 的 下标
int a[MAX];
int main(){
int i,j; //j 导弹系统个数
while(scanf("%d",&t)!= EOF){
scanf("%d",&a[0]);
height[0] = a[0];
high = 0;
j = 1;
for(i = 1; i < t; i++){
scanf("%d",&a[i]);
if(a[i] >= height[high]){
height[j++] = a[i];
if(height[j - 1] > height[high]){ //更新high值
high = j - 1;
}
} else { //贪心选择高度最小的且比能够抵抗住a[i]的导弹
int k,min = 0X7FFFFFFF,min_index;
for(k = 0; k < j; k++){
if(height[k] >= a[i] && min > height[k] - a[i]){
min = height[k] - a[i];
min_index = k;
}
}
height[min_index] = a[i];
}
}
printf("%d\n",j);
}
return 0;
}