from bisect import * N = int(input()) a = list(map(int, input().split())) dp = [10**18] * N for ai in a: i = bisect_left(dp, ai) dp[i] = min(dp[i], ai) res = N - bisect_left(dp, 10**18) print(res)