
{$M 65520,0,655360}


program prezidentas;
  const PR = 'PREZID.DAT';
        RZ = 'PREZID.REZ';
        MAX_D = 15000; { maksimalus dien— skai‡ius }
        MIN_R = -100;  { ma‘iausias manomas reitingas }
  type lentele = array [0..MAX_D] of integer;

  { ‘emiau apražyti globalieji kintamieji }
  var n: integer;       { duotosios sekos ilgis }
      X,                { duotoji seka }
      Z: lentele;       { rastasis posekis  }
      max_ilg: integer; { jo ilgis }

  procedure sudaryti_seka;
    { Dinaminio programavimo metodu randa ilgiausi… nema‘‚j…nt
      duotosios sekos posek }
     var c, a: lentele;
         ilgis, i, j: integer;
  begin
    max_ilg := 0;        { ilgiausio rastojo posekio ilgis }
    X[0] := MIN_R; { fiktyvus duotosios sekos narys }
    c[0] := 0;
    for i := 1 to n do
      begin
        { iežkome ilgiausio posekio prie kurio galima "prilipdyti"
          i-…j sekos nar }
        ilgis := max_ilg; { bandysime jungti prie rastojo ilgiausio posekio }
        while (X[c[ilgis]] > X[i]) and (ilgis > 0) do
          ilgis := ilgis - 1;
        if  ilgis = max_ilg { jei pavyko prijungti prie ilgiausio posekio }
                { c[x] = y; x - ilgis; y - nario nr }
          then begin
                 a[i] := c[max_ilg];
                 max_ilg := max_ilg + 1;
                 c[max_ilg] := i;
               end
          else begin { jei prijungiame prie ne paties ilgiausio posekio }
                if X[i] <= X[c[ilgis+1]]
                   then c[ilgis+1] := i;
                a[i] := c[ilgis];
               end;
      end;
      { suformuojamas rezultatas }
      i := c[max_ilg]; { paskutiniojo posekio nario numeris sekoje }
      for j := max_ilg downto 1 do
        begin
          Z[j] := i;
          i := a[i]
        end;
  end; { sudaryti_sek… }

  var f: text;
      i: integer;
begin
  assign (f, PR);
  reset (f);
  readln (f, n);
  for i := 1 to n do
    readln (f, X[i]);
  close (f);
  sudaryti_seka;
  assign (f, RZ);
  rewrite (f);
  writeln (f, max_ilg);
  for i := 1 to max_ilg do
    writeln (f, Z[i]);
  close (f)
end.