#!/usr/bin/python3 # nalezení nejdelší rostoucí podposloupnosti def nrp(krabice, n): #na indexu i se nachází délka nrp končící i-tou krabicí # na začátku vše inicializujeme na 1 nrp = [1]*n # nalezení délky nrp končící i-tou krabicí pro všechna i od 1 do n # pro počítání vyšších indexů se používají již spočítané hodnoty pro nižší indexy for i in range(1, n): for j in range(0, i): if krabice[i] > krabice[j] and nrp[i] < nrp[j] + 1: nrp[i] = nrp[j]+1 maximum = 0 # nalezení maxima for i in range(n): maximum = max(maximum, nrp[i]) return maximum n = int(input()) krabice = [] for i in range(n): krabice.append(int(input())) print(nrp(krabice, n))