#include<iostream>
#include<cstring>
using namespace std;
long long num[100001],b[100001],dp[100001],maxn=-1;
int e=1;
void f(){
maxn=-1;
memset(dp,0,sizeof(dp));
for(int t=e;t>=1;t--){
if(num[t]!=0){
for(int u=e;u>=t+1;u--){
if(num[t]>=num[u]){
if(dp[t]<dp[u]+1){
dp[t]=dp[u]+1;
}
}
}
if(dp[t]==0) dp[t]++;
if(dp[t]>maxn){
maxn=dp[t];
}
}
}
cout<<maxn<<endl;
}
int main(){
int sum=0;
while(cin>>num[e]) e++;
f();
int p=0;
for(int i=1;i<=e;i++){
p=0;
for(int j=1;j<=sum;j++){
if(num[i]<=b[j]){
b[j]=num[i];
p=1;
break;
}
}
if(p==0){
sum++;
b[sum]=num[i];
}
}
cout<<sum;
return 0;
}