program sklypas;
  { 48 u‘davinys }
  const M = 1000;  { maksimalus skirting— atsakym— skai‡ius }
  type masyvas = array [1..M] of integer;

  procedure sklyp (n : integer;
                     var plotas : masyvas; { skirting— sklypo plot—
                                             s…ražas }
                     var kiek : integer { skirting— atvej— skai‡ius });
   var p,  { pastato plotis }
       i,  { pastato ilgis }
       apat, virs,  { ilgio intervalo r‚‘iai }
       s,  { sklypo plotas }
       j : integer;
       rasta : boolean;
 begin
   kiek := 0;
   for p := 1 to n div 2 + 1 do
     { jei p >= n div 2 + 1, pastato plotis tikrai }
     { viržija jo ilg }
     begin
       if n mod p = 0    { randame sklypo ilgio intervalo r‚‘ius }
          then apat := n div p
          else apat := n div p + 1;
       virs := n - p + 1;
       for i := apat to virs do
         begin
           s := (i + 2) * (p + 2);  { suskai‡iuojame pastato plot… }
           { tikrinsime, ar toks dar nebuvo rastas }
           rasta := false;
           for j := 1 to kiek do
             if plotas[j] = s
                then rasta := true;
           { jei nerasta, traukiame  s…raž… }
           if not rasta
              then begin
                     kiek := kiek + 1;
                     plotas [kiek] := s;
                   end;
         end;
      end;
 end;

  var n, kiek, i : integer;
      plotas : masyvas;
      f : text;
      v : string;
begin
  readln (n);
  sklyp (n, plotas, kiek);
  write ('­veskite rezultat— bylos vard…: ');
  readln (v);
  assign (f, v);
  rewrite (f);
  for i := 1 to kiek do
    write (f, plotas[i], ' ');
  close (f);
end.


