{
TASK:PAKYLA
LANG:PASCAL
}
program pakyla;
  const PR = 'pakyla10.dat';
        RZ = 'pakyla10.re';
        MAX = 2*100; { maksimalus sekos ilgis }

  type seka = array [1..MAX] of integer;

  { žemiau aprašyti globalieji kintamieji }
  var f: text;
      S: seka;
      P, H, V: integer;

  procedure spausdinti;
    var i: integer;
  begin
    for i := 1 to 2*H do
      write (f, S[i], ' ');
    writeln (f);
  end; { spausdinti }

  procedure generuoti (nr: integer);
    { generuoja sekos narį, kurio numeris nr }
    var pl: integer;
  begin
    if nr = 2*H { paskutinysis narys sugeneruotas iš anksto }
       then spausdinti
    else if nr = H+1 { jei tai pakopos viršūnė, jos plotis fiksuotas }
       then begin
               S[nr] := S[nr-1]+V;
               generuoti (nr+1);
            end
    else for pl := S[nr-1]+1 to P-(2*H-nr) do
              begin
                S[nr] := pl;
                generuoti (nr+1);
              end;
  end; { generuoti }

begin
   { skaitomi duomenys }
   assign (f, PR);
   reset (f);
   readln (f, P, H, V);
   close (f);
   { paruošiama rašymui }
   assign (f, RZ);
   rewrite (f);
   { sprendžiamas uždavinys }
   if (P+1 >=2*H+(V-1)) and not ((H=1) and (V<>P)){ jei sprendinys egzistuoja }
      then begin
             S[1] := 0; S[2*H] := P;
             generuoti (2);
           end
      else writeln (f, -1);
   close (f);
end.
