{
TASK:VAIKAIV
LANG:PASCAL
}

// II etapas. Vyresni. 3-as uzdavinys
{ Naujas vaikas stoja eiles gale.
  Vyksta skaiciavimas.
  Naujas vaikas turejo stoti paskutinio likusio vietoje
}
program VaikaiVyresni2;
const CDuom = 'VAIKAI.IN';
      CRez  = 'VAIKAI.OUT';
const Cn = 25;
type  TMas = array[1..Cn] of integer;
      TM1  = array[1..Cn] of boolean;
var A : TMas;
    B : TM1;
    n : integer;
    k : integer;
    nr : integer;
//-------------------------------------
function KiekZodziu(var fd : text; e : integer): integer;
var eil : string;  i, j, kiek : integer;
begin
 kiek :=0;
 for i := 1 to e do begin
  ReadLn(fd, eil);
  eil := ' ' + eil;
  for j := 1 to Length(eil) -1 do
    if (eil[j] = ' ') and (eil[j+1] <> ' ')
    then kiek := kiek + 1;
 end;
 KiekZodziu := kiek;
end;
//-------------------------------------
procedure Duomenys;
var fd : text;  i : integer;
begin
  Assign(fd, CDuom); Reset(fd);
  ReadLn(fd, n, k, nr);
  for i := 1 to n do Read(fd, A[i]);
  ReadLn(fd);
  k := KiekZodziu(fd, k);
  Close(fd);
end;
//-------------------------------------
procedure Skaiciuote;
var nn, zd, i, p : integer;
begin
 for i := 1 to n do B[i] := TRUE;
 nn := n;  i := 1;
 while nn > 1 do begin // Skaicuoti, kol dar yra bent du vaikai
   zd := k;
   while zd > 0 do begin  // Viena skaiciuote
     if B[i] then begin
                       zd := zd - 1; p := i;

                 end;
     if i < n then i := i + 1
               else i := 1;
   end;
   B[p] := FALSE;
   nn := nn - 1;
 end;
end;
//--------------------------------------
procedure Rezultatas;
var fr : text;  i : integer;
begin
    Assign(fr, CRez); Rewrite(fr);
    for i := 1 to n - 1 do
      if B[i] then Write(fr, A[n], ' ', A[i], ' ')
      else Write(fr, A[i], ' ');
    Close(fr);
end;
//--------------------------------------
begin
  Duomenys;
  n := n + 1;
  A[n] := nr; // Naujas vaikas gale eiles
  Skaiciuote;
  Rezultatas;
end.
