program vaikai;

  const PRF = 'VAIKAI.s03.IN';
        RZF = 'VAIKAI.OUT';
        MAX = 1000;
  type Tmasyvas = array [1..MAX] of integer;
       Tlmasyvas = array [1..MAX] of boolean;
  
  function kitas (i, V: integer): integer;
  begin
    if i < V then i := i + 1
             else i := 1;
    kitas := i;
  end;
  
  function vieta (N, K, naujas: integer): integer;
  // Turime n+1 vaiką išsiaiškinsime, kuris liks neiškritęs
    var V, i, j, vaikas: integer;
        liko: Tlmasyvas;
  begin
    V := N + 1;
    for i := 1 to V do
      liko[i] := true;

    vaikas := 1; //pradėsime skaičiuotę nuo 1-mo vaiko
    for i := 1 to N do begin// N kartų išskaičiuosime
      j := 0;
      while j < K do begin
         if liko[vaikas] then j := j + 1;
         if j < K then vaikas := kitas (vaikas, V);
      end;
      liko[vaikas] := false;
      vaikas := kitas(vaikas, V);
    end;
    // rasime neiškritusį vaiką
    for i := 1 to V do
      if liko[i] then vieta := i;
  end;      
  
  procedure skaityti (var N, K, naujas: integer; var eile: Tmasyvas);
    var f: text;
        i: integer;
  begin
    assign (f, PRF);
    reset (f);
    readln (f, N, K, naujas);
    for i := 1 to N do
      read (f, eile[i]);
    close (f);  
  end;
  
  procedure rasyti (N, naujas, nr: integer; var eile: Tmasyvas);
    var i: integer;
         f: text;
  begin
    assign (f, RZF);
    rewrite (f);
    for i := 1 to nr-1 do
      write (eile[i], ' ');
    write (naujas, ' ');
    for i := nr to N do
      write (eile[i], ' ');
    close (f);  
  end;
  
  var N, K, naujas, nr: integer;
      eile: Tmasyvas;
begin
  skaityti (N, K, naujas, eile);
  nr := vieta (N, K, naujas);
  rasyti (N, naujas, nr, eile);
  readln;
end.