program tehtava116(input, output);

type osoitin = ^tietue;
     tietue  = record
                 tieto : integer;
                 linkki: osoitin
               end;

var esimlista, p: osoitin;
    luku: integer;

procedure Jarjesta(lista: osoitin);
   {Tämä versio ei muuta linkkejä vaan vaihtaa vain tietosisällöt!
    Tätä voi käyttää, JOS LISTAN ALKIOIHIN EI OLE MUITA OSOITTIMIA!}
  var p, q: osoitin;
      apu: integer;
begin
  if lista <> nil then 
    begin
      p := lista;
      while p^.linkki <> nil do {käydään läpi muut, paitsi viimeinen}
        begin
          q := p^.linkki;
          while q <> nil do {käydään läpi loppuosa p:stä eteenpäin}
            begin
              if p^.tieto > q^.tieto then
                begin
                  apu := p^.tieto;
                  p^.tieto := q^.tieto;
                  q^.tieto := apu;
                end;
              q := q^.linkki;
            end;
          p := p^.linkki;
        end;
     end;
end;

begin {testipääohjelma}
  writeln('Anna kokonaislukuja, nolla lopettaa.');
  esimlista := nil;
  read(luku);
  while luku <> 0 do
    begin
      new(p);
      p^.tieto := luku;
      p^.linkki := esimlista;
      esimlista := p;
      read(luku);
    end;

  Jarjesta(esimlista);

  p := esimlista;
  while p <> nil do
    begin 
      write(p^.tieto:1, ' ');
      p := p^.linkki;
    end;
  writeln;
end.


