#include <iostream>
using namespace std;
int d[2000];
int main()
{
int n;
while(cin >> n)
{
d[1]=1e8;
int m=1;
int x,j;
for(int i=1;i<=n;i++)
{
cin >> x;
for(j=1;j<=m;j++)
{
if(x<d[j])
{
d[j]=x;
break;
}
}
if(j>m) d[++m]=x;
}
cout << m << endl;
}
return 0;
}
d[i]表示第i套拦截系统目前能达到的最大高度,m表示系统数,输入便开始处理,输入后找到能处理这颗炮弹的系统,然后更新最小值即可,如果找不到,++m来增加一套系统。