n = int(input()) string = list(map(lambda x:int(x),input().strip().split(' ')))

def binsearch1(li, target): start = 0 end = li.len() - 1 res = None while start <= end: mid = (start + end) // 2 # if li[mid] == target: # return mid if li[mid] >= target: res = mid if res == 0: return res end = mid - 1 elif li[mid] < target: start = mid + 1

return res if res != None else -1

li = [] for i in range(n): if not li: li.append(string[i]) else: c = binsearch1(li, string[i]) if li[-1] <= string[i]: li.append(string[i]) else: li[c] = string[i] print(li.len())