#include <stdio.h>
int main()
{
int num;
int step[200];
int max_step = 1;
int dp[300] = {0};
memset(step, 0, sizeof(int) * 200);
if(scanf("%d", &num) != EOF)
{
for(int i = 0; i < num; i++ )
{
scanf("%d", &step[i]);
}
}
dp[0] = 1;
for(int i = 1; i < num; i++)
{
int maxval = 0;
for(int j = 0; j < i; j++)
{
/* 当前桩比它前面的桩大,则踩它 */
if(step[i] > step[j])
{
/* 踩此桩和踩其他桩,谁大踩谁 */
maxval = maxval > (dp[j]) ? maxval : dp[j];
}
}
/* 当前桩步数加1 */
dp[i] = maxval+1;
/* 和最大步数比较 ,取最大值 */
max_step = (max_step > dp[i]) ? max_step : dp[i];
}
printf("%d\n", max_step);
return 0;
}