var
a,f:array[1..1000]of longint;
i,j,n,big,p:longint;
function max(a,b:longint):longint;
begin
if a<b then exit(b);
exit(a);
end;
begin
read(n);
for i:=1to n do
read(a[i]);
f[n]:=1;
for i:=n-1 downto 1 do
begin
p:=1;
for j:=i+1 to n do
if (a[i]<a[j])and(f[j]+1>p) then
p:=f[j]+1;
f[i]:=p;
end;
for i:=1 to n do
if f[i]>big then big:=f[i];
write(big);
end.