#include"stdio.h"
int n,dis[100000],max,dp[100000];
void DP()
{
for(int i=1;i<=n;++i)
{
dp[i]=1;
for(int j=1;j<i;++j)
if(dis[i]>dis[j]&&dp[j]+1>dp[i])
dp[i]=dp[j]+1;
if(dp[i]>dp[max])
max=i;
}
}
int main()
{
int t;
while(scanf("%d",&n)!=EOF)
{
max=0;
dis[0]=dp[0]=0;
for(int i=1;i<=n;++i)
scanf("%d",&dis[i]);
DP();
printf("%d\n",dp[max]);
}
return 0;
}