<Problem>
http://ntucoder.net/Problem/Details/78
Uses Crt;
Var n,i,j:longint;
a,d,t:array[-100..100000] of longint;
Begin
readln(n);
for i:=1 to n do read(a[i]);
a[n+1]:=maxlongint; a[0]:=0;
d[n+1]:=1;
for i:=n downto 0 do
begin
for j:=i+1 to n+1 do
if (a[i]<a[j]) and (d[i]<d[j]+1) then
begin
d[i]:=d[j]+1;
T[i]:=j;
end;
end;
writeln(d[0]-2);
i:=0;
while i<n do
begin
write(a[T[i]],' ');
i:=T[i];
end;
readln;
End.