 program skaiciai_ant_lapeliu;

{
     Idėja.Pradžioje  surandame paskutiniųjų  dviejų  lapelių  numerius.Toliau
  iš  to  fakto , kad  skaičiai ant  lapelių   turi  būti  nuo 1 iki 100,
  yra  lengva sužinoti skaičių reikšmes  ant  tų  lapelių.Iš  gautų  reikšmių
  toliau lengva  sužinoti skaičių ant paskutiniojo pašalinto lapelio, toliau -
  skaičių ant prieš  tai  pašalinto  lapelio ir t.t...
      Galimi tokie  variantai.
      1. Skaičiai   ant  paskutiniųjų  lapelių  sutampa - tada turime vieninte-
  lį variantą skaičiams ant  kitų  lapelių  surasti;
      2. Skaičiai   ant  paskutiniųjų  lapelių  nesutampa - tada turime du
  variantus. Tarkime,  pirmo likusio lapelio  numeris yra  i, antro - j.Tada,
  jeigu a ir b yra  skaičiai, kuriuos reikia  užrašyti  ant  tų  lapelių, tai
  galime ant i-tojo  lapleio  rašyti a, o  ant j-tojo  lapelio - b ( pirmas
  variantas), arba ant i-tojo  lapleio  rašyti b,o  ant j-tojo  lapelio - a
  ( antras variantas ).Jeigu abiejais atvėjais gauname korektiškas  reikšmes
  (iš  intervalo [1,100]) ant  kitų  lapelių,tai  parenkame tą , kuriam esant
  reikšmė ant 1-jo lapelio yra mažesnė , preišingu  atvėju  reikia  rinktis
  varianto, kuriame visos reikšmės korektiškos  - jis  visada egzistuoja, jeigu
  tik pradiniai  duomenys korektiški.

 }


 const maxN=10000;

 var lapeliai      : array[1..2,1..maxN] of integer; { Galimi du variantai }
     eksperimentas : array[1..3,1..maxN-2] of integer;
     paskutinieji  : array[1..2] of integer;
     N             : integer;
     kuris         : 1..2;
     korektiskas1,korektiskas2    : boolean;

 procedure Pradedame;
  var i:integer;
      f:text;
      pasalinti:array[1..maxN] of boolean;

 begin
  { Nuliai... }
  for i:=1 to maxN do
  begin
   lapeliai[1,i]:=0;
   lapeliai[2,i]:=0;
   pasalinti[i]:=false;
  end;
  { Skaitome }
  assign(f,'LAPELIAI.DAT');
  reset(f);
  readln(f,N);
  for i:=1 to N-2 do begin
    readln(f,eksperimentas[1,i],
             eksperimentas[2,i],
             eksperimentas[3,i]
           );
    pasalinti[eksperimentas[1,i]]:=true;
  end;
  readln(f,eksperimentas[1,N-1]);
  readln(f,eksperimentas[1,N]);
  close(f);

  { Kokie lapeliai liko }
  paskutinieji[1]:=eksperimentas[2,N-2];
  pasalinti[paskutinieji[1]]:=true;
  i:=1;
  while pasalinti[i] do inc(i);
  paskutinieji[2]:=i;

 end;

 procedure Skaiciuojame;
  var i,a,b,kuri: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[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;
               end
          else begin
                 korektiskas1:=RaskKitus(a,b,1);
                 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.