#include<cstdio>
#include<vector>
using namespace std;
int n,k,x,num,niz[1005],idx,cn,ck;
vector <int> vect;

void Subtask1() {
    if (n==3) printf("1 %d %d\n", 1+x, 1+x+x);
    else {
        printf("1 1 1 %d ", 1+x);
        for (int i=5;i<=n;i++) printf("2 ");
        printf("\n");
    }
}

void Subtask2() {
    if (k==0 || k==1 || k==2) printf("-1\n");
    else {
        printf("1 %d %d ", 1+x, 2+x+x);
        for (int i=4;i<=n;i++) printf("2 ");
        printf("\n");
    }
}

void ispis() {
    for (int i=0;i<vect.size();i++) printf("%d ", vect[i]);
    printf("\n");
}

void Subtask3() {
    if (2*k > n*(n-1)) printf("-1\n");
    else {
//        niz[1]=1;
//        for (int i=2;i<=n;i++) {
//            niz[i]=niz[i-1]+i;
//            if (k<=niz[i]) idx=i;
//        }

        num=999999;
        cn=n-1;
        ck=k;
        while (ck>=cn) {
            if (ck==0 && cn==0) break;
            vect.push_back(num);
            num-=x;
            ck-=cn;
            cn--;
        }

        cn++;

//        printf("cn:%d  ck:%d\n", cn, ck);
//        for (int i=0;i<vect.size();i++) printf("%d ", vect[i]);
//        printf("\n");
        /// cn - koliko mesta je ostalo
        /// ck - koliko k-ova je ostalo

        if (cn<=0) {
            ispis();
        }
        else if (ck>=3) {
            for (int i=1;i<=ck;i++) vect.push_back(1);
            vect.push_back(1+x);
            for (int i=1;i<=cn-ck-1;i++) vect.push_back(2);
            ispis();
        }
        else if (ck==2) {
            vect[0]=vect[1];
            ck++;

            if (cn==3) {
                vect.push_back(1);
                vect.push_back(1+x);
                vect.push_back(1+x+x);
                ispis();
            }
            else {
                for (int i=1;i<=ck;i++) vect.push_back(1);
                vect.push_back(1+x);
                for (int i=1;i<=cn-ck-1;i++) vect.push_back(2);
                ispis();
            }
        }
        else if (ck==1) {
            vect.push_back(x+1);
            vect.push_back(1);
            for (int i=1;i<=cn-2;i++) vect.push_back(2);
            ispis();
        }
        else if (ck==0) {
            for (int i=1;i<=cn;i++) vect.push_back(1);
            ispis();
        }




    }
}

int main() {
    scanf("%d %d %d", &n, &k, &x);

    if (n==1 && k==1) {
        printf("-1\n");
        return 0;
    }
    else if (n==1) {
        printf("1\n");
        return 0;
    }
    else if (n==2 && k==1) {
        printf("1 %d\n", 1+x);
        return 0;
    }

    if (k==3) Subtask1();
    else if (n==k) Subtask2();
    else Subtask3();

    return 0;
}