#include <bits/stdc++.h>
using namespace std;
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  long long n, d, l;
  vector<long long> ans;
  cin >> n >> d >> l;
  if (l == 1) {
    if (n & 1) {
      if (d != 1)
        cout << "-1";
      else
        for (long long i = 0; i < n; i++) cout << "1 ";
      cout << endl;
    } else {
      if (d != 0)
        cout << "-1";
      else
        for (long long i = 0; i < n; i++) cout << "1 ";
      cout << endl;
    }
    return 0;
  }
  if (n == 1) {
    if (d > 0 and d <= l)
      cout << d;
    else
      cout << -1;
    cout << endl;
    return 0;
  }
  while (d != 0 and n > 1) {
    if (d >= l - 1) {
      ans.push_back(l);
      ans.push_back(1);
      d -= l - 1;
      n -= 2;
    } else if (d <= 1 - l) {
      ans.push_back(1);
      ans.push_back(l);
      d += l - 1;
      n -= 2;
    } else if (d > 0) {
      ans.push_back(d + 1);
      ans.push_back(1);
      d -= d;
      n -= 2;
    } else {
      ans.push_back(1);
      ans.push_back(-d + 1);
      d -= d;
      n -= 2;
    }
  }
  if (d and n) {
    if (d > l or d < 0) {
      cout << "-1\n";
      return 0;
    }
    ans.push_back(d);
    n--;
    d -= d;
  }
  if (d) {
    cout << "-1\n";
    return 0;
  }
  while (n > 1) {
    ans.push_back(1);
    ans.push_back(1);
    n -= 2;
  }
  if (n) {
    ans.push_back(1);
    bool found = false;
    for (long long i = 1; i < (long long)ans.size(); i += 2) {
      if (ans[i] < l) {
        ans[i]++;
        found = true;
        break;
      }
    }
    if (!found) {
      for (long long i = 0; i < (long long)ans.size(); i += 2) {
        if (ans[i] > 1) {
          ans[i]--;
          found = true;
          break;
        }
      }
    }
    if (!found) {
      cout << "-1\n";
      return 0;
    }
  }
  for (long long x : ans) cout << x << " ";
  return 0;
}
