N = gets.chomp.to_i
dp = []
last = -1
ans = 1
current = 1
N.times do |i|
    if dp.empty?
        dp << gets.chomp.to_i 
        next
    elsif (a = gets.chomp.to_i) <= dp[-1]
        dp << a
    else
        dp[dp.bsearch_index{|val| val < a}] = a
    end
end
puts dp.size