program lygtis;
  { 65 u‘davinys }
  const p = 8; { pradini— duomen— rinkini— skai‡ius }
        maxn = 50; { maksimalus lygties laipsnis }
  type mas = array [0..maxn] of integer;

  procedure spresti (n : integer; { lygties laipsnis }
                     a : mas; { jos koeficientai }
                     var spr : mas; { lygties sprendiniai }
                     var kiek : integer { j— skai‡ius });
    { randa sveikuosius lygties sprendinius }
    var i, j, rez, x : integer;
  begin
    kiek := 0; { dar nerasta nei vieno sprendinio }
    { patikrinsime, ar nulis yra lygties sprendinys }
    i := 0;
    while a[i] = 0 do
      i := i + 1;
    if i <> 0
       then begin      { suma‘insime lygties laipsn }
               kiek := kiek + 1;
               spr [kiek] := 0;
              for j := 0 to n - i do
                a[j] := a[j + i];
              n := n - i;
            end;

    { iežkosime kit— lygties sprendini— }
    for x := -abs (a[0]) to abs (a[0]) do
      begin { tikrinsime, ar x - lygties sprendinys }
        rez := a[n];
        for i := n - 1 downto 0 do
          rez := rez * x + a[i];
        if rez = 0
           then begin
                  kiek := kiek + 1;
                  spr[kiek] := x
                 end;
      end;
  end;

  var f : text;
      i, j, n, kiek : integer;
      spr, a : mas;
begin
  assign (f, 'lyg.dat');
  reset (f);
  for i := 1 to p do
    begin
      { skaitomi duomenys }
      read (f, n);
      for j := n downto 0 do
        read (f, a[j]);
      { sprend‘iama lygtis }
      spresti (n, a, spr, kiek);
      { spausdinami rezultatai }
      if kiek = 0
         then writeln ('SPRENDINI§ NRA')
         else for j := 1 to kiek do
                write (spr[j], ' ');
      writeln;
      readln (f);
    end;
  close (f);
end.