N = int(input())
A = list(map(int, input().split()))
dp = [1] * N
for i in range(1, N):
for j in range(i):
if A[j] > A[i]:
dp[i] = max(dp[i], dp[j] + 1)
print(dp[N-1]) # 이부분이 틀렸음 . . 관성적으로 작성한 ..!!
'''
입: 1~1,000
알: dp. O(N3)까지
엣: 1 체크 완, 2 체크 완
'''
import sys
input = sys.stdin.readline
N = int(input())
A = list(map(int, input().split()))
dp = [1] * N
for i in range(1, N):
for j in range(i):
if A[j] > A[i]:
dp[i] = max(dp[i], dp[j] + 1)
print(max(dp))