program vlapelp;

 const maxN=10000;

 var lapeliai : array[1..2,1..maxN] of integer; { Galimi du variantai }
     eksperimentas : array[1..4,1..maxN] of integer;
     paskutinieji  : array[1..2] of integer;
     N             :integer;
     kuris         : 1..2;
     korektiskas1,korektiskas2    : boolean;

 procedure Pradedame;
  var i:integer;
      f:text;

 begin
  { Nuliai... }
  for i:=1 to maxN do
  begin
   lapeliai[1,i]:=0;
   lapeliai[2,i]:=0;
  end;
  { Skaitome }
  assign(f,'LAPELIAI.DAT');
  reset(f);
  readln(f,N);
  for i:=1 to N-2 do
    readln(f,eksperimentas[1,i],
             eksperimentas[2,i],
             eksperimentas[3,i],
             eksperimentas[4,i]);

  readln(f,eksperimentas[1,N-1]);
  readln(f,eksperimentas[1,N]);
  close(f);

  { Kokie lapeliai liko }
  paskutinieji[1]:=eksperimentas[2,N-2];
  paskutinieji[2]:=eksperimentas[3,N-2];

 end;

 procedure Skaiciuojame;
  var i,a,b:integer;
      radome:boolean;

  function RaskKitus(a,b,kuri:integer):boolean;

    var i:integer;
    begin
     lapeliai[kuri,paskutinieji[1]]:=a;
     lapeliai[kuri,paskutinieji[2]]:=b;
     for i:=N-2 downto 1 do begin
      lapeliai[kuri,eksperimentas[1,i]]:=
                  eksperimentas[4,i]-
                  lapeliai[kuri,eksperimentas[3,i]]-
                  lapeliai[kuri,eksperimentas[2,i]];


      if (lapeliai[kuri,eksperimentas[1,i]]<1) or
         (lapeliai[kuri,eksperimentas[1,i]]>100)
          then begin
          RaskKitus:=false;
          exit;
          end;
     end;
     RaskKitus:=true;

    end;

 begin
  i:=1;
  radome:=false;
  while (i<=100) and not(radome)  do
  begin
   if (eksperimentas[1,N-1] mod i) = 0
     then  begin
      a:=i;
      b:=eksperimentas[1,N-1] div i; { Antras ? }
      if (a+b) = eksperimentas[1,N] then radome:=true;
     end;
     inc(i);
   end;

   if a=b then begin
                RaskKitus(a,b,1);
                kuris:=1;
{                writeln(' ====== ');}
               end
          else begin
                 korektiskas1:=RaskKitus(a,b,1);
{                 if not korektiskas1 then writeln('Gerai');}
                 korektiskas2:=RaskKitus(b,a,2);
                 if (korektiskas1 and
                     korektiskas2 and
                    (lapeliai[1,1]<=lapeliai[2,1]))
                    or not korektiskas2
                    then kuris:=1;

                 if (korektiskas1 and
                     korektiskas2 and
                    (lapeliai[1,1]>lapeliai[2,1]))
                    or not korektiskas1
                    then kuris:=2;

               end;



 end;


 procedure Rezultatai;
  var i:integer;
      f:text;
  begin
     assign(f,'LAPELIAI.REZ');
     rewrite(f);
     for i:=1 to N do
      writeln(f,lapeliai[kuris,i]);
     close(f);
  end;

  begin
   Pradedame;
   Skaiciuojame;
   Rezultatai;
  end.
