n = int(input()) a = list(map(int, input().split())) INF=10**10 dp=[INF]*n import bisect for val in a: ind = bisect.bisect_left(dp,val) dp[ind]=val print(n-bisect.bisect_left(dp, 10**10))