program scm;
type vektor=array[1..100000] of longint;
var i,j,n,max:longint;
v,os,hossz:vektor;
f,g:text;
procedure beolvas(var n:longint;var v:vektor);
begin
assign(f,'scmax.in');
reset(f);
readln(f,n);
for i:=1 to n do read(f,v[i]);
close(f);
end;
{foo}
begin
beolvas(n,v);
hossz[n]:=1;
os[n]:=0;
for i:=n-1 downto 1 do
begin
max:=0;
for j:=i+1 to n do
if v[i]<v[j] then begin if hossz[j]>max then begin os[i]:=j; max:=hossz[j]; end;
hossz[i]:=max+1; end;
end;
max:=1;
for i:=1 to n do
if hossz[i]>max then max:=i;
assign(g,'scmax.out');
rewrite(g);
writeln(g,hossz[max]);
for i:=1 to hossz[max] do begin
write(g,v[max],' ');
max:=os[max];
end;
close(g);
end.