import sys
import bisect
def long_sub(n,lis):
    tails = []  
    for num in lis: 
        idx = bisect.bisect_right(tails, num)
        if idx == len(tails):
            tails.append(num)  
        else:
            tails[idx] = num   
    return len(tails)  
def main():
    n=int(sys.stdin.readline())
    lis=list(map(int,sys.stdin.readline().split()))
    res=long_sub(n,lis)
    print(res)
if __name__=="__main__":
    main()