#include <bits/stdc++.h>
using namespace std;
const int N = 100;
const int D = N * N + 10;
bool dp[N + 1][2 * D];
int pre[N + 1][2 * D];
vector<int> getPath(int j, int n) {
  vector<int> ret;
  int i = n;
  while (1) {
    int preJ = pre[i][j];
    ret.push_back(abs(j - preJ));
    j = preJ;
    i--;
    if (i == 0) break;
  }
  reverse((ret).begin(), (ret).end());
  return ret;
}
int main() {
  int n, d, l;
  while (cin >> n >> d >> l) {
    dp[0][D] = true;
    ;
    for (int i = 0; i < (int)n; i++) {
      for (int j = 0; j < (int)2 * D; j++) {
        if (!dp[i][j]) continue;
        int now = j - D;
        for (int k = 1; k < (int)l + 1; k++) {
          int next = now;
          if (i % 2 == 0)
            next += k;
          else
            next -= k;
          pre[i + 1][next + D] = j;
          dp[i + 1][next + D] = true;
        }
      }
    }
    if (!dp[n][d + D]) {
      cout << -1 << endl;
      return 0;
    }
    vector<int> res = getPath(d + D, n);
    for (int i = 0; i < (int)res.size(); i++) {
      if (i != 0) cout << ' ';
      cout << res[i];
    }
    cout << endl;
    return 0;
  }
  return 0;
}
