#include <bits/stdc++.h>
using namespace std;
inline void wait(double seconds) {
  double endtime = clock() + (seconds * CLOCKS_PER_SEC);
  while (clock() < endtime) {
    ;
  }
}
template <class T>
inline T fastIn() {
  register char c = 0;
  register T a = 0;
  bool neg = false;
  while (c < 33) c = getchar();
  while (c > 33) {
    if (c == '-') {
      neg = true;
    } else {
      a = (a * 10) + (c - '0');
    }
    c = getchar();
  }
  return neg ? -a : a;
}
int N, D, LIMIT;
inline void read() {
  N = fastIn<int>(), D = fastIn<int>(), LIMIT = fastIn<int>();
}
int numbers[105];
struct NODE {
  bool f;
  int ret;
  int x;
};
inline NODE solve(int ret) {
  if (ret <= 0) {
    int x = 1;
    return NODE{true, x - ret, x};
  } else {
    int x = LIMIT;
    return NODE{true, x - ret, x};
  }
}
inline NODE solve2(int ret) {
  if (ret <= 0) {
    for (int x = 1; x <= LIMIT; ++x) {
      int y = x - ret;
      if (y == 0) return NODE{true, y, x};
    }
  } else {
    for (int x = LIMIT; x >= 1; --x) {
      int y = x - ret;
      if (y == 0) return NODE{true, y, x};
    }
  }
  return NODE{false, -1, -1};
}
inline void proc() {
  memset(numbers, 0, sizeof(numbers));
  int ret = D;
  for (int i = 1; i < N; ++i) {
    NODE tmp = solve(ret);
    numbers[i] = tmp.x;
    ret = tmp.ret;
  }
  if (ret > 0 && ret <= LIMIT) {
    numbers[N] = ret;
    for (int i = 1, j1 = N + 1; i < j1; ++i) cout << numbers[i] << ' ';
    puts("");
  } else
    puts("-1");
}
int main() {
  int kase = 1;
  for (int i = 0, j1 = kase; i < j1; ++i) {
    read();
    proc();
  }
  return 0;
}
