#include <bits/stdc++.h>
using namespace std;
long long gcd(long long x, long long y) { return y == 0 ? x : gcd(y, x % y); }
int toInt(char xx) { return xx - '0'; }
char toChar(int xx) { return xx + '0'; }
bool isDigit(char xx) { return ('0' <= xx && xx <= '9'); }
bool isCharacter(char xx) {
  return (('a' <= xx && xx <= 'z') || ('A' <= xx && xx <= 'Z'));
}
void swapInt(int &x, int &y) {
  x = x ^ y;
  y = x ^ y;
  x = x ^ y;
}
inline void clear_buffer() {
  string tmp;
  getline(cin, tmp);
}
const int dx[4] = {-1, 1, 0, 0};
const int dy[4] = {0, 0, -1, 1};
const int Mod = 10;
const int maxn = (1e3) + 10;
bool exitInput = false;
int n;
long long x, y;
void read() { cin >> n >> x >> y; }
void init() {}
void solve() {
  long long maxa = y - (n - 1);
  if (maxa <= 0) {
    cout << -1;
    return;
  }
  long long min_maxa = sqrt(x - (n - 1));
  if (min_maxa > maxa) {
    cout << -1;
    return;
  }
  long long a = maxa;
  if ((a + n - 1) <= y && (a * a + n - 1) >= x) {
    cout << a << endl;
    for (int i = 1; i <= n - 1; ++i) {
      cout << 1 << endl;
    }
    return;
  }
  cout << -1;
}
int main() {
  int ntest = 1;
  int itest = 1;
  for (itest = 1; itest <= ntest; ++itest) {
    read();
    if (exitInput) {
      break;
    }
    init();
    solve();
  }
  return 0;
}
