#别人的算法,动态规划问题,要好好学习
#本题:寻找最长的递增子序列的长度
#输入
n=int(input())
l=[int(x) for x in input().strip().split()]

#动态规划问题
#这道题用动态规划最合适,而且要从右往左走开始计算比当前l[i]
#大于的l[j](需有l[j]开始结算有多个比其大的值有多少个),比较
#公式即为max(dp[i],dp[j]+1)

dp = [1]*n
for i in range(n)[::-1]:
    for j in range(i+1,n):
        if l[j]>l[i]:
            dp[i] = max(dp[i],dp[j]+1)

#输出
print(max(dp))