n = int(raw_input())

pr = []
i = 2
while(len(pr) < n):
	cnt = 0
	for j in xrange(1,i+1):
		cnt += (i%j==0)
	if cnt == 2:
		pr.append(i)
	i += 1

prod = reduce(lambda x,y:x*y, pr, 1)

for i in xrange(0,n):
	print prod/pr[i]


import sys

n = int(raw_input())

if n==2:
	print -1
	sys.exit(0)

pr = []
i = 2
while(len(pr) < n):
	cnt = 0
	for j in xrange(1,i+1):
		cnt += (i%j==0)
	if cnt == 2:
		pr.append(i)
	i += 1

prod = reduce(lambda x,y:x*y, pr, 1)

for i in xrange(0,n):
	print prod/pr[i]


ans=[]
n=0
ret=[]

def dfs(cur,pos,cnt,b):
    if cnt==n-1:
        ans.append(cur)
        return
    if b==0:
        dfs(cur,pos+1,cnt,1)
    dfs(cur*ret[pos],pos+1,cnt+1,b)

def prime():
    ret=[]
    ret.append(2)
    sig=[1 for i in range(1000)]
    for i in range(3,1000,2):
        if sig[i]==1:
            ret.append(i)
            for j in range(i+i,1000,i):
                sig[j]=0

    return ret

n=input()
ret=prime()[:n]
if n==2:
    print -1
else :
    dfs(1,0,0,0)
    for i in range(n):
        print ans[i]


import math
def judge_prime(a):
	if(a == 2):
		return True
	for i in range(2, int(math.sqrt(a)) + 1):
		if a % i == 0:
			return False
	return True
n = input()
if n == 2:
	print -1
else:
	a = [i for i in xrange(2, 100000) if judge_prime(i)][:n]
	pre = 1
	for i in a:
		print i * pre
		pre = i


import math
def judge_prime(a):
	if(a == 2):
		return True
	for i in range(2, int(math.sqrt(a)) + 1):
		if a % i == 0:
			return False
	return True
n = input()
if n == 2:
	print -1
else:
	a = [i for i in xrange(2, 100000) if judge_prime(i)][:n]
	mult = 1
	for i in a:
		mult *= i;
	for i in a:
		print mult / i


n=input()
if(n==2):
    print -1
else:
 m=1
 t=[x for x in xrange(50,318) if 269**(x-1)%x==1 and 1033**(x-1)%x==1]
 for x in t:m*=x
 for x in t:print m/x


#include <bits/stdc++.h>
using namespace std;
#define sf1(a)                scanf("%d", &a)
#define sf2(a,b)              scanf("%d %d",&a, &b)
#define sf3(a,b,c)            scanf("%d %d %d", &a, &b, &c)
#define sf4(a,b,c,d)          scanf("%d %d %d %d", &a, &b, &c, &d)

#define sf1ll(a)              scanf("%I64d", &a)
#define sf2ll(a,b)            scanf("%lld %lld", &a, &b)
#define sf3ll(a,b,c)          scanf("%I64d %I64d %I64d", &a, &b, &c)
#define sf4ll(a,b,c,d)        scanf("%I64d %I64d %I64d %I64d", &a, &b, &c, &d)
int a[int(1e5)];
int b[int(1e5)];
int main()
{ ios::sync_with_stdio(0) ; cin.tie(0);
    cout.tie(0);
    long long  n, l, r ;
    cin >> n >> r >> l ;
    if (((l-(n-1))*(l-(n-1))+n-1) < r  ) puts("-1"),exit(0);
    for (int i = 0 ; i<n-1;i++)
        puts("1");
    cout << l-(n-1) <<"\n";
}


//----->|try=0; while(!success) try++;|<------
//----->|Belief Yourself,Respect Yourself|<----
//----->|Be Proud Of Yourself,You're Doing Your best|<-----
#include<bits/stdc++.h>
using namespace std;
#define uniq(x)  x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define rep(i,intial,n) for(int i=intial; i<(n) ; i++)
#define REP(i,intial,n) for(int i=intial; i<=(n) ; i++)
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define AND(a,b) ((a) & (b))
#define OR(a,b) ((a)|(b))
#define XOR(a,b) ((a) ^ (b))
#define MP make_pair
#define sqr(x) ((x)*(x))
#define sqrt(x) sqrt(1.0*(x))
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p)          //Pow calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b);
        b=(b*b);
        p>>=1;
    }
    return r;
}

template<typename T> T BigMod(T b,T p,T m) //BigMod Calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b)%m;
        b=(b*b)%m;
        p>>=1;
    }
    return r;
}

//||--------------------------->||Main_Code_Start_From_Here||<---------------------------------||
int main()
{
    //freopen("a.in", "r", stdin);
    //freopen("a.out", "w", stdout);
    LL n,x,y;
    while(cin>>n>>x>>y)
    {
        int keep=y/n;
        if(n==y && y!=x)
        {
            cout<<"-1"<<endl;
            continue;
        }
        rep(i,0,n) cout<<keep<<endl;
    }

}


//----->|try=0; while(!success) try++;|<------
//----->|Belief Yourself,Respect Yourself|<----
//----->|Be Proud Of Yourself,You're Doing Your best|<-----
#include<bits/stdc++.h>
using namespace std;
#define uniq(x)  x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define rep(i,intial,n) for(int i=intial; i<(n) ; i++)
#define REP(i,intial,n) for(int i=intial; i<=(n) ; i++)
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define AND(a,b) ((a) & (b))
#define OR(a,b) ((a)|(b))
#define XOR(a,b) ((a) ^ (b))
#define MP make_pair
#define sqr(x) ((x)*(x))
#define sqrt(x) sqrt(1.0*(x))
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p)          //Pow calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b);
        b=(b*b);
        p>>=1;
    }
    return r;
}

template<typename T> T BigMod(T b,T p,T m) //BigMod Calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b)%m;
        b=(b*b)%m;
        p>>=1;
    }
    return r;
}

//||--------------------------->||Main_Code_Start_From_Here||<---------------------------------||
int main()
{
    //freopen("a.in", "r", stdin);
    //freopen("a.out", "w", stdout);
    LL n,x,y;
    while(cin>>n>>x>>y)
    {
        int keep=y/n;
        /*if(n==y && y!=x)
        {
            cout<<"-1"<<endl;
            continue;
        }*/
        LL sum=0;
        rep(i,0,n-1) sum+=1;
        sum+=((y-(n-1))*(y-(n-1)));
        if(sum<x || (n>x && n>y))
        {
            cout<<"-1"<<endl;
            continue;
        }
        rep(i,0,n-1)
        {
            cout<<"1"<<endl;
        }
        cout<<y-(n-1)<<endl;
    }

}


//----->|try=0; while(!success) try++;|<------
//----->|Belief Yourself,Respect Yourself|<----
//----->|Be Proud Of Yourself,You're Doing Your best|<-----
#include<bits/stdc++.h>
using namespace std;
#define uniq(x)  x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define rep(i,intial,n) for(int i=intial; i<(n) ; i++)
#define REP(i,intial,n) for(int i=intial; i<=(n) ; i++)
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define AND(a,b) ((a) & (b))
#define OR(a,b) ((a)|(b))
#define XOR(a,b) ((a) ^ (b))
#define MP make_pair
#define sqr(x) ((x)*(x))
#define sqrt(x) sqrt(1.0*(x))
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p)          //Pow calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b);
        b=(b*b);
        p>>=1;
    }
    return r;
}

template<typename T> T BigMod(T b,T p,T m) //BigMod Calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b)%m;
        b=(b*b)%m;
        p>>=1;
    }
    return r;
}

//||--------------------------->||Main_Code_Start_From_Here||<---------------------------------||
int main()
{
    //freopen("a.in", "r", stdin);
    //freopen("a.out", "w", stdout);
    LL n,x,y;
    while(cin>>n>>x>>y)
    {
        int keep=y/n;
        /*if(n==y && y!=x)
        {
            cout<<"-1"<<endl;
            continue;
        }*/
        LL sum=0;
        rep(i,0,n-1) sum+=1;
        sum+=((y-(n-1))*(y-(n-1)));
        if(sum<x)
        {
            cout<<"-1"<<endl;
            continue;
        }
        rep(i,0,n-1)
        {
            cout<<"1"<<endl;
        }
        cout<<y-(n-1)<<endl;
    }

}


//----->|try=0; while(!success) try++;|<------
//----->|Belief Yourself,Respect Yourself|<----
//----->|Be Proud Of Yourself,You're Doing Your best|<-----
#include<bits/stdc++.h>
using namespace std;
#define uniq(x)  x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define rep(i,intial,n) for(int i=intial; i<(n) ; i++)
#define REP(i,intial,n) for(int i=intial; i<=(n) ; i++)
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define AND(a,b) ((a) & (b))
#define OR(a,b) ((a)|(b))
#define XOR(a,b) ((a) ^ (b))
#define MP make_pair
#define sqr(x) ((x)*(x))
#define sqrt(x) sqrt(1.0*(x))
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p)          //Pow calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b);
        b=(b*b);
        p>>=1;
    }
    return r;
}

template<typename T> T BigMod(T b,T p,T m) //BigMod Calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b)%m;
        b=(b*b)%m;
        p>>=1;
    }
    return r;
}

//||--------------------------->||Main_Code_Start_From_Here||<---------------------------------||
int main()
{
    //freopen("a.in", "r", stdin);
    //freopen("a.out", "w", stdout);
    LL n,x,y;
    while(cin>>n>>x>>y)
    {
        int keep=y/n;
        if(n==y && y!=x)
        {
            cout<<"-1"<<endl;
            continue;
        }
        rep(i,0,n-1)
        {
            cout<<"1"<<endl;
        }
        cout<<x-n-1<<endl;
    }

}


//----->|try=0; while(!success) try++;|<------
//----->|Belief Yourself,Respect Yourself|<----
//----->|Be Proud Of Yourself,You're Doing Your best|<-----
#include<bits/stdc++.h>
using namespace std;
#define uniq(x)  x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr  //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define rep(i,intial,n) for(int i=intial; i<(n) ; i++)
#define REP(i,intial,n) for(int i=intial; i<=(n) ; i++)
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define AND(a,b) ((a) & (b))
#define OR(a,b) ((a)|(b))
#define XOR(a,b) ((a) ^ (b))
#define MP make_pair
#define sqr(x) ((x)*(x))
#define sqrt(x) sqrt(1.0*(x))
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p)          //Pow calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b);
        b=(b*b);
        p>>=1;
    }
    return r;
}

template<typename T> T BigMod(T b,T p,T m) //BigMod Calculation
{
    T r=1;
    while(p)
    {
        if(p&1)r=(r*b)%m;
        b=(b*b)%m;
        p>>=1;
    }
    return r;
}

//||--------------------------->||Main_Code_Start_From_Here||<---------------------------------||
int main()
{
    //freopen("a.in", "r", stdin);
    //freopen("a.out", "w", stdout);
    LL n,x,y;
    while(cin>>n>>x>>y)
    {
        int keep=y/n;
        if(n==y && y!=x)
        {
            cout<<"-1"<<endl;
            continue;
        }
        rep(i,0,n-1)
        {
            cout<<"1"<<endl;
        }
        cout<<y-(n-1)<<endl;
    }

}


#include <bits/stdc++.h>
#include <cstdio>
#include <vector>
#include <utility>
using namespace std;
int dx[4] = { 0, 0, 1, -1 };
int dy[4] = { 1, -1, 0, 0 };
int X[8]= {-1,-1,-1,0,0,1,1,1};
int Y[8]= {-1,0,1,-1,1,-1,0,1};
const int MAXX=2000+9;
typedef long long         ll;
const ll OO = 1e8;
const int o_o=0;
ll n,x,y;
int main(){
    cin>>n>>x>>y;
   // printf("%lld%lld%lld",n,x,y);
    ll numones=n-1;
    ll z=numones-y;
    if(z<0){z=z*-1;}
    ll q=z*z;
    q+=numones;
    if(q>=x){
            for(int i=0;i<numones;i++){cout<<1<<" ";}
            cout<<z<<endl;
    }else{
        cout<<-1;
    }

return 0;}


#include <bits/stdc++.h>
#include <cstdio>
#include <vector>
#include <utility>
using namespace std;
int dx[4] = { 0, 0, 1, -1 };
int dy[4] = { 1, -1, 0, 0 };
int X[8]= {-1,-1,-1,0,0,1,1,1};
int Y[8]= {-1,0,1,-1,1,-1,0,1};
const int MAXX=2000+9;
typedef long long         ll;
const ll OO = 1e8;
const int o_o=0;
ll n,x,y;
int main(){
    cin>>x>>y>>z;
    ll numones=n-1;
    ll z=numones-y;
    if(z<0){z=z*-1;}
    ll q=z*z;
    q+=numones;
    if(q>=x && numones+z<=y && z>0){
            for(int i=0;i<numones;i++){cout<<1<<" ";}
            cout<<z<<endl;
    }else{
        cout<<-1;
    }

return 0;}


#include <bits/stdc++.h>
#include <cstdio>
#include <vector>
#include <utility>
using namespace std;
int dx[4] = { 0, 0, 1, -1 };
int dy[4] = { 1, -1, 0, 0 };
int X[8]= {-1,-1,-1,0,0,1,1,1};
int Y[8]= {-1,0,1,-1,1,-1,0,1};
const int MAXX=2000+9;
typedef long long         ll;
const ll OO = 1e8;
const int o_o=0;
ll n,x,y;
int main(){
    cin>>n>>x>>y;
   // printf("%lld%lld%lld",n,x,y);
    ll numones=n-1;
    ll z=numones-y;
    if(z<0){z=z*-1;}
    ll q=z*z;
    q+=numones;
    if(q>=x && numones+z<=y){
            for(int i=0;i<numones;i++){cout<<1<<" ";}
            cout<<z<<endl;
    }else{
        cout<<-1;
    }

return 0;}


#include <bits/stdc++.h>
#include <cstdio>
#include <vector>
#include <utility>
using namespace std;
int dx[4] = { 0, 0, 1, -1 };
int dy[4] = { 1, -1, 0, 0 };
int X[8]= {-1,-1,-1,0,0,1,1,1};
int Y[8]= {-1,0,1,-1,1,-1,0,1};
const int MAXX=2000+9;
typedef long long         ll;
const ll OO = 1e8;
const int o_o=0;
ll n,x,y;
int main(){
    cin>>n>>x>>y;
    ll numones=n-1;
    ll z=numones-y;
    if(z<0){z=z*-1;}
    ll q=z*z;
    q+=numones;
    if(q>=x && numones+z<=y && z>0){
            for(int i=0;i<numones;i++){cout<<1<<" ";}
            cout<<z<<endl;
    }else{
        cout<<-1;
    }

return 0;}


//God & me
#include <bits/stdc++.h>
#define pb push_back
#define X first
#define Y second
#define int long long
using namespace std;
template<class T,class L>bool smax(T&x,L y){return x<y?(x=y,1):0;}template<class T,class L>bool smin(T&x,L y){return x>y?(x=y,1):0;}
typedef pair<int,int> pii;

const int maxn=1e5+17;
int a[maxn],n,x,y;
main(){
  ios::sync_with_stdio(0),cin.tie(0);
  cin>>n>>x>>y;
  fill(a,a+n,1);
  a[0]=y-n+1;
  for(int i=0;i<n;i++)
    x-=a[i]*a[i];
  if(x>0)
    return cout<<"-1\n",0;
  for(int i=0;i<n;i++)
    cout<<a[i]<<' ';
  cout<<'\n';
  return 0;
}


//God & me
#include <bits/stdc++.h>
#define pb push_back
#define X first
#define Y second
#define int long long
using namespace std;
template<class T,class L>bool smax(T&x,L y){return x<y?(x=y,1):0;}template<class T,class L>bool smin(T&x,L y){return x>y?(x=y,1):0;}
typedef pair<int,int> pii;

const int maxn=1e5+17;
int a[maxn],n,x,y;
main(){
  ios::sync_with_stdio(0),cin.tie(0);
  cin>>n>>x>>y;
  fill(a,a+n,1);
  a[0]=y-n+1;
  for(int i=0;i<n;i++)
    x-=a[i]*a[i];
  if(x>0 || *a<=0)
    return cout<<"-1\n",0;
  for(int i=0;i<n;i++)
    cout<<a[i]<<' ';
  cout<<'\n';
  return 0;
}


//God & me
#include <bits/stdc++.h>
#define pb push_back
#define X first
#define Y second
#define int long long
using namespace std;
template<class T,class L>bool smax(T&x,L y){return x<y?(x=y,1):0;}template<class T,class L>bool smin(T&x,L y){return x>y?(x=y,1):0;}
typedef pair<int,int> pii;

const int maxn=1e5+17;
int a[maxn],n,x,y;
main(){
  ios::sync_with_stdio(0),cin.tie(0);
  cin>>n>>x>>y;
  fill(a,a+n,1);
  a[0]=y-n+1;
  for(int i=0;i<n;i++)
    x-=a[i]*a[i];
  if(x>0 || *a<0)
    return cout<<"-1\n",0;
  for(int i=0;i<n;i++)
    cout<<a[i]<<' ';
  cout<<'\n';
  return 0;
}


//God & me
#include <bits/stdc++.h>
#define pb push_back
#define X first
#define Y second
#define int long long
using namespace std;
template<class T,class L>bool smax(T&x,L y){return x<y?(x=y,1):0;}template<class T,class L>bool smin(T&x,L y){return x>y?(x=y,1):0;}
typedef pair<int,int> pii;

const int maxn=1e5+17;
int a[maxn],n,x,y;
main(){
  ios::sync_with_stdio(0),cin.tie(0);
  cin>>n>>x>>y;
  for(int i=0;i<n;i++)
    a[i]=y/n+(i<y%n),x-=a[i]*a[i];
  if(x>0)
    return cout<<"-1\n",0;
  for(int i=0;i<n;i++)
    cout<<a[i]<<' ';
  cout<<'\n';
  return 0;
}


//God & me
#include <bits/stdc++.h>
#define pb push_back
#define X first
#define Y second
//#define int long long
using namespace std;
template<class T,class L>bool smax(T&x,L y){return x<y?(x=y,1):0;}template<class T,class L>bool smin(T&x,L y){return x>y?(x=y,1):0;}
typedef pair<int,int> pii;

const int maxn=1e5+17;
int a[maxn],n,x,y;
main(){
  ios::sync_with_stdio(0),cin.tie(0);
  cin>>n>>x>>y;
  for(int i=0;i<n;i++)
    a[i]=y/n+(i<y%n),x-=a[i]*a[i];
  if(x>0)
    return cout<<"-1\n",0;
  for(int i=0;i<n;i++)
    cout<<a[i]<<' ';
  cout<<'\n';
  return 0;
}


#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define MOD 1000007
#define DOMOD(d) if ((d) >= MOD) d %= MOD;
#define DONEGMOD(d) if ((d) < 0) d = ((d % MOD) + MOD) % MOD;

#define inp(a) scanf("%d", &a)
#define inp2(a,b) scanf("%d %d", &a, &b)
#define inp3(a,b,c) scanf("%d %d %d", &a, &b, &c)
#define inp4(a,b,c,d) scanf("%d %d %d %d", &a, &b, &c, &d)

#define inpl(a) scanf("%lld", &a)
#define inpl2(a,b) scanf("%lld %lld", &a, &b)
#define inpl3(a,b,c) scanf("%lld %lld %lld", &a, &b, &c)
#define inpl4(a,b,c,d) scanf("%lld %lld %lld %lld", &a, &b, &c, &d)
#define all(v) (v).begin(), (v).end()
#define rep(i,a,b) for (int i=a;i<b;i++)
#define mset(a,val) memset(a,val,sizeof(a))
#define printv(v) for (int i=0;i<(int) v.size(); i++) cout<<v[i]<<" "
#define MAX 1000005
using namespace std ;
typedef long long int ll ;
typedef pair<int,int> pii ;
typedef pair<long long , long long > pll ;
typedef pair<int,pii> pipi ;
typedef pair<ll,pll> plpl ;
typedef pair<long long, int> pli ;
typedef pair<int,pair<int,string>> piis ;
typedef pair<ll,string> pls ;

int main()
{
	#ifdef DHEER
  freopen("inp.txt","r",stdin) ;
  freopen("out.txt","w",stdout) ;
  #endif

   ll n , x, y ;
   cin>>n>>x>>y ;
   ll temp = y-n+1 ;
   if (temp*temp + n-1 >=x)
   {
	   cout<<temp<<"\n" ;
	   for (int i=1;i<=n-1;i++)
	   {
		   cout<<"1"<<"\n" ;
	   }
   }else
   {
	   cout<<"-1\n" ;
   }

	return 0 ;
}


#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define MOD 1000007
#define DOMOD(d) if ((d) >= MOD) d %= MOD;
#define DONEGMOD(d) if ((d) < 0) d = ((d % MOD) + MOD) % MOD;

#define inp(a) scanf("%d", &a)
#define inp2(a,b) scanf("%d %d", &a, &b)
#define inp3(a,b,c) scanf("%d %d %d", &a, &b, &c)
#define inp4(a,b,c,d) scanf("%d %d %d %d", &a, &b, &c, &d)

#define inpl(a) scanf("%lld", &a)
#define inpl2(a,b) scanf("%lld %lld", &a, &b)
#define inpl3(a,b,c) scanf("%lld %lld %lld", &a, &b, &c)
#define inpl4(a,b,c,d) scanf("%lld %lld %lld %lld", &a, &b, &c, &d)
#define all(v) (v).begin(), (v).end()
#define rep(i,a,b) for (int i=a;i<b;i++)
#define mset(a,val) memset(a,val,sizeof(a))
#define printv(v) for (int i=0;i<(int) v.size(); i++) cout<<v[i]<<" "
#define MAX 1000005
using namespace std ;
typedef long long int ll ;
typedef pair<int,int> pii ;
typedef pair<long long , long long > pll ;
typedef pair<int,pii> pipi ;
typedef pair<ll,pll> plpl ;
typedef pair<long long, int> pli ;
typedef pair<int,pair<int,string>> piis ;
typedef pair<ll,string> pls ;

int main()
{
	#ifdef DHEER
  freopen("inp.txt","r",stdin) ;
  freopen("out.txt","w",stdout) ;
  #endif

   ll n , x, y ;
   cin>>n>>x>>y ;
   ll temp = y-n+1 ;
   if (temp <= 0) {
	   cout<<"-1\n" ; return 0 ;
   }
   if (temp*temp + n-1 >=x)
   {
	   cout<<temp<<"\n" ;
	   for (ll i=1;i<=n-1;i++)
	   {
		   cout<<"1"<<"\n" ;
	   }
   }else
   {
	   cout<<"-1\n" ;
   }

	return 0 ;
}


#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATED
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <list>
#include <algorithm>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <bitset>
#include <math.h>
#include <iomanip>
#include <complex>

using namespace std;

#define INF 2000000000
#define OO 0x7fffffff
#define OOO 1.7e308
#define ll long long
#define ull unsigned long long
#define lp(i,n) for(int i=0;i<n;i++)
#define rep(i,j,n) for(int i=j;i<n;i++)
#define clr(memo, j) memset(memo, j, sizeof memo)
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define All(a) a.begin(), a.end()
#define even(x) x%2==0
#define odd(x) x%2!=0
#define rd(x) scanf("%d", &x)
#define pt(x) printf("%d", x)

typedef pair<int, int> ii;
typedef pair<int, long long> pill;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ii> vii;
typedef vector<ll> vll;
typedef vector<vii> vvii;

const double PI = acos(-1.0);
const double EPS = (1e-10);

bool comp(ull x, ull y) { return x > y; }

int dx[] = { 0, 0, 1, -1, 1, 1, -1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

class UnionFind {
private: vi p, rank;
public:
	UnionFind(int N) {
		rank.assign(N, 0);
		p.assign(N, 0);
		for (int i = 0; i < N; i++) p[i] = i;
	}

	int findSet(int i) { return (p[i] == i) ? i : (p[i] = findSet(p[i])); }
	bool isSameSet(int i, int j) { return findSet(i) == findSet(j); }
	void unionSet(int i, int j) {
		if (!isSameSet(i, j)) {
			int x = findSet(i), y = findSet(j);
			if (rank[x] > rank[y]) {
				p[y] = x;
			}
			else {
				p[x] = y;
				if (rank[x] == rank[y]) rank[y]++;
			}
		}
	}
};

// CP3 geometry
struct point {
	double x, y;
	point() { x = y = 0.0; }
	point(double _x, double _y) {
		x = _x;
		y = _y;
	}

	bool operator == (point other) const {
		return (fabs(x - other.x) < EPS && fabs(y - other.y) < EPS);
	}

	double dist(point p1, point p2) {
		return hypot(p1.x - p2.x, p1.y - p2.y);
	}
};

struct line { double a, b, c; };

void pointsToLine(point p1, point p2, line &l) {
	if (fabs(p1.x - p2.x) < EPS) {
		l.a = 1.0; l.b = 0.0; l.c = -p1.x;
	}
	else {
		l.a = -(double)(p1.y - p2.y) / (p1.x - p2.x);
		l.b = 1.0;
		l.c = -(double)(l.a*p1.x) - p1.y;
	}
}

bool areParallel(line l1, line l2) {
	return (fabs(l1.a - l2.a) < EPS) && (fabs(l1.b - l2.b) < EPS);
}

bool areSame(line l1, line l2) {
	return areParallel(l1, l2) && (fabs(l1.c - l2.c) < EPS);
}

bool areIntersect(line l1, line l2, point &p) {
	if (areParallel(l1, l2)) return false;

	p.x = (l2.b*l1.c - l1.b*l2.c) / (l2.a*l1.b - l1.a*l2.b);
	if (fabs(l1.b) > EPS) p.y = -(l1.a*p.x + l1.c);
	else p.y = -(l2.a*p.x + l2.c);

	return true;
}

struct vec {
	double x, y;
	vec(double _x, double _y) {
		x = _x;
		y = _y;
	}
};

vec toVec(point a, point b) {
	return vec(b.x - a.x, b.y - a.y);
}

double cross(vec a, vec b) {
	return a.x*b.y - a.y*b.x;
}

bool ccw(point p, point q, point r) {
	return cross(toVec(p, q), toVec(p, r)) > 0;
}

bool colinear(point p, point q, point r) {
	return fabs(cross(toVec(p, q), toVec(p, r))) < EPS;
}

// Complex Geometry
/*
typedef complex<double> point;

#define X real()
#define Y real()

#define angle(a)   (atan2((a).imag(), (a).real()))
#define vec(a, b)  ((b)-(a))

#define length(a)     (hypot((a).imag(), (a).real()))
#define normalize(a)  (a)/length(a)

#define dotProduct(a, b)    ((conj(a)*(b)).real())
#define crossProduct(a, b)  ((conj(a)*(b)).imag())

#define same(p1, p2)  (dotProduct(vec(p1, p2), vec(p1, p2)) < EPS)
*/

bool isprime(long long n) {
	if (n < 2) return false;
	for (long long i = 2; i*i <= n; i++) {
		if (n % i == 0) { return false; }
	}
	return true;
}

vector<int> getdividors(int n) {
	vector<int> dividors;
	int i;
	for (i = 1; i*i<n; i++) {
		if (n % i == 0) {
			dividors.push_back(i);
			dividors.push_back(n / i);
		}
	}
	if (i*i == n) dividors.push_back(i);
	return dividors;
}

ll gcd(ll a, ll b) {
	return b ? gcd(b, a%b) : a;
}

ll C(ll a, ll b) {
	if (b > a - b) return C(a, a - b);

	vector<ll> nom, den;

	for (ll i = a; i > a - b; i--) nom.push_back(i);
	for (ll i = 2; i <= b; i++) den.push_back(i);

	ll lenNom = nom.size();
	ll lenDen = den.size();

	for (int i = 0; i < lenNom; i++) {
		for (int j = 0; j < lenDen; j++) {
			ll g = gcd(nom[i], den[j]);
			if (g > 1) {
				nom[i] /= g;
				den[j] /= g;
			}
		}
	}

	ll top = 1;
	ll bot = 1;

	for (int i = 0; i < lenNom; i++) top *= nom[i];
	for (int i = 0; i < lenDen; i++) bot *= den[i];

	return top / bot;
}

bool my_sort(ll x, ll y) {
	if (x > y) return true;
	return false;
}

void solveC() {
	ll n, x, y;
	cin >> n >> x >> y;

	ll sum = n - 1;
	ll rem = x - sum;

	ll add = sqrt(rem);
	if (add*add != rem) add++;

	if (add < 0 || n - 1 + add > y || ((add*add) > 0 && n - 1 + (add*add) < x)) cout << -1 << endl;
	else {
		cout << add << endl;
		lp(i, n - 1) cout << 1 << endl;
	}
}

int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);

	//ios::sync_with_stdio(false);

	solveC();

	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATED
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <list>
#include <algorithm>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <bitset>
#include <math.h>
#include <iomanip>
#include <complex>

using namespace std;

#define INF 2000000000
#define OO 0x7fffffff
#define OOO 1.7e308
#define ll long long
#define ull unsigned long long
#define lp(i,n) for(int i=0;i<n;i++)
#define rep(i,j,n) for(int i=j;i<n;i++)
#define clr(memo, j) memset(memo, j, sizeof memo)
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define All(a) a.begin(), a.end()
#define even(x) x%2==0
#define odd(x) x%2!=0
#define rd(x) scanf("%d", &x)
#define pt(x) printf("%d", x)

typedef pair<int, int> ii;
typedef pair<int, long long> pill;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ii> vii;
typedef vector<ll> vll;
typedef vector<vii> vvii;

const double PI = acos(-1.0);
const double EPS = (1e-10);

bool comp(ull x, ull y) { return x > y; }

int dx[] = { 0, 0, 1, -1, 1, 1, -1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

class UnionFind {
private: vi p, rank;
public:
	UnionFind(int N) {
		rank.assign(N, 0);
		p.assign(N, 0);
		for (int i = 0; i < N; i++) p[i] = i;
	}

	int findSet(int i) { return (p[i] == i) ? i : (p[i] = findSet(p[i])); }
	bool isSameSet(int i, int j) { return findSet(i) == findSet(j); }
	void unionSet(int i, int j) {
		if (!isSameSet(i, j)) {
			int x = findSet(i), y = findSet(j);
			if (rank[x] > rank[y]) {
				p[y] = x;
			}
			else {
				p[x] = y;
				if (rank[x] == rank[y]) rank[y]++;
			}
		}
	}
};

// CP3 geometry
struct point {
	double x, y;
	point() { x = y = 0.0; }
	point(double _x, double _y) {
		x = _x;
		y = _y;
	}

	bool operator == (point other) const {
		return (fabs(x - other.x) < EPS && fabs(y - other.y) < EPS);
	}

	double dist(point p1, point p2) {
		return hypot(p1.x - p2.x, p1.y - p2.y);
	}
};

struct line { double a, b, c; };

void pointsToLine(point p1, point p2, line &l) {
	if (fabs(p1.x - p2.x) < EPS) {
		l.a = 1.0; l.b = 0.0; l.c = -p1.x;
	}
	else {
		l.a = -(double)(p1.y - p2.y) / (p1.x - p2.x);
		l.b = 1.0;
		l.c = -(double)(l.a*p1.x) - p1.y;
	}
}

bool areParallel(line l1, line l2) {
	return (fabs(l1.a - l2.a) < EPS) && (fabs(l1.b - l2.b) < EPS);
}

bool areSame(line l1, line l2) {
	return areParallel(l1, l2) && (fabs(l1.c - l2.c) < EPS);
}

bool areIntersect(line l1, line l2, point &p) {
	if (areParallel(l1, l2)) return false;

	p.x = (l2.b*l1.c - l1.b*l2.c) / (l2.a*l1.b - l1.a*l2.b);
	if (fabs(l1.b) > EPS) p.y = -(l1.a*p.x + l1.c);
	else p.y = -(l2.a*p.x + l2.c);

	return true;
}

struct vec {
	double x, y;
	vec(double _x, double _y) {
		x = _x;
		y = _y;
	}
};

vec toVec(point a, point b) {
	return vec(b.x - a.x, b.y - a.y);
}

double cross(vec a, vec b) {
	return a.x*b.y - a.y*b.x;
}

bool ccw(point p, point q, point r) {
	return cross(toVec(p, q), toVec(p, r)) > 0;
}

bool colinear(point p, point q, point r) {
	return fabs(cross(toVec(p, q), toVec(p, r))) < EPS;
}

// Complex Geometry
/*
typedef complex<double> point;

#define X real()
#define Y real()

#define angle(a)   (atan2((a).imag(), (a).real()))
#define vec(a, b)  ((b)-(a))

#define length(a)     (hypot((a).imag(), (a).real()))
#define normalize(a)  (a)/length(a)

#define dotProduct(a, b)    ((conj(a)*(b)).real())
#define crossProduct(a, b)  ((conj(a)*(b)).imag())

#define same(p1, p2)  (dotProduct(vec(p1, p2), vec(p1, p2)) < EPS)
*/

bool isprime(long long n) {
	if (n < 2) return false;
	for (long long i = 2; i*i <= n; i++) {
		if (n % i == 0) { return false; }
	}
	return true;
}

vector<int> getdividors(int n) {
	vector<int> dividors;
	int i;
	for (i = 1; i*i<n; i++) {
		if (n % i == 0) {
			dividors.push_back(i);
			dividors.push_back(n / i);
		}
	}
	if (i*i == n) dividors.push_back(i);
	return dividors;
}

ll gcd(ll a, ll b) {
	return b ? gcd(b, a%b) : a;
}

ll C(ll a, ll b) {
	if (b > a - b) return C(a, a - b);

	vector<ll> nom, den;

	for (ll i = a; i > a - b; i--) nom.push_back(i);
	for (ll i = 2; i <= b; i++) den.push_back(i);

	ll lenNom = nom.size();
	ll lenDen = den.size();

	for (int i = 0; i < lenNom; i++) {
		for (int j = 0; j < lenDen; j++) {
			ll g = gcd(nom[i], den[j]);
			if (g > 1) {
				nom[i] /= g;
				den[j] /= g;
			}
		}
	}

	ll top = 1;
	ll bot = 1;

	for (int i = 0; i < lenNom; i++) top *= nom[i];
	for (int i = 0; i < lenDen; i++) bot *= den[i];

	return top / bot;
}

bool my_sort(ll x, ll y) {
	if (x > y) return true;
	return false;
}

void solveC() {
	ll n, x, y;
	cin >> n >> x >> y;

	ll sum = n - 1;
	ll rem = x - sum;

	ll add = sqrt(rem);
	if (add*add != rem) add++;

	if (add <= 0 || n - 1 + add > y || ((add*add) > 0 && n - 1 + (add*add) < x)) cout << -1 << endl;
	else {
		cout << add << endl;
		lp(i, n - 1) cout << 1 << endl;
	}
}

int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);

	//ios::sync_with_stdio(false);

	solveC();

	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATED
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <list>
#include <algorithm>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <bitset>
#include <math.h>
#include <iomanip>
#include <complex>

using namespace std;

#define INF 2000000000
#define OO 0x7fffffff
#define OOO 1.7e308
#define ll long long
#define ull unsigned long long
#define lp(i,n) for(int i=0;i<n;i++)
#define rep(i,j,n) for(int i=j;i<n;i++)
#define clr(memo, j) memset(memo, j, sizeof memo)
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define All(a) a.begin(), a.end()
#define even(x) x%2==0
#define odd(x) x%2!=0
#define rd(x) scanf("%d", &x)
#define pt(x) printf("%d", x)

typedef pair<int, int> ii;
typedef pair<int, long long> pill;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ii> vii;
typedef vector<ll> vll;
typedef vector<vii> vvii;

const double PI = acos(-1.0);
const double EPS = (1e-10);

bool comp(ull x, ull y) { return x > y; }

int dx[] = { 0, 0, 1, -1, 1, 1, -1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

class UnionFind {
private: vi p, rank;
public:
	UnionFind(int N) {
		rank.assign(N, 0);
		p.assign(N, 0);
		for (int i = 0; i < N; i++) p[i] = i;
	}

	int findSet(int i) { return (p[i] == i) ? i : (p[i] = findSet(p[i])); }
	bool isSameSet(int i, int j) { return findSet(i) == findSet(j); }
	void unionSet(int i, int j) {
		if (!isSameSet(i, j)) {
			int x = findSet(i), y = findSet(j);
			if (rank[x] > rank[y]) {
				p[y] = x;
			}
			else {
				p[x] = y;
				if (rank[x] == rank[y]) rank[y]++;
			}
		}
	}
};

// CP3 geometry
struct point {
	double x, y;
	point() { x = y = 0.0; }
	point(double _x, double _y) {
		x = _x;
		y = _y;
	}

	bool operator == (point other) const {
		return (fabs(x - other.x) < EPS && fabs(y - other.y) < EPS);
	}

	double dist(point p1, point p2) {
		return hypot(p1.x - p2.x, p1.y - p2.y);
	}
};

struct line { double a, b, c; };

void pointsToLine(point p1, point p2, line &l) {
	if (fabs(p1.x - p2.x) < EPS) {
		l.a = 1.0; l.b = 0.0; l.c = -p1.x;
	}
	else {
		l.a = -(double)(p1.y - p2.y) / (p1.x - p2.x);
		l.b = 1.0;
		l.c = -(double)(l.a*p1.x) - p1.y;
	}
}

bool areParallel(line l1, line l2) {
	return (fabs(l1.a - l2.a) < EPS) && (fabs(l1.b - l2.b) < EPS);
}

bool areSame(line l1, line l2) {
	return areParallel(l1, l2) && (fabs(l1.c - l2.c) < EPS);
}

bool areIntersect(line l1, line l2, point &p) {
	if (areParallel(l1, l2)) return false;

	p.x = (l2.b*l1.c - l1.b*l2.c) / (l2.a*l1.b - l1.a*l2.b);
	if (fabs(l1.b) > EPS) p.y = -(l1.a*p.x + l1.c);
	else p.y = -(l2.a*p.x + l2.c);

	return true;
}

struct vec {
	double x, y;
	vec(double _x, double _y) {
		x = _x;
		y = _y;
	}
};

vec toVec(point a, point b) {
	return vec(b.x - a.x, b.y - a.y);
}

double cross(vec a, vec b) {
	return a.x*b.y - a.y*b.x;
}

bool ccw(point p, point q, point r) {
	return cross(toVec(p, q), toVec(p, r)) > 0;
}

bool colinear(point p, point q, point r) {
	return fabs(cross(toVec(p, q), toVec(p, r))) < EPS;
}

// Complex Geometry
/*
typedef complex<double> point;

#define X real()
#define Y real()

#define angle(a)   (atan2((a).imag(), (a).real()))
#define vec(a, b)  ((b)-(a))

#define length(a)     (hypot((a).imag(), (a).real()))
#define normalize(a)  (a)/length(a)

#define dotProduct(a, b)    ((conj(a)*(b)).real())
#define crossProduct(a, b)  ((conj(a)*(b)).imag())

#define same(p1, p2)  (dotProduct(vec(p1, p2), vec(p1, p2)) < EPS)
*/

bool isprime(long long n) {
	if (n < 2) return false;
	for (long long i = 2; i*i <= n; i++) {
		if (n % i == 0) { return false; }
	}
	return true;
}

vector<int> getdividors(int n) {
	vector<int> dividors;
	int i;
	for (i = 1; i*i<n; i++) {
		if (n % i == 0) {
			dividors.push_back(i);
			dividors.push_back(n / i);
		}
	}
	if (i*i == n) dividors.push_back(i);
	return dividors;
}

ll gcd(ll a, ll b) {
	return b ? gcd(b, a%b) : a;
}

ll C(ll a, ll b) {
	if (b > a - b) return C(a, a - b);

	vector<ll> nom, den;

	for (ll i = a; i > a - b; i--) nom.push_back(i);
	for (ll i = 2; i <= b; i++) den.push_back(i);

	ll lenNom = nom.size();
	ll lenDen = den.size();

	for (int i = 0; i < lenNom; i++) {
		for (int j = 0; j < lenDen; j++) {
			ll g = gcd(nom[i], den[j]);
			if (g > 1) {
				nom[i] /= g;
				den[j] /= g;
			}
		}
	}

	ll top = 1;
	ll bot = 1;

	for (int i = 0; i < lenNom; i++) top *= nom[i];
	for (int i = 0; i < lenDen; i++) bot *= den[i];

	return top / bot;
}

bool my_sort(ll x, ll y) {
	if (x > y) return true;
	return false;
}

void solveC() {
	ll n, x, y;
	cin >> n >> x >> y;

	ll sum = n - 1;
	ll rem = max(1LL, x - sum);

	ll add = sqrt(rem);
	if (add*add != rem) add++;

	cout << add << endl;
	cout << add*add << endl;

	if (add <= 0 || n - 1 + add > y || ((add*add) > 0 && n - 1 + (add*add) < x)) cout << -1 << endl;
	else {
		cout << add << endl;
		lp(i, n - 1) cout << 1 << endl;
	}
}

int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);

	//ios::sync_with_stdio(false);

	solveC();

	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATED
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <list>
#include <algorithm>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <bitset>
#include <math.h>
#include <iomanip>
#include <complex>

using namespace std;

#define INF 2000000000
#define OO 0x7fffffff
#define OOO 1.7e308
#define ll long long
#define ull unsigned long long
#define lp(i,n) for(int i=0;i<n;i++)
#define rep(i,j,n) for(int i=j;i<n;i++)
#define clr(memo, j) memset(memo, j, sizeof memo)
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define All(a) a.begin(), a.end()
#define even(x) x%2==0
#define odd(x) x%2!=0
#define rd(x) scanf("%d", &x)
#define pt(x) printf("%d", x)

typedef pair<int, int> ii;
typedef pair<int, long long> pill;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ii> vii;
typedef vector<ll> vll;
typedef vector<vii> vvii;

const double PI = acos(-1.0);
const double EPS = (1e-10);

bool comp(ull x, ull y) { return x > y; }

int dx[] = { 0, 0, 1, -1, 1, 1, -1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

class UnionFind {
private: vi p, rank;
public:
	UnionFind(int N) {
		rank.assign(N, 0);
		p.assign(N, 0);
		for (int i = 0; i < N; i++) p[i] = i;
	}

	int findSet(int i) { return (p[i] == i) ? i : (p[i] = findSet(p[i])); }
	bool isSameSet(int i, int j) { return findSet(i) == findSet(j); }
	void unionSet(int i, int j) {
		if (!isSameSet(i, j)) {
			int x = findSet(i), y = findSet(j);
			if (rank[x] > rank[y]) {
				p[y] = x;
			}
			else {
				p[x] = y;
				if (rank[x] == rank[y]) rank[y]++;
			}
		}
	}
};

// CP3 geometry
struct point {
	double x, y;
	point() { x = y = 0.0; }
	point(double _x, double _y) {
		x = _x;
		y = _y;
	}

	bool operator == (point other) const {
		return (fabs(x - other.x) < EPS && fabs(y - other.y) < EPS);
	}

	double dist(point p1, point p2) {
		return hypot(p1.x - p2.x, p1.y - p2.y);
	}
};

struct line { double a, b, c; };

void pointsToLine(point p1, point p2, line &l) {
	if (fabs(p1.x - p2.x) < EPS) {
		l.a = 1.0; l.b = 0.0; l.c = -p1.x;
	}
	else {
		l.a = -(double)(p1.y - p2.y) / (p1.x - p2.x);
		l.b = 1.0;
		l.c = -(double)(l.a*p1.x) - p1.y;
	}
}

bool areParallel(line l1, line l2) {
	return (fabs(l1.a - l2.a) < EPS) && (fabs(l1.b - l2.b) < EPS);
}

bool areSame(line l1, line l2) {
	return areParallel(l1, l2) && (fabs(l1.c - l2.c) < EPS);
}

bool areIntersect(line l1, line l2, point &p) {
	if (areParallel(l1, l2)) return false;

	p.x = (l2.b*l1.c - l1.b*l2.c) / (l2.a*l1.b - l1.a*l2.b);
	if (fabs(l1.b) > EPS) p.y = -(l1.a*p.x + l1.c);
	else p.y = -(l2.a*p.x + l2.c);

	return true;
}

struct vec {
	double x, y;
	vec(double _x, double _y) {
		x = _x;
		y = _y;
	}
};

vec toVec(point a, point b) {
	return vec(b.x - a.x, b.y - a.y);
}

double cross(vec a, vec b) {
	return a.x*b.y - a.y*b.x;
}

bool ccw(point p, point q, point r) {
	return cross(toVec(p, q), toVec(p, r)) > 0;
}

bool colinear(point p, point q, point r) {
	return fabs(cross(toVec(p, q), toVec(p, r))) < EPS;
}

// Complex Geometry
/*
typedef complex<double> point;

#define X real()
#define Y real()

#define angle(a)   (atan2((a).imag(), (a).real()))
#define vec(a, b)  ((b)-(a))

#define length(a)     (hypot((a).imag(), (a).real()))
#define normalize(a)  (a)/length(a)

#define dotProduct(a, b)    ((conj(a)*(b)).real())
#define crossProduct(a, b)  ((conj(a)*(b)).imag())

#define same(p1, p2)  (dotProduct(vec(p1, p2), vec(p1, p2)) < EPS)
*/

bool isprime(long long n) {
	if (n < 2) return false;
	for (long long i = 2; i*i <= n; i++) {
		if (n % i == 0) { return false; }
	}
	return true;
}

vector<int> getdividors(int n) {
	vector<int> dividors;
	int i;
	for (i = 1; i*i<n; i++) {
		if (n % i == 0) {
			dividors.push_back(i);
			dividors.push_back(n / i);
		}
	}
	if (i*i == n) dividors.push_back(i);
	return dividors;
}

ll gcd(ll a, ll b) {
	return b ? gcd(b, a%b) : a;
}

ll C(ll a, ll b) {
	if (b > a - b) return C(a, a - b);

	vector<ll> nom, den;

	for (ll i = a; i > a - b; i--) nom.push_back(i);
	for (ll i = 2; i <= b; i++) den.push_back(i);

	ll lenNom = nom.size();
	ll lenDen = den.size();

	for (int i = 0; i < lenNom; i++) {
		for (int j = 0; j < lenDen; j++) {
			ll g = gcd(nom[i], den[j]);
			if (g > 1) {
				nom[i] /= g;
				den[j] /= g;
			}
		}
	}

	ll top = 1;
	ll bot = 1;

	for (int i = 0; i < lenNom; i++) top *= nom[i];
	for (int i = 0; i < lenDen; i++) bot *= den[i];

	return top / bot;
}

bool my_sort(ll x, ll y) {
	if (x > y) return true;
	return false;
}

void solveC() {
	ll n, x, y;
	cin >> n >> x >> y;

	ll sum = n - 1;
	ll rem = max(1LL, x - sum);

	ll add = sqrt(rem);
	if (add*add != rem) add++;

	if (add <= 0 || n - 1 + add > y || ((add*add) > 0 && n - 1 + (add*add) < x)) cout << -1 << endl;
	else {
		cout << add << endl;
		lp(i, n - 1) cout << 1 << endl;
	}
}

int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);

	//ios::sync_with_stdio(false);

	solveC();

	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATED
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <list>
#include <algorithm>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <bitset>
#include <math.h>
#include <iomanip>
#include <complex>

using namespace std;

#define INF 2000000000
#define OO 0x7fffffff
#define OOO 1.7e308
#define ll long long
#define ull unsigned long long
#define lp(i,n) for(int i=0;i<n;i++)
#define rep(i,j,n) for(int i=j;i<n;i++)
#define clr(memo, j) memset(memo, j, sizeof memo)
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define All(a) a.begin(), a.end()
#define even(x) x%2==0
#define odd(x) x%2!=0
#define rd(x) scanf("%d", &x)
#define pt(x) printf("%d", x)

typedef pair<int, int> ii;
typedef pair<int, long long> pill;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ii> vii;
typedef vector<ll> vll;
typedef vector<vii> vvii;

const double PI = acos(-1.0);
const double EPS = (1e-10);

bool comp(ull x, ull y) { return x > y; }

int dx[] = { 0, 0, 1, -1, 1, 1, -1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

class UnionFind {
private: vi p, rank;
public:
	UnionFind(int N) {
		rank.assign(N, 0);
		p.assign(N, 0);
		for (int i = 0; i < N; i++) p[i] = i;
	}

	int findSet(int i) { return (p[i] == i) ? i : (p[i] = findSet(p[i])); }
	bool isSameSet(int i, int j) { return findSet(i) == findSet(j); }
	void unionSet(int i, int j) {
		if (!isSameSet(i, j)) {
			int x = findSet(i), y = findSet(j);
			if (rank[x] > rank[y]) {
				p[y] = x;
			}
			else {
				p[x] = y;
				if (rank[x] == rank[y]) rank[y]++;
			}
		}
	}
};

// CP3 geometry
struct point {
	double x, y;
	point() { x = y = 0.0; }
	point(double _x, double _y) {
		x = _x;
		y = _y;
	}

	bool operator == (point other) const {
		return (fabs(x - other.x) < EPS && fabs(y - other.y) < EPS);
	}

	double dist(point p1, point p2) {
		return hypot(p1.x - p2.x, p1.y - p2.y);
	}
};

struct line { double a, b, c; };

void pointsToLine(point p1, point p2, line &l) {
	if (fabs(p1.x - p2.x) < EPS) {
		l.a = 1.0; l.b = 0.0; l.c = -p1.x;
	}
	else {
		l.a = -(double)(p1.y - p2.y) / (p1.x - p2.x);
		l.b = 1.0;
		l.c = -(double)(l.a*p1.x) - p1.y;
	}
}

bool areParallel(line l1, line l2) {
	return (fabs(l1.a - l2.a) < EPS) && (fabs(l1.b - l2.b) < EPS);
}

bool areSame(line l1, line l2) {
	return areParallel(l1, l2) && (fabs(l1.c - l2.c) < EPS);
}

bool areIntersect(line l1, line l2, point &p) {
	if (areParallel(l1, l2)) return false;

	p.x = (l2.b*l1.c - l1.b*l2.c) / (l2.a*l1.b - l1.a*l2.b);
	if (fabs(l1.b) > EPS) p.y = -(l1.a*p.x + l1.c);
	else p.y = -(l2.a*p.x + l2.c);

	return true;
}

struct vec {
	double x, y;
	vec(double _x, double _y) {
		x = _x;
		y = _y;
	}
};

vec toVec(point a, point b) {
	return vec(b.x - a.x, b.y - a.y);
}

double cross(vec a, vec b) {
	return a.x*b.y - a.y*b.x;
}

bool ccw(point p, point q, point r) {
	return cross(toVec(p, q), toVec(p, r)) > 0;
}

bool colinear(point p, point q, point r) {
	return fabs(cross(toVec(p, q), toVec(p, r))) < EPS;
}

// Complex Geometry
/*
typedef complex<double> point;

#define X real()
#define Y real()

#define angle(a)   (atan2((a).imag(), (a).real()))
#define vec(a, b)  ((b)-(a))

#define length(a)     (hypot((a).imag(), (a).real()))
#define normalize(a)  (a)/length(a)

#define dotProduct(a, b)    ((conj(a)*(b)).real())
#define crossProduct(a, b)  ((conj(a)*(b)).imag())

#define same(p1, p2)  (dotProduct(vec(p1, p2), vec(p1, p2)) < EPS)
*/

bool isprime(long long n) {
	if (n < 2) return false;
	for (long long i = 2; i*i <= n; i++) {
		if (n % i == 0) { return false; }
	}
	return true;
}

vector<int> getdividors(int n) {
	vector<int> dividors;
	int i;
	for (i = 1; i*i<n; i++) {
		if (n % i == 0) {
			dividors.push_back(i);
			dividors.push_back(n / i);
		}
	}
	if (i*i == n) dividors.push_back(i);
	return dividors;
}

ll gcd(ll a, ll b) {
	return b ? gcd(b, a%b) : a;
}

ll C(ll a, ll b) {
	if (b > a - b) return C(a, a - b);

	vector<ll> nom, den;

	for (ll i = a; i > a - b; i--) nom.push_back(i);
	for (ll i = 2; i <= b; i++) den.push_back(i);

	ll lenNom = nom.size();
	ll lenDen = den.size();

	for (int i = 0; i < lenNom; i++) {
		for (int j = 0; j < lenDen; j++) {
			ll g = gcd(nom[i], den[j]);
			if (g > 1) {
				nom[i] /= g;
				den[j] /= g;
			}
		}
	}

	ll top = 1;
	ll bot = 1;

	for (int i = 0; i < lenNom; i++) top *= nom[i];
	for (int i = 0; i < lenDen; i++) bot *= den[i];

	return top / bot;
}

bool my_sort(ll x, ll y) {
	if (x > y) return true;
	return false;
}

void solveC() {
	ll n, x, y;
	cin >> n >> x >> y;

	ll sum = n - 1;
	ll rem = x - sum;

	ll add = sqrt(rem);
	if (rem*rem != add) add++;

	if (n - 1 + add > y || n - 1 + (add*add) < x) cout << -1 << endl;
	else {
		cout << add << endl;
		lp(i, n - 1) cout << 1 << endl;
	}
}

int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);

	//ios::sync_with_stdio(false);

	solveC();

	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATED
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <list>
#include <algorithm>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <bitset>
#include <math.h>
#include <iomanip>
#include <complex>

using namespace std;

#define INF 2000000000
#define OO 0x7fffffff
#define OOO 1.7e308
#define ll long long
#define ull unsigned long long
#define lp(i,n) for(int i=0;i<n;i++)
#define rep(i,j,n) for(int i=j;i<n;i++)
#define clr(memo, j) memset(memo, j, sizeof memo)
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define All(a) a.begin(), a.end()
#define even(x) x%2==0
#define odd(x) x%2!=0
#define rd(x) scanf("%d", &x)
#define pt(x) printf("%d", x)

typedef pair<int, int> ii;
typedef pair<int, long long> pill;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ii> vii;
typedef vector<ll> vll;
typedef vector<vii> vvii;

const double PI = acos(-1.0);
const double EPS = (1e-10);

bool comp(ull x, ull y) { return x > y; }

int dx[] = { 0, 0, 1, -1, 1, 1, -1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

class UnionFind {
private: vi p, rank;
public:
	UnionFind(int N) {
		rank.assign(N, 0);
		p.assign(N, 0);
		for (int i = 0; i < N; i++) p[i] = i;
	}

	int findSet(int i) { return (p[i] == i) ? i : (p[i] = findSet(p[i])); }
	bool isSameSet(int i, int j) { return findSet(i) == findSet(j); }
	void unionSet(int i, int j) {
		if (!isSameSet(i, j)) {
			int x = findSet(i), y = findSet(j);
			if (rank[x] > rank[y]) {
				p[y] = x;
			}
			else {
				p[x] = y;
				if (rank[x] == rank[y]) rank[y]++;
			}
		}
	}
};

// CP3 geometry
struct point {
	double x, y;
	point() { x = y = 0.0; }
	point(double _x, double _y) {
		x = _x;
		y = _y;
	}

	bool operator == (point other) const {
		return (fabs(x - other.x) < EPS && fabs(y - other.y) < EPS);
	}

	double dist(point p1, point p2) {
		return hypot(p1.x - p2.x, p1.y - p2.y);
	}
};

struct line { double a, b, c; };

void pointsToLine(point p1, point p2, line &l) {
	if (fabs(p1.x - p2.x) < EPS) {
		l.a = 1.0; l.b = 0.0; l.c = -p1.x;
	}
	else {
		l.a = -(double)(p1.y - p2.y) / (p1.x - p2.x);
		l.b = 1.0;
		l.c = -(double)(l.a*p1.x) - p1.y;
	}
}

bool areParallel(line l1, line l2) {
	return (fabs(l1.a - l2.a) < EPS) && (fabs(l1.b - l2.b) < EPS);
}

bool areSame(line l1, line l2) {
	return areParallel(l1, l2) && (fabs(l1.c - l2.c) < EPS);
}

bool areIntersect(line l1, line l2, point &p) {
	if (areParallel(l1, l2)) return false;

	p.x = (l2.b*l1.c - l1.b*l2.c) / (l2.a*l1.b - l1.a*l2.b);
	if (fabs(l1.b) > EPS) p.y = -(l1.a*p.x + l1.c);
	else p.y = -(l2.a*p.x + l2.c);

	return true;
}

struct vec {
	double x, y;
	vec(double _x, double _y) {
		x = _x;
		y = _y;
	}
};

vec toVec(point a, point b) {
	return vec(b.x - a.x, b.y - a.y);
}

double cross(vec a, vec b) {
	return a.x*b.y - a.y*b.x;
}

bool ccw(point p, point q, point r) {
	return cross(toVec(p, q), toVec(p, r)) > 0;
}

bool colinear(point p, point q, point r) {
	return fabs(cross(toVec(p, q), toVec(p, r))) < EPS;
}

// Complex Geometry
/*
typedef complex<double> point;

#define X real()
#define Y real()

#define angle(a)   (atan2((a).imag(), (a).real()))
#define vec(a, b)  ((b)-(a))

#define length(a)     (hypot((a).imag(), (a).real()))
#define normalize(a)  (a)/length(a)

#define dotProduct(a, b)    ((conj(a)*(b)).real())
#define crossProduct(a, b)  ((conj(a)*(b)).imag())

#define same(p1, p2)  (dotProduct(vec(p1, p2), vec(p1, p2)) < EPS)
*/

bool isprime(long long n) {
	if (n < 2) return false;
	for (long long i = 2; i*i <= n; i++) {
		if (n % i == 0) { return false; }
	}
	return true;
}

vector<int> getdividors(int n) {
	vector<int> dividors;
	int i;
	for (i = 1; i*i<n; i++) {
		if (n % i == 0) {
			dividors.push_back(i);
			dividors.push_back(n / i);
		}
	}
	if (i*i == n) dividors.push_back(i);
	return dividors;
}

ll gcd(ll a, ll b) {
	return b ? gcd(b, a%b) : a;
}

ll C(ll a, ll b) {
	if (b > a - b) return C(a, a - b);

	vector<ll> nom, den;

	for (ll i = a; i > a - b; i--) nom.push_back(i);
	for (ll i = 2; i <= b; i++) den.push_back(i);

	ll lenNom = nom.size();
	ll lenDen = den.size();

	for (int i = 0; i < lenNom; i++) {
		for (int j = 0; j < lenDen; j++) {
			ll g = gcd(nom[i], den[j]);
			if (g > 1) {
				nom[i] /= g;
				den[j] /= g;
			}
		}
	}

	ll top = 1;
	ll bot = 1;

	for (int i = 0; i < lenNom; i++) top *= nom[i];
	for (int i = 0; i < lenDen; i++) bot *= den[i];

	return top / bot;
}

bool my_sort(ll x, ll y) {
	if (x > y) return true;
	return false;
}

void solveC() {
	ll n, x, y;
	cin >> n >> x >> y;

	ll sum = n - 1;
	ll rem = x - sum;

	ll add = sqrt(rem);
	if (add*add != rem) add++;

	if (n - 1 + add > y || ((add*add) > 0 && n - 1 + (add*add) < x)) cout << -1 << endl;
	else {
		cout << add << endl;
		lp(i, n - 1) cout << 1 << endl;
	}
}

int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);

	//ios::sync_with_stdio(false);

	solveC();

	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATED
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <list>
#include <algorithm>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <bitset>
#include <math.h>
#include <iomanip>
#include <complex>

using namespace std;

#define INF 2000000000
#define OO 0x7fffffff
#define OOO 1.7e308
#define ll long long
#define ull unsigned long long
#define lp(i,n) for(int i=0;i<n;i++)
#define rep(i,j,n) for(int i=j;i<n;i++)
#define clr(memo, j) memset(memo, j, sizeof memo)
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define All(a) a.begin(), a.end()
#define even(x) x%2==0
#define odd(x) x%2!=0
#define rd(x) scanf("%d", &x)
#define pt(x) printf("%d", x)

typedef pair<int, int> ii;
typedef pair<int, long long> pill;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ii> vii;
typedef vector<ll> vll;
typedef vector<vii> vvii;

const double PI = acos(-1.0);
const double EPS = (1e-10);

bool comp(ull x, ull y) { return x > y; }

int dx[] = { 0, 0, 1, -1, 1, 1, -1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

class UnionFind {
private: vi p, rank;
public:
	UnionFind(int N) {
		rank.assign(N, 0);
		p.assign(N, 0);
		for (int i = 0; i < N; i++) p[i] = i;
	}

	int findSet(int i) { return (p[i] == i) ? i : (p[i] = findSet(p[i])); }
	bool isSameSet(int i, int j) { return findSet(i) == findSet(j); }
	void unionSet(int i, int j) {
		if (!isSameSet(i, j)) {
			int x = findSet(i), y = findSet(j);
			if (rank[x] > rank[y]) {
				p[y] = x;
			}
			else {
				p[x] = y;
				if (rank[x] == rank[y]) rank[y]++;
			}
		}
	}
};

// CP3 geometry
struct point {
	double x, y;
	point() { x = y = 0.0; }
	point(double _x, double _y) {
		x = _x;
		y = _y;
	}

	bool operator == (point other) const {
		return (fabs(x - other.x) < EPS && fabs(y - other.y) < EPS);
	}

	double dist(point p1, point p2) {
		return hypot(p1.x - p2.x, p1.y - p2.y);
	}
};

struct line { double a, b, c; };

void pointsToLine(point p1, point p2, line &l) {
	if (fabs(p1.x - p2.x) < EPS) {
		l.a = 1.0; l.b = 0.0; l.c = -p1.x;
	}
	else {
		l.a = -(double)(p1.y - p2.y) / (p1.x - p2.x);
		l.b = 1.0;
		l.c = -(double)(l.a*p1.x) - p1.y;
	}
}

bool areParallel(line l1, line l2) {
	return (fabs(l1.a - l2.a) < EPS) && (fabs(l1.b - l2.b) < EPS);
}

bool areSame(line l1, line l2) {
	return areParallel(l1, l2) && (fabs(l1.c - l2.c) < EPS);
}

bool areIntersect(line l1, line l2, point &p) {
	if (areParallel(l1, l2)) return false;

	p.x = (l2.b*l1.c - l1.b*l2.c) / (l2.a*l1.b - l1.a*l2.b);
	if (fabs(l1.b) > EPS) p.y = -(l1.a*p.x + l1.c);
	else p.y = -(l2.a*p.x + l2.c);

	return true;
}

struct vec {
	double x, y;
	vec(double _x, double _y) {
		x = _x;
		y = _y;
	}
};

vec toVec(point a, point b) {
	return vec(b.x - a.x, b.y - a.y);
}

double cross(vec a, vec b) {
	return a.x*b.y - a.y*b.x;
}

bool ccw(point p, point q, point r) {
	return cross(toVec(p, q), toVec(p, r)) > 0;
}

bool colinear(point p, point q, point r) {
	return fabs(cross(toVec(p, q), toVec(p, r))) < EPS;
}

// Complex Geometry
/*
typedef complex<double> point;

#define X real()
#define Y real()

#define angle(a)   (atan2((a).imag(), (a).real()))
#define vec(a, b)  ((b)-(a))

#define length(a)     (hypot((a).imag(), (a).real()))
#define normalize(a)  (a)/length(a)

#define dotProduct(a, b)    ((conj(a)*(b)).real())
#define crossProduct(a, b)  ((conj(a)*(b)).imag())

#define same(p1, p2)  (dotProduct(vec(p1, p2), vec(p1, p2)) < EPS)
*/

bool isprime(long long n) {
	if (n < 2) return false;
	for (long long i = 2; i*i <= n; i++) {
		if (n % i == 0) { return false; }
	}
	return true;
}

vector<int> getdividors(int n) {
	vector<int> dividors;
	int i;
	for (i = 1; i*i<n; i++) {
		if (n % i == 0) {
			dividors.push_back(i);
			dividors.push_back(n / i);
		}
	}
	if (i*i == n) dividors.push_back(i);
	return dividors;
}

ll gcd(ll a, ll b) {
	return b ? gcd(b, a%b) : a;
}

ll C(ll a, ll b) {
	if (b > a - b) return C(a, a - b);

	vector<ll> nom, den;

	for (ll i = a; i > a - b; i--) nom.push_back(i);
	for (ll i = 2; i <= b; i++) den.push_back(i);

	ll lenNom = nom.size();
	ll lenDen = den.size();

	for (int i = 0; i < lenNom; i++) {
		for (int j = 0; j < lenDen; j++) {
			ll g = gcd(nom[i], den[j]);
			if (g > 1) {
				nom[i] /= g;
				den[j] /= g;
			}
		}
	}

	ll top = 1;
	ll bot = 1;

	for (int i = 0; i < lenNom; i++) top *= nom[i];
	for (int i = 0; i < lenDen; i++) bot *= den[i];

	return top / bot;
}

bool my_sort(ll x, ll y) {
	if (x > y) return true;
	return false;
}

void solveC() {
	ll n, x, y;
	cin >> n >> x >> y;

	ll sum = n - 1;
	ll rem = x - sum;

	ll add = sqrt(rem);
	if (add*add != rem) add++;

	cout << add << endl;
	cout << add*add << endl;

	if (n - 1 + add > y || ((add*add) > 0 && n - 1 + (add*add) < x)) cout << -1 << endl;
	else {
		cout << add << endl;
		lp(i, n - 1) cout << 1 << endl;
	}
}

int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);

	//ios::sync_with_stdio(false);

	solveC();

	return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-6;
const int INF = 1e9 + 7;
const int N = 1e5 + 10;
ll n, m, k, t;

int main()
{
	ll x, y;
	bool f = false;
	cin >> n >> x >> y;
	ll a;
	a = floor(sqrt(x)) + 1;
	ll tmp = a + n - 1;
	if(tmp <= y)
	{
		f = true; m = n - 1;
	}
	if(!f)
	{
		a = a - 1;
		ll cnt = x - a * a;
		if(cnt <= (n - 1))
		{
			if((a + cnt) <= y)
			{
				f = true; m = cnt;
			}
		}
	}
	if(!f) puts("-1");
	else
	{
		printf("%I64d\n", a);
		while(m--) puts("1");
	}
	return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-6;
const int INF = 1e9 + 7;
const int N = 1e5 + 10;
int n, m, k, t;

int main()
{
	ll x, y;
	cin >> n >> x >> y;
	ll a;
	a = ceil(sqrt(x / n));
	ll b = (a - 1) * (a - 1);
	a = a * a;
	m = 1;
	while(1)
	{
		ll tmp = a * m + b * (n - m);
		if(tmp >= x)
		{
			break;
		}
		m++;
	}
	ll cnt = m * (ll)sqrt(a) + (n - m) * (ll)sqrt(b);
	if(cnt > y) puts("-1");
	else
	{
		k = n - m;
		b = (ll)sqrt(b);
		a = (ll)sqrt(a);
		while(k--) printf("%d\n", b);
		while(m--) printf("%d\n", a);
	}
	return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef __int64 ll;
const double eps = 1e-6;
const int INF = 1e9 + 7;
const int N = 1e5 + 10;
ll n, m, k, t;

int main()
{
	ll x, y;
	bool f = false;
	cin >> n >> x >> y;
	ll a;
	a = floor(sqrt(x)) + 1;
	ll tmp = a + n - 1;
	if(tmp <= y)
	{
		f = true; m = n - 1;
	}
	if(!f)
	{
		a = a - 1;
		ll cnt = x - a * a;
		if(cnt <= (n - 1))
		{
			if((a + cnt) <= y)
			{
				f = true; m = cnt;
			}
		}
	}
	if(!f) printf("-1\n");
	else
	{
		while(m--) printf("1\n");
		printf("%I64d\n", a);
	}
	return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef __int64 ll;
const double eps = 1e-6;
const int INF = 1e9 + 7;
const int N = 1e5 + 10;
ll n, m, k, t;

int main()
{
	ll x, y;
	bool f = false;
	cin >> n >> x >> y;
	ll a;
	a = floor(sqrt(x)) + 1;
	ll tmp = a + n - 1;
	if(tmp <= y)
	{
		f = true; m = n - 1;
	}
	if(!f)
	{
		a = a - 1;
		ll cnt = x - a * a;
		if(cnt <= (n - 1))
		{
			if((a + cnt) <= y)
			{
				f = true; m = cnt;
			}
		}
	}
	if(!f) puts("-1");
	else
	{
		printf("%I64d\n", a);
		while(m--) puts("1");
	}
	return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-6;
const int INF = 1e9 + 7;
const int N = 1e5 + 10;
ll n, m, k, t;

int main()
{
	ll x, y;
	bool f = false;
	cin >> n >> x >> y;
	ll a;
	a = floor(sqrt(x));
	ll cnt = x - a * a;
	if(cnt <= (n - 1))
	{
		if((a + cnt) <= y)
		{
			f = true; m = cnt;
		}
	}
	if(!f)
	{
		a++;
		ll tmp = a + n - 1;
		if(tmp <= y)
		{
			f = true; m = n - 1;
		}
	}
	if(!f) puts("-1");
	else
	{
		cout << a << endl;
		ll b = 1;
		while(m--) cout << b << endl;
	}
	return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-6;
const int INF = 1e9 + 7;
const int N = 1e5 + 10;
int n, m, k, t;

int main()
{
	ll x, y;
	bool f = false;
	cin >> n >> x >> y;
	ll a;
	a = floor(sqrt(x));
	ll cnt = x - a * a;
	if(cnt <= (n - 1))
	{
		if((a + cnt) <= y)
		{
			f = true; m = cnt;
		}
	}
	if(!f)
	{
		a++;
		ll tmp = a + n - 1;
		if(tmp <= y)
		{
			f = true; m = n - 1;
		}
	}
	if(!f) puts("-1");
	else
	{
		printf("%I64d\n", a);
		while(m--) puts("1");
	}
	return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef __int64 ll;
const double eps = 1e-6;
const int INF = 1e9 + 7;
const int N = 1e5 + 10;
ll n, m, k, t;

int main()
{
	ll x, y, a;
	bool f = false;
	cin >> n >> x >> y;
	if(y < n)
	{
		printf("-1\n");
	}
	else
	{
		a = (y - (n - 1));
		if((a * a + n - 1) < x) printf("-1\n");
		else
		{
			for(int i = 1; i < n; i++) printf("1\n");
			printf("%I64d\n", a);
		}

	}
	return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-6;
const int INF = 1e9 + 7;
const int N = 1e5 + 10;
int n, m, k, t;

int main()
{
	ll x, y;
	cin >> n >> x >> y;
	ll a;
	a = floor(sqrt(x)) + 1;
	ll tmp = a + n - 1;
	if(tmp > y) puts("-1");
	else
	{
		n--;
		printf("%I64d\n", a);
		while(n--) puts("1");
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

int main()
 {
    unsigned long long n,x,y,a=0,ans=0;
    cin>>n>>x>>y;
    int ar[n+3];
    if(y<n) cout<<"-1\n";
    for(int i=1;i<=n;i++) ar[i]=1;
    ar[1]=y-n+1;
    ans=ar[1]*ar[1]+(n-1);
    //cout<<ans<<" "<<x<<endl;
    if(ans>=x){
        for(int i=1;i<=n;i++) cout<<ar[i]<<endl;
    }
    else cout<<"-1\n";
    return 0;
 }


#include <bits/stdc++.h>
using namespace std;

int main()
 {
    long long n,x,y,a=0,ans=0;
    cin>>n>>x>>y;
    int ar[n+3];
    if(y<n) cout<<"-1\n";
    for(int i=1;i<=n;i++) ar[i]=1;
    ar[1]=y-n+1;
    ans=ar[1]*ar[1]+(n-1);
    if(ans>=x){
        for(int i=1;i<=n;i++) cout<<ar[i]<<endl;
    }
    else cout<<"-1\n";
    return 0;
 }


#include <bits/stdc++.h>
using namespace std;

int main()
 {
    unsigned long long n,x,y,a=0,ans=0;
    cin>>n>>x>>y;
    int ar[n+3];
    if(y<n) cout<<"-1\n";
    for(int i=1;i<=n;i++) ar[i]=1;
    ar[1]=y-n+1;
    ans=ar[1]*ar[1]+(n-1);
    cout<<ans<<" "<<x<<endl;
    if(ans>=x){
        for(int i=1;i<=n;i++) cout<<ar[i]<<endl;
    }
    else cout<<"-1\n";
    return 0;
 }


#include <bits/stdc++.h>
using namespace std;

int main()
 {
    unsigned long long n,x,y,a=0,ans=0;
    cin>>n>>x>>y;
    int ar[n+3];
    if(y<n) cout<<"-1\n";
    for(int i=1;i<=n;i++) ar[i]=1;
    ar[1]=y-n+1;
    ans=(unsigned long long)ar[1]*ar[1]+(unsigned long long)(n-1);
    //cout<<ans<<" "<<x<<endl;
    if(ans>=x){
        for(int i=1;i<=n;i++) cout<<ar[i]<<endl;
    }
    else cout<<"-1\n";
    return 0;
 }


#include <bits/stdc++.h>
using namespace std;

int main()
 {
    unsigned long long n,x,y,a=0,ans=0;
    cin>>n>>x>>y;
    int ar[n+3];
    if(y<n ) {
    cout<<"-1\n";
    return 0;
    }
    for(int i=1;i<=n;i++) ar[i]=1;
    ar[1]=y-n+1;
    ans=(unsigned long long)ar[1]*ar[1]+(unsigned long long)(n-1);
    //cout<<ans<<" "<<x<<endl;
    if(ans>=x){
        for(int i=1;i<=n;i++) cout<<ar[i]<<endl;
    }
    else cout<<"-1\n";
    return 0;
 }


#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

int main(int argc, char const *argv[])
{
	long long n,x,y;
	cin>>n>>x>>y;
	long long t = sqrt(x) + 1;
	if(t > y)
		printf("-1\n");
	else{
		if(n - 1 + t<=y){
			for(int i = 1;i<=n-1;i++)
				printf("1\n");
			cout<<t<<endl;
		}
		else
			printf("-1\n");
	}
	return 0;
}


#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

int main(int argc, char const *argv[])
{
	long long n,x,y;
	cin>>n>>x>>y;
	long long t = y - n + 1;
	if(t <= 0)
		printf("-1\n");
	else{
		if( n - 1 + t*t >= x){
			for(int i = 0;i < n-1;i++)
				printf("1\n");
			cout<<t<<endl;
		}
		else
			printf("-1\n");
	}
	return 0;
}


#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

int main(int argc, char const *argv[])
{
	long long n,x,y;
	cin>>n>>x>>y;
	long long t = sqrt(x) + 1;
	if(t >= y)
		printf("-1\n");
	else{
		if(n - 1 + t <= y){
			for(int i = 1;i<=n-1;i++)
				printf("1\n");
			cout<<t<<endl;
		}
		else
			printf("-1\n");
	}
	return 0;
}


#include <bits/stdc++.h>
//112C.cpp

using namespace std;

int main()
{

    long long int n , x , y;
    cin >> n >> x >> y;
    vector<long long int> v;
    for(long long int i = 0 ; i < n - 1 ; i++){
        v.push_back(1);
    }

    //cout << v[0]  << "  " << v[1] << " " <<endl;

    long long int sum = 0 , var = 0 , m = 0;
    sum = accumulate(v.begin() , v.end() , 0);
    //cout << sum << endl << endl ;

    n = y - sum;
    m = x - sum;
    //cout << m << endl << n << endl <<endl;
    for(int i=1 ; i <= n ; i++){
        if( (i*i)  >= m){
            var = i ;
            break;
        }
    }

    //cout << var << endl;

    if(var + sum <= y && var > 0){
        for(int i = 0 ; i < v.size()  ; i++){
            cout << v[i] << endl;
        }
     cout << var;
    }
    else
        cout << "-1";

    return 0;
}


#include <bits/stdc++.h>
//112C.cpp

using namespace std;

int main()
{

    long long int n , x , y;
    cin >> n >> x >> y;
    vector<long long int> v;
    for(long long int i = 0 ; i < n - 1 ; i++){
        v.push_back(1);
    }

    //cout << v[0]  << "  " << v[1] << " " <<endl;

    long long int sum = 0 , var = 0 , m = 0;
    sum = accumulate(v.begin() , v.end() , 0);
    //cout << sum << endl << endl ;

    n = y - sum;
    m = x - sum;
    //cout << m << endl << n << endl <<endl;
    for(long long int i=1 ; i <= n ; i++){
        if( (i*i)  >= m){
            var = i ;
            break;
        }
    }

    //cout << var << endl;

    if(var + sum <= y && var > 0){
        for(long long int i = 0 ; i < v.size()  ; i++){
            cout << v[i] << endl;
        }
     cout << var;
    }
    else
        cout << "-1";

    return 0;
}


#include <bits/stdc++.h>
//112C.cpp

using namespace std;

int main()
{

    long long int n , x , y;
    cin >> n >> x >> y;
    vector<long long int> v;
    for(long long int i = 0 ; i < n - 1 ; i++){
        v.push_back(1);
    }

    //cout << v[0]  << "  " << v[1] << " " <<endl;

    long long int sum = 0 , var = 0 , m = 0;
    sum = accumulate(v.begin() , v.end() , 0);
    cout << sum << endl << endl ;

    n = y - sum;
    m = x - sum;
    cout << m << endl << n << endl <<endl;
    for(long long int i=1 ; i <= n ; i++){
        if( (i*i)  >= m){
            var = i ;
            break;
        }
    }

    cout << var << endl;

    if(var + sum <= y && var > 0){
        for(long long int i = 0 ; i < v.size()  ; i++){
            cout << v[i] << endl;
        }
     cout << var;
    }
    else
        cout << "-1";

    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
using namespace std;

typedef vector<int> vi;
#define ll long long
#define loop(i,n) for(int i=0; i<n; i++)
#define loop1(i,n) for(int i=1; i<=n; i++)
#define loopi(i,s,e) for(int i=s; i < e; i++)
#define loopiRev(i,s,e) for(int i=s; i >= e; i--)
#define PI 3.14159265359
#define x first
#define y second
#define point pair<int,int>
#define len(s)   (int)s.length()
#define sz(v)    (int)v.size()
#define all(a)   a.begin(),a.end()
#define clr(x, val)	memset((x), (val), sizeof(x))

//you don't know math, unless you can do math!

vector<vector<int> > adjList;
vector<bool> visted;

void dfs(int node){
    visted[node]=1;
    for(int i=0; i < adjList[node].size(); i++){
        int child= adjList[node][i];
        if(!visted[child]) dfs(child);
    }

}
int main() {
    //freopen("input.txt" , "r" , stdin) ;
    //freopen("output.txt" , "w" , stdout) ;

    cin.tie(0);
    cin.sync_with_stdio(0);

    ll n,x,y; cin>>n>>x>>y;

    if((y - n + 1) * (y - n + 1) + (n-1) < x) return cout<<"-1", 0;
    loop(i, n-1) cout<<1<<' ';
    cout<<y-n+1;

}


#include <iostream>
#include <bits/stdc++.h>
using namespace std;

typedef vector<int> vi;
#define ll long long
#define loop(i,n) for(int i=0; i<n; i++)
#define loop1(i,n) for(int i=1; i<=n; i++)
#define loopi(i,s,e) for(int i=s; i < e; i++)
#define loopiRev(i,s,e) for(int i=s; i >= e; i--)
#define PI 3.14159265359
#define x first
#define y second
#define point pair<int,int>
#define len(s)   (int)s.length()
#define sz(v)    (int)v.size()
#define all(a)   a.begin(),a.end()
#define clr(x, val)	memset((x), (val), sizeof(x))

//you don't know math, unless you can do math!

vector<vector<int> > adjList;
vector<bool> visted;

void dfs(int node){
    visted[node]=1;
    for(int i=0; i < adjList[node].size(); i++){
        int child= adjList[node][i];
        if(!visted[child]) dfs(child);
    }

}
int main() {
    //freopen("input.txt" , "r" , stdin) ;
    //freopen("output.txt" , "w" , stdout) ;

    cin.tie(0);
    cin.sync_with_stdio(0);

    ll n,x,y; cin>>n>>x>>y;

    if(((y - n + 1) * (y - n + 1) + (n-1) < x )|| (n > y) ) return cout<<"-1", 0;

    loop(i, n-1) cout<<1<<'\n';
    cout<<y-n+1;

}


#include <bits/stdc++.h>

using namespace std;

int main()
{
//
//    freopen("in.txt","r",stdin);
//    freopen("out.txt","w",stdout);
    long long n,x,y,temp;
    cin>>n>>x>>y;
    temp=(y-n+1)*(y-n+1);
    if(temp+n-1>=x){
        printf("%d\n",y-n+1);
        for(int i=0;i<n-1;i++) printf("1\n");
    }else printf("-1");
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
//
//    freopen("in.txt","r",stdin);
//    freopen("out.txt","w",stdout);
    long long n,x,y,temp;
    cin>>n>>x>>y;
    temp=n-1;
    if((y-n+1)*(y-n+1)+n-1>=x){
        printf("%d\n",y-n+1);
        for(int i=0;i<n-1;i++) printf("1\n");
    }else printf("-1");
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
//
//    freopen("in.txt","r",stdin);
//    freopen("out.txt","w",stdout);
    long long n,x,y,temp;
    cin>>n>>x>>y;
    if(y-n+1<=0){
        printf("-1"); return 0;
    }
    temp=(y-n+1)*(y-n+1);
    if(temp+n-1>=x){
        printf("%d\n",y-n+1);
        for(int i=0;i<n-1;i++) printf("1\n");
    }else printf("-1");
}


#include<bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    int64_t n,x,y,i;

    cin>>n>>x>>y;
    vector<int64_t> a;

    a.push_back(abs(y-(n-1)));
    for(i=0;i<n-1;i++){
        a.push_back(1);
    }
    int64_t p=0,q=0;
    for(i=0;i<a.size();i++){
        p += (a[i]*a[i]);
        q += a[i];
    }

    if(p < x || q > y || (a[0] < a[1])){
        cout<<-1<<endl;
        return 0;
    }

    for(int i=0;i<a.size();i++){
        cout<<a[i]<<endl;
    }

    return 0;
}


#include<bits/stdc++.h>
using namespace std;

const int M = 200000;

int main(){
    ios_base::sync_with_stdio(false);
    int64_t n,x,y,i;

    cin>>n>>x>>y;
    vector<int64_t> a;

    a.push_back((y-(n-1)));
    for(i=0;i<n-1;i++){
        a.push_back(1);
    }
    int64_t p=0,q=0;
    for(i=0;i<a.size();i++){
        p += (a[i]*a[i]);
        q += a[i];
    }

    if(p < x || q > y){
        cout<<-1<<endl;
        return 0;
    }

    for(int i=0;i<a.size();i++){
        cout<<a[i]<<endl;
    }

    return 0;
}


#include<bits/stdc++.h>
using namespace std;

const int M = 200000;

int main(){
    ios_base::sync_with_stdio(false);
    int64_t n,x,y,i;

    cin>>n>>x>>y;
    vector<int64_t> a;

    a.push_back((y-(n-1)));
    for(i=0;i<n-1;i++){
        a.push_back(1);
    }
    int64_t p=0;
    for(i=0;i<a.size();i++){
        p += (a[i]*a[i]);
    }

    if(p < x){
        cout<<-1<<endl;
        return 0;
    }

    for(int i=0;i<a.size();i++){
        cout<<a[i]<<endl;
    }

    return 0;
}


#include<bits/stdc++.h>
using namespace std;

const int M = 200000;
int a[M];

int main(){
    ios_base::sync_with_stdio(false);
    int64_t n,x,y;

    cin>>n>>x>>y;

    int64_t p = y/n;
    //cout<<p<<endl;
    for(int64_t i=0;i<n;i++){
        a[i] = p;
    }
    int64_t flag = 0,q=0;
    for(int i=0;i<n;i++){
        q += (a[i]*a[i]);
        if(q >= x){
            flag = 1;
            break;
        }
    }
    //cout<<q<<endl;
    //cout<<flag<<endl;
    if(flag == 0){
        cout<<-1<<endl;
        return 0;
    }
    for(int i=0;i<n;i++){
        cout<<a[i]<<endl;
    }

    return 0;
}


#include<bits/stdc++.h>
using namespace std;

const int M = 200000;

int main(){
    ios_base::sync_with_stdio(false);
    int64_t n,x,y,i;

    cin>>n>>x>>y;
    vector<int64_t> a;

    a.push_back(abs(y-(n-1)));
    for(i=0;i<n-1;i++){
        a.push_back(1);
    }
    int64_t p=0,q=0;
    for(i=0;i<a.size();i++){
        p += (a[i]*a[i]);
        q += a[i];
    }

    if(p < x || q > y){
        cout<<-1<<endl;
        return 0;
    }

    for(int i=0;i<a.size();i++){
        cout<<a[i]<<endl;
    }

    return 0;
}


/*
          Author : Mohamed Sameh
███▓▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▓▓╬╬╬╬╬╬▓█
███▓███████▓▓╬╬╬╬╬╬╬╬╬╬╬╬▓███▓▓▓▓█▓╬╬╬▓█
███████▓█████▓▓╬╬╬╬╬╬╬╬▓███▓╬╬╬╬╬╬╬▓╬╬▓█
████▓▓▓▓╬╬▓█████╬╬╬╬╬╬███▓╬╬╬╬╬╬╬╬╬╬╬╬╬█
███▓▓▓▓╬╬╬╬╬╬▓██╬╬╬╬╬╬▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
████▓▓▓╬╬╬╬╬╬╬▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
███▓█▓███████▓▓███▓╬╬╬╬╬╬▓███████▓╬╬╬╬▓█
████████████████▓█▓╬╬╬╬╬▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬█
███▓▓▓▓▓▓▓╬╬▓▓▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
████▓▓▓╬╬╬╬▓▓▓▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
███▓█▓▓▓▓▓▓▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
█████▓▓▓▓▓▓▓▓█▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
█████▓▓▓▓▓▓▓██▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
█████▓▓▓▓▓████▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
████▓█▓▓▓▓██▓▓▓▓██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
████▓▓███▓▓▓▓▓▓▓██▓╬╬╬╬╬╬╬╬╬╬╬╬█▓╬▓╬╬▓██
█████▓███▓▓▓▓▓▓▓▓████▓▓╬╬╬╬╬╬╬█▓╬╬╬╬╬▓██
█████▓▓█▓███▓▓▓████╬▓█▓▓╬╬╬▓▓█▓╬╬╬╬╬╬███
██████▓██▓███████▓╬╬╬▓▓╬▓▓██▓╬╬╬╬╬╬╬▓███
███████▓██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬████
███████▓▓██▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓████
████████▓▓▓█████▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█████
█████████▓▓▓█▓▓▓▓▓███▓╬╬╬╬╬╬╬╬╬╬╬▓██████
██████████▓▓▓█▓▓▓╬▓██╬╬╬╬╬╬╬╬╬╬╬▓███████
███████████▓▓█▓▓▓▓███▓╬╬╬╬╬╬╬╬╬▓████████
██████████████▓▓▓███▓▓╬╬╬╬╬╬╬╬██████████
███████████████▓▓▓██▓▓╬╬╬╬╬╬▓███████████
*/

// Author : Mohamed Sameh
#include<bits/stdc++.h>
using namespace std ;

typedef long long ll ;
typedef pair <int,int> P2i ;
////////////////////////////////////////////////////////////////////
#define pb push_back
#define f first
#define s second
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
///#Read And Write  From File
/*

  freopen("in.txt","r",stdin);
  freopen("out.txt","w",stdout);

*/
inline int ReadInt ()
{
    int t ;
    scanf ("%d" , &t) ;
    return t ;
}
inline ll ReadLong ()
{
    //return 1 +  rand()%1000000000000000000 ;
    ll t ;
    cin >> t ;
    return t ;
}
inline P2i ReadPair()
{
    P2i t ;
    t.f = ReadInt() ;
    t.s = ReadInt() ;
    return t ;
}
inline string ReadStr ()
{
    string t ;
    cin >> t ;
    return t ;

}
const int Max = 1e5 + 1;
int A [ Max ];
int n , y    ;
ll x , SX , SY ;

void Start ()
{
    int l = 1 , r = 1001  ;

 for (int i =0  ;i  < n ; i ++)
            A[i] = 1 ;

     SY = n ;
     SX = n ;
      if (SY <= y && SX >= x )
        return ;

    for (int i =0  ;i  < n ; i ++)
            {
                ll Number =  (y - SY) + 1  ;
                if (Number < 1 )
                {
                    cout << "R\n";
                    return ;
                }
                A[i] = Number ;
                SX-- ;
                SY-- ;

                SX +=(ll) (Number * Number )  ;
                SY += Number ;
                if (SY <= y && SX >= x )
                return ;
            }
}

int main ()
{
    n = ReadInt() ;
    x = ReadLong() ;
    y = ReadInt() ;
    Start() ;

    if (SY <= y && SX >= x ){
    for (int i  =0 ; i < n ; i ++)
        cout << A[i] <<"\n";
    }else
    cout << "-1\n";

    return 0 ;
}


/*
          Author : Mohamed Sameh
███▓▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▓▓╬╬╬╬╬╬▓█
███▓███████▓▓╬╬╬╬╬╬╬╬╬╬╬╬▓███▓▓▓▓█▓╬╬╬▓█
███████▓█████▓▓╬╬╬╬╬╬╬╬▓███▓╬╬╬╬╬╬╬▓╬╬▓█
████▓▓▓▓╬╬▓█████╬╬╬╬╬╬███▓╬╬╬╬╬╬╬╬╬╬╬╬╬█
███▓▓▓▓╬╬╬╬╬╬▓██╬╬╬╬╬╬▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
████▓▓▓╬╬╬╬╬╬╬▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
███▓█▓███████▓▓███▓╬╬╬╬╬╬▓███████▓╬╬╬╬▓█
████████████████▓█▓╬╬╬╬╬▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬█
███▓▓▓▓▓▓▓╬╬▓▓▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
████▓▓▓╬╬╬╬▓▓▓▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
███▓█▓▓▓▓▓▓▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
█████▓▓▓▓▓▓▓▓█▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
█████▓▓▓▓▓▓▓██▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
█████▓▓▓▓▓████▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
████▓█▓▓▓▓██▓▓▓▓██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
████▓▓███▓▓▓▓▓▓▓██▓╬╬╬╬╬╬╬╬╬╬╬╬█▓╬▓╬╬▓██
█████▓███▓▓▓▓▓▓▓▓████▓▓╬╬╬╬╬╬╬█▓╬╬╬╬╬▓██
█████▓▓█▓███▓▓▓████╬▓█▓▓╬╬╬▓▓█▓╬╬╬╬╬╬███
██████▓██▓███████▓╬╬╬▓▓╬▓▓██▓╬╬╬╬╬╬╬▓███
███████▓██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬████
███████▓▓██▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓████
████████▓▓▓█████▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█████
█████████▓▓▓█▓▓▓▓▓███▓╬╬╬╬╬╬╬╬╬╬╬▓██████
██████████▓▓▓█▓▓▓╬▓██╬╬╬╬╬╬╬╬╬╬╬▓███████
███████████▓▓█▓▓▓▓███▓╬╬╬╬╬╬╬╬╬▓████████
██████████████▓▓▓███▓▓╬╬╬╬╬╬╬╬██████████
███████████████▓▓▓██▓▓╬╬╬╬╬╬▓███████████
*/

// Author : Mohamed Sameh
#include<bits/stdc++.h>
using namespace std ;

typedef long long ll ;
typedef pair <int,int> P2i ;
////////////////////////////////////////////////////////////////////
#define pb push_back
#define f first
#define s second
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
///#Read And Write  From File
/*

  freopen("in.txt","r",stdin);
  freopen("out.txt","w",stdout);

*/
inline int ReadInt ()
{
    int t ;
    scanf ("%d" , &t) ;
    return t ;
}
inline ll ReadLong ()
{
    //return 1 +  rand()%1000000000000000000 ;
    ll t ;
    cin >> t ;
    return t ;
}
inline P2i ReadPair()
{
    P2i t ;
    t.f = ReadInt() ;
    t.s = ReadInt() ;
    return t ;
}
inline string ReadStr ()
{
    string t ;
    cin >> t ;
    return t ;

}
const int Max = 1e5 + 1 ;
ll A [ Max ] , B [ Max  ];
int n , y ;
ll x ;
ll XSum , YSum ;
bool Con ()
{
  if ( y/n >= 1 )
    {
        A[0] = ( y%n ? y/n+1 : y/n );
        for (int i = 1; i < n ; i++)
            A[i] = y/n;

            for (int i =0 ; i<n ; i++)
            {
                YSum+=A[i];
                XSum+= pow (A[i] ,2 );
            }
            sort ( A , A+n );
            return true ;
    }
    return false ;
}
int main ()
{

    n = ReadInt() ;
    x = ReadLong() ;
    y = ReadInt() ;

    if ( !Con () )
        cout << "-1\n";
    else
    {
        int Times = 1e5 ;
        while (  YSum > y || XSum < x  )
        {
            Times--;
            if (Times == 0 )
            {
                cout << "-1\n";
                return 0 ;
            }
            if ( YSum  > y )
            {
                YSum-=1 ;
                x-=pow (A[n-1] , 2 );
                A[n-1]-=1 ;
                x+= pow (A[n-1] , 2 );
                sort (A , A+n );
                continue ;
            }
            if (XSum < x )
            {
                ll Tem = A[0] + A[n-1];
                ll a , b ;
                if (Tem % 2 )
                {
                    a = Tem / 2 ;
                    b = Tem / 2 + 1 ;
                }else
                {
                    a = b = Tem / 2 ;
                }
                x -= pow (A[0] , 2 );
                x -= pow (A[n-1] , 2 );
                A[0] = a ;
                A [n-1] = b ;
                x += pow (A[0] , 2 );
                x += pow (A[n-1] , 2 );

            }
        }
        for (int i =0 ; i < n ; i++)
            cout << A[i] <<"\n";
    }

    return 0 ;
}


/*
          Author : Mohamed Sameh
███▓▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▓▓╬╬╬╬╬╬▓█
███▓███████▓▓╬╬╬╬╬╬╬╬╬╬╬╬▓███▓▓▓▓█▓╬╬╬▓█
███████▓█████▓▓╬╬╬╬╬╬╬╬▓███▓╬╬╬╬╬╬╬▓╬╬▓█
████▓▓▓▓╬╬▓█████╬╬╬╬╬╬███▓╬╬╬╬╬╬╬╬╬╬╬╬╬█
███▓▓▓▓╬╬╬╬╬╬▓██╬╬╬╬╬╬▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
████▓▓▓╬╬╬╬╬╬╬▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
███▓█▓███████▓▓███▓╬╬╬╬╬╬▓███████▓╬╬╬╬▓█
████████████████▓█▓╬╬╬╬╬▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬█
███▓▓▓▓▓▓▓╬╬▓▓▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
████▓▓▓╬╬╬╬▓▓▓▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
███▓█▓▓▓▓▓▓▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
█████▓▓▓▓▓▓▓▓█▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█
█████▓▓▓▓▓▓▓██▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
█████▓▓▓▓▓████▓▓▓█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
████▓█▓▓▓▓██▓▓▓▓██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
████▓▓███▓▓▓▓▓▓▓██▓╬╬╬╬╬╬╬╬╬╬╬╬█▓╬▓╬╬▓██
█████▓███▓▓▓▓▓▓▓▓████▓▓╬╬╬╬╬╬╬█▓╬╬╬╬╬▓██
█████▓▓█▓███▓▓▓████╬▓█▓▓╬╬╬▓▓█▓╬╬╬╬╬╬███
██████▓██▓███████▓╬╬╬▓▓╬▓▓██▓╬╬╬╬╬╬╬▓███
███████▓██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬████
███████▓▓██▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓████
████████▓▓▓█████▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█████
█████████▓▓▓█▓▓▓▓▓███▓╬╬╬╬╬╬╬╬╬╬╬▓██████
██████████▓▓▓█▓▓▓╬▓██╬╬╬╬╬╬╬╬╬╬╬▓███████
███████████▓▓█▓▓▓▓███▓╬╬╬╬╬╬╬╬╬▓████████
██████████████▓▓▓███▓▓╬╬╬╬╬╬╬╬██████████
███████████████▓▓▓██▓▓╬╬╬╬╬╬▓███████████
*/

// Author : Mohamed Sameh
#include<bits/stdc++.h>
using namespace std ;

typedef long long ll ;
typedef pair <int,int> P2i ;
////////////////////////////////////////////////////////////////////
#define pb push_back
#define f first
#define s second
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
///#Read And Write  From File
/*

  freopen("in.txt","r",stdin);
  freopen("out.txt","w",stdout);

*/
inline int ReadInt ()
{
    int t ;
    scanf ("%d" , &t) ;
    return t ;
}
inline ll ReadLong ()
{
    //return 1 +  rand()%1000000000000000000 ;
    ll t ;
    cin >> t ;
    return t ;
}
inline P2i ReadPair()
{
    P2i t ;
    t.f = ReadInt() ;
    t.s = ReadInt() ;
    return t ;
}
inline string ReadStr ()
{
    string t ;
    cin >> t ;
    return t ;

}
const int Max = 1e5 + 1;
int A [ Max ];
int n , y    ;
ll x , SX , SY ;

void Start ()
{
    int l = 1 , r = 1001  ;

 for (int i =0  ;i  < n ; i ++)
            A[i] = 1 ;

     SY = n ;
     SX = n ;
      if (SY <= y && SX >= x )
        return ;

    for (int i =0  ;i  < n ; i ++)
            {
                ll Number =  (y - SY) + 1  ;
                if (Number < 1 )
                {
                    return ;
                }
                A[i] = Number ;
                SX-- ;
                SY-- ;

                SX +=(ll) (Number * Number )  ;
                SY += Number ;
                if (SY <= y && SX >= x )
                return ;
            }
}

int main ()
{
    n = ReadInt() ;
    x = ReadLong() ;
    y = ReadInt() ;
    Start() ;

    if (SY <= y && SX >= x ){
    for (int i  =0 ; i < n ; i ++)
        cout << A[i] <<"\n";
    }else
    cout << "-1\n";

    return 0 ;
}


#include <bits/stdc++.h>
#define F first
#define ll long long
#define ld long double
#define pb push_back

using namespace std;

ll n,x,y;

vector<ll>v;

int main()
{
    cin >> n >> x >> y;
    if (n>y)
    {
        cout << -1 << endl;
        return 0;
    }
    ll val=y-(n-1);
    ll sum=(n-1)+(val*val);
    if (sum>=x)
    {
        for (int i=1;i<n;i++)cout << 1 << endl;
        cout << val << endl;
    }
    else cout << -1 << endl;
    return 0;
}


#include <bits/stdc++.h>
#define F first
#define ll long long
#define ld long double
#define pb push_back

using namespace std;

ll n,x,y;

vector<ll>v;

int main()
{
    cin >> n >> x >> y;
    ll val=y/n;
    ll rem=y%n;
    for (int i=0;i<n;i++)
    {
        v.pb((val+(rem>0)));
        rem--;
    }
    ll sum=0;
    for (auto X:v){sum+=X*X;}
    if (sum>=x)
    {
        for (auto X:v)
            cout << X << endl;
    }
    else cout << -1 << endl;
    return 0;
}


#include <bits/stdc++.h>
#define F first
#define ll long long
#define ld long double
#define pb push_back

using namespace std;

ll n,x,y;

vector<ll>v;

int main()
{
    cin >> n >> x >> y;
    if (n>y)
    {
        cout << -1 << endl;
        return 0;
    }
    ll val=y/n;
    ll rem=y%n;
    for (int i=0;i<n;i++)
    {
        v.pb((val+(rem>0)));
        rem--;
    }
    ll sum=0;
    for (auto X:v){sum+=X*X;}
    if (sum>=x)
    {
        for (auto X:v)
            cout << X << endl;
    }
    else cout << -1 << endl;
    return 0;
}


#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>

using namespace std;

const int MX = 1e5 + 7;

int n;
int y;
long long int x;

int main()
{
    cin >> n;
    cin >> x >> y;

    if(y % n == 0){
        if((y/n)*n*(y/n) < x)
            return cout << -1,0;
        else{
            for(int i=0 ; i<n ; i++)
                cout << (y/n) << endl;
        }
    }
    else{
        long long int sum = 0;
        int k = y%n;
        int a = y/n;
        int i=0;
        for(i=0 ; i<k ; i++)
            sum += (a+1)*(a+1);
        for(i ; i<n ; i++)
            sum += a*a;

        if(sum < x)
            return cout << -1 , 0;
        else{
            for(i=0 ; i<k ; i++)
                cout << (a+1) << endl;
            for(i ; i<n ; i++)
                cout << a << endl;
        }

    }
}


#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>

using namespace std;

const int MX = 1e5 + 7;

int n;
int y;
long long int x;
unsigned long long int a, sum;

int main()
{
    cin >> n;
    cin >> x >> y;
    a = y - n + 1;
    sum = a*a + n-1;
    if(n > y || a<1 || sum<x)
        return cout << -1,0;
    cout << a << endl;
    for(int i=1 ; i<n ; i++)
        cout << 1 << endl;
}


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cctype>
#include <stack>
#include <queue>
#include <list>
#include <vector>
#include <map>
#include <sstream>
#include <cmath>
#include <bitset>
#include <utility>
#include <set>
#define pi acos(-1.0)
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
int main()
{
	//x1^2+x2^2+...+xn^2>=x and x1+x2+...+xn<=y
	// as x1,x2,..xn are positive ints. min of xi=1 for all i in [1..n]
	// min value of y=n
	// or max value  of xn = y-(n-1)
	// all values of x1,x2,...xn are fixed.
	// [y-(n-1)]^2+n-1>=x --->check this

	int n,x,y;
	cin>>n>>x>>y;
	if(y>n-1)
	{
		while((y-n+1)*(y-n+1)+n-1 < x)
			y++;
		for(int i=0;i<=n-2;i++)
			cout<<"1"<<endl;
		cout<<y-(n-1)<<endl;
	}
	else
	{
		cout<<"-1"<<endl;
	}
 return 0;
 }


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cctype>
#include <stack>
#include <queue>
#include <list>
#include <vector>
#include <map>
#include <sstream>
#include <cmath>
#include <bitset>
#include <utility>
#include <set>
#define pi acos(-1.0)
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
int main()
{
	//x1^2+x2^2+...+xn^2>=x and x1+x2+...+xn<=y
	// as x1,x2,..xn are positive ints. min of xi=1 for all i in [1..n]
	// min value of y=n
	// or max value  of xn = y-(n-1)
	// all values of x1,x2,...xn are fixed.
	// [y-(n-1)]^2+n-1>=x --->check this

	ll n,x,y;
	cin>>n>>x>>y;
	if(y>=n)
	{
		if(((y-n+1)*(y-n+1)+n-1 >= x))
		{

		for(int i=0;i<=n-2;i++)
			cout<<"1"<<endl;
		cout<<y-(n-1)<<endl;
	}
		else
		{
			cout<<"-1"<<endl;
		}
	}
	else
	{
		cout<<"-1"<<endl;
	}
 return 0;
 }


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cctype>
#include <stack>
#include <queue>
#include <list>
#include <vector>
#include <map>
#include <sstream>
#include <cmath>
#include <bitset>
#include <utility>
#include <set>
#define pi acos(-1.0)
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
int main()
{
	//x1^2+x2^2+...+xn^2>=x and x1+x2+...+xn<=y
	// as x1,x2,..xn are positive ints. min of xi=1 for all i in [1..n]
	// min value of y=n
	// or max value  of xn = y-(n-1)
	// all values of x1,x2,...xn are fixed.
	// [y-(n-1)]^2+n-1>=x --->check this

	int n,x,y;
	cin>>n>>x>>y;
	if(y>=n)
	{
		if(((y-n+1)*(y-n+1)+n-1 >= x))
		{

		for(int i=0;i<=n-2;i++)
			cout<<"1"<<endl;
		cout<<y-(n-1)<<endl;
	}
		else
		{
			cout<<"-1"<<endl;
		}
	}
	else
	{
		cout<<"-1"<<endl;
	}
 return 0;
 }


#include<bits/stdc++.h> /*
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including */
using namespace std;
//using namespace __gnu_pbds;

//typedefs

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vi> vvi;
typedef vector<vl> vvl;
typedef pair<int,int> pii;
typedef pair<double, double> pdd;
typedef pair<ll, ll> pll;
typedef vector<pii> vii;
typedef vector<pll> vll;
typedef vector<int>::iterator vit;
typedef set<int>::iterator sit;

/*
template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template<typename F, typename S>
using ordered_map = tree<F, S, less<F>, rb_tree_tag, tree_order_statistics_node_update>;
*/

//#Defines
#define rep(i,a,b)	for(i=a;i<=b;i++)
#define repR(i,a,b)	for(i=a;i>=b;i--)
//#define pb push_back
#define pb emplace_back
#define F first
#define S second
#define mp make_pair
#define all(c)		c.begin(),c.end()
#define endl '\n'
#define pf printf
#define sf scanf
//#define left __left
//#define right __right
//#define tree __tree
#define MOD 1000000007
//#define harmonic(n) 0.57721566490153286l+log(n)

#define RESET(a,b)	memset(a,b,sizeof(a))
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))
#define sqr(a) ((a) * (a))

#define optimize() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);

const double PI = acos(-1);
const double eps = 1e-9;
const int inf = 2000000000;
const ll infLL = 9000000000000000000;

//Bit Operations
inline bool checkBit(ll n, int i) { return n&(1LL<<i); }
inline ll setBit(ll n, int i) { return n|(1LL<<i);; }
inline ll resetBit(ll n, int i) { return n&(~(1LL<<i)); }

int fx[] = {0, 0, +1, -1};
int fy[] = {+1, -1, 0, 0};
//int dx[] = {+1, 0, -1, 0, +1, +1, -1, -1};
//int dy[] = {0, +1, 0, -1, +1, -1, +1, -1};

//Inline functions

inline bool EQ(double a, double b) { return fabs(a-b) < 1e-9; }
inline bool isLeapYear(ll year) { return (year%400==0) || (year%4==0 && year%100!=0); }
inline void normal(ll &a) { a %= MOD; (a < 0) && (a += MOD); }
inline ll modMul(ll a, ll b) { a %= MOD, b %= MOD; normal(a), normal(b); return (a*b)%MOD; }
inline ll modAdd(ll a, ll b) { a %= MOD, b %= MOD; normal(a), normal(b); return (a+b)%MOD; }
inline ll modSub(ll a, ll b) { a %= MOD, b %= MOD; normal(a), normal(b); a -= b; normal(a); return a; }
inline ll modPow(ll b, ll p) { ll r = 1; while(p) { if(p&1) r = modMul(r, b); b = modMul(b, b); p >>= 1; } return r; }
inline ll modInverse(ll a) { return modPow(a, MOD-2); }
inline ll modDiv(ll a, ll b) { return modMul(a, modInverse(b)); }
inline bool isInside(pii p,ll n,ll m)	{ return (p.first>=0&&p.first<n&&p.second>=0&&p.second<m); }
inline bool isInside(pii p,ll n)		{ return (p.first>=0&&p.first<n&&p.second>=0&&p.second<n); }
inline bool isSquare(ll x) 				{ ll s = sqrt(x);	return (s*s==x); }
inline bool isFib(ll x) 				{ return isSquare(5*x*x+4)|| isSquare(5*x*x-4); }
inline bool isPowerOfTwo(ll x)			{ return ((1LL<<(ll)log2(x))==x); }

struct func
{
	//this is a sample overloading function for sorting stl
	bool operator()(pii const &a, pii const &b)
	{
		if(a.F==b.F)
			return (a.S<b.S);
		return (a.F<b.F);
	}
};

//Prime Number Generator

/*
#define M 100000000
int marked[M/64 + 2];

#define on(x) (marked[x/64] & (1<<((x%64)/2)))
#define mark(x)  marked[x/64] |= (1<<((x%64)/2))

vl prime;

bool isPrime(int num) {
  return num > 1 && (num == 2 || ((num & 1) && !on(num)));
}

void sieve(ll n) {
	for (ll i = 3; i * i < n; i += 2) {
		if (!on(i)) {
			for (ll j = i * i; j <= n; j += i + i) {
				mark(j);
			}
		}
	}
	prime.pb(2);
	for(ll i = 3; i <= n; i += 2) {
		if(!on(i))	prime.pb(i);
	}
}

*/

//
//debug
#ifdef tajir
template < typename F, typename S >
ostream& operator << ( ostream& os, const pair< F, S > & p ) {
	return os << "(" << p.first << ", " << p.second << ")";
}

template < typename T >
ostream &operator << ( ostream & os, const vector< T > &v ) {
	os << "{";
	for(auto it = v.begin(); it != v.end(); ++it) {
		if( it != v.begin() ) os << ", ";
			os << *it;
	}
	return os << "}";
}

template < typename T >
ostream &operator << ( ostream & os, const set< T > &v ) {
	os << "[";
	for(auto it = v.begin(); it != v.end(); ++it) {
		if( it != v.begin() ) os << ", ";
			os << *it;
	}
	return os << "]";
}

template < typename T >
ostream &operator << ( ostream & os, const multiset< T > &v ) {
	os << "[";
	for(auto it = v.begin(); it != v.end(); ++it) {
		if( it != v.begin() ) os << ", ";
		os << *it;
	}
	return os << "]";
}

template < typename F, typename S >
ostream &operator << ( ostream & os, const map< F, S > &v ) {
	os << "[";
	for(auto it = v.begin(); it != v.end(); ++it) {
		if( it != v.begin() ) os << ", ";
		os << it -> first << " = " << it -> second ;
		}
	return os << "]";
}

#define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0)

clock_t tStart = clock();
#define timeStamp dbg("Execution Time: ", (double)(clock() - tStart)/CLOCKS_PER_SEC)

void faltu () {
	cerr << endl;
}

template <typename T>
void faltu( T a[], int n ) {
	for(int i = 0; i < n; ++i) cerr << a[i] << ' ';
	cerr << endl;
}

template <typename T, typename ... hello>
void faltu( T arg, const hello &... rest) {
	cerr << arg << ' ';
	faltu(rest...);
}
#else
#define dbg(args...)
#endif // tajir

int main()
{
	#ifdef tajir
		freopen("input.txt", "r", stdin);
	#else
		// online submission
	#endif
	optimize();
	ll n,x,y;
	cin >> n >> x >> y;

	ll ans = y - n + 1;

	if(ans * ans + (n-1) < x)
		cout << -1 << endl;
	else {
		cout << ans << " ";
		for(int i = 1; i < n; ++i)
			cout << 1 << " ";
		cout << endl;
	}

	return 0;
}

//?


#include<bits/stdc++.h> /*
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including */
using namespace std;
//using namespace __gnu_pbds;

//typedefs

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vi> vvi;
typedef vector<vl> vvl;
typedef pair<int,int> pii;
typedef pair<double, double> pdd;
typedef pair<ll, ll> pll;
typedef vector<pii> vii;
typedef vector<pll> vll;
typedef vector<int>::iterator vit;
typedef set<int>::iterator sit;

/*
template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template<typename F, typename S>
using ordered_map = tree<F, S, less<F>, rb_tree_tag, tree_order_statistics_node_update>;
*/

//#Defines
#define rep(i,a,b)	for(i=a;i<=b;i++)
#define repR(i,a,b)	for(i=a;i>=b;i--)
//#define pb push_back
#define pb emplace_back
#define F first
#define S second
#define mp make_pair
#define all(c)		c.begin(),c.end()
#define endl '\n'
#define pf printf
#define sf scanf
//#define left __left
//#define right __right
//#define tree __tree
#define MOD 1000000007
//#define harmonic(n) 0.57721566490153286l+log(n)

#define RESET(a,b)	memset(a,b,sizeof(a))
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))
#define sqr(a) ((a) * (a))

#define optimize() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);

const double PI = acos(-1);
const double eps = 1e-9;
const int inf = 2000000000;
const ll infLL = 9000000000000000000;

//Bit Operations
inline bool checkBit(ll n, int i) { return n&(1LL<<i); }
inline ll setBit(ll n, int i) { return n|(1LL<<i);; }
inline ll resetBit(ll n, int i) { return n&(~(1LL<<i)); }

int fx[] = {0, 0, +1, -1};
int fy[] = {+1, -1, 0, 0};
//int dx[] = {+1, 0, -1, 0, +1, +1, -1, -1};
//int dy[] = {0, +1, 0, -1, +1, -1, +1, -1};

//Inline functions

inline bool EQ(double a, double b) { return fabs(a-b) < 1e-9; }
inline bool isLeapYear(ll year) { return (year%400==0) || (year%4==0 && year%100!=0); }
inline void normal(ll &a) { a %= MOD; (a < 0) && (a += MOD); }
inline ll modMul(ll a, ll b) { a %= MOD, b %= MOD; normal(a), normal(b); return (a*b)%MOD; }
inline ll modAdd(ll a, ll b) { a %= MOD, b %= MOD; normal(a), normal(b); return (a+b)%MOD; }
inline ll modSub(ll a, ll b) { a %= MOD, b %= MOD; normal(a), normal(b); a -= b; normal(a); return a; }
inline ll modPow(ll b, ll p) { ll r = 1; while(p) { if(p&1) r = modMul(r, b); b = modMul(b, b); p >>= 1; } return r; }
inline ll modInverse(ll a) { return modPow(a, MOD-2); }
inline ll modDiv(ll a, ll b) { return modMul(a, modInverse(b)); }
inline bool isInside(pii p,ll n,ll m)	{ return (p.first>=0&&p.first<n&&p.second>=0&&p.second<m); }
inline bool isInside(pii p,ll n)		{ return (p.first>=0&&p.first<n&&p.second>=0&&p.second<n); }
inline bool isSquare(ll x) 				{ ll s = sqrt(x);	return (s*s==x); }
inline bool isFib(ll x) 				{ return isSquare(5*x*x+4)|| isSquare(5*x*x-4); }
inline bool isPowerOfTwo(ll x)			{ return ((1LL<<(ll)log2(x))==x); }

struct func
{
	//this is a sample overloading function for sorting stl
	bool operator()(pii const &a, pii const &b)
	{
		if(a.F==b.F)
			return (a.S<b.S);
		return (a.F<b.F);
	}
};

//Prime Number Generator

/*
#define M 100000000
int marked[M/64 + 2];

#define on(x) (marked[x/64] & (1<<((x%64)/2)))
#define mark(x)  marked[x/64] |= (1<<((x%64)/2))

vl prime;

bool isPrime(int num) {
  return num > 1 && (num == 2 || ((num & 1) && !on(num)));
}

void sieve(ll n) {
	for (ll i = 3; i * i < n; i += 2) {
		if (!on(i)) {
			for (ll j = i * i; j <= n; j += i + i) {
				mark(j);
			}
		}
	}
	prime.pb(2);
	for(ll i = 3; i <= n; i += 2) {
		if(!on(i))	prime.pb(i);
	}
}

*/

//
//debug
#ifdef tajir
template < typename F, typename S >
ostream& operator << ( ostream& os, const pair< F, S > & p ) {
	return os << "(" << p.first << ", " << p.second << ")";
}

template < typename T >
ostream &operator << ( ostream & os, const vector< T > &v ) {
	os << "{";
	for(auto it = v.begin(); it != v.end(); ++it) {
		if( it != v.begin() ) os << ", ";
			os << *it;
	}
	return os << "}";
}

template < typename T >
ostream &operator << ( ostream & os, const set< T > &v ) {
	os << "[";
	for(auto it = v.begin(); it != v.end(); ++it) {
		if( it != v.begin() ) os << ", ";
			os << *it;
	}
	return os << "]";
}

template < typename T >
ostream &operator << ( ostream & os, const multiset< T > &v ) {
	os << "[";
	for(auto it = v.begin(); it != v.end(); ++it) {
		if( it != v.begin() ) os << ", ";
		os << *it;
	}
	return os << "]";
}

template < typename F, typename S >
ostream &operator << ( ostream & os, const map< F, S > &v ) {
	os << "[";
	for(auto it = v.begin(); it != v.end(); ++it) {
		if( it != v.begin() ) os << ", ";
		os << it -> first << " = " << it -> second ;
		}
	return os << "]";
}

#define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0)

clock_t tStart = clock();
#define timeStamp dbg("Execution Time: ", (double)(clock() - tStart)/CLOCKS_PER_SEC)

void faltu () {
	cerr << endl;
}

template <typename T>
void faltu( T a[], int n ) {
	for(int i = 0; i < n; ++i) cerr << a[i] << ' ';
	cerr << endl;
}

template <typename T, typename ... hello>
void faltu( T arg, const hello &... rest) {
	cerr << arg << ' ';
	faltu(rest...);
}
#else
#define dbg(args...)
#endif // tajir

int main()
{
	#ifdef tajir
		freopen("input.txt", "r", stdin);
	#else
		// online submission
	#endif
	optimize();
	ll n,x,y;
	cin >> n >> x >> y;

	ll ans = y - n + 1;

	if(ans * ans + (n-1) < x || ans <= 0)
		cout << -1 << endl;
	else {
		cout << ans << " ";
		for(int i = 1; i < n; ++i)
			cout << 1 << " ";
		cout << endl;
	}

	return 0;
}

//?


/*
 *  eat_code
 */
#include <bits/stdc++.h>
using namespace std;

//#define DEBUG
#define F first
#define S second
#define mp make_pair
#define pb push_back
#define ALL(x) x.begin(), x.end()
#define SZ(x) (int)x.size()
#define endl '\n'
#define LSOne(S) (S & (-S))
#define what_is(x) cout << #x << " = " << x << endl
#define boost ios::sync_with_stdio(false);cin.tie(NULL)

typedef long long ll;
typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<ll> vll;
typedef vector<ii> vii;
typedef vector<vi> vvi;
typedef vector<vii> vvii;

const ll INF = numeric_limits<ll>::max();
const ll MOD = 1E9 + 7;
const double PI = 2 * acos(0);
ll MAXN = 1e7;
int main() {
	//boost;
	if (fopen("input.txt", "r")) {
		freopen("input.txt", "r", stdin);
		freopen("output.txt", "w", stdout);
	}
	boost;
	int n;
	ll x, y;
	cin >> n >> x >> y;
	ll cnt = 0;
	vll v;
	for(int i = 0; i < (n - 1); i++) {
		v.pb(1);
		cnt += 1;
	}
	bool f = false;
	if((y - cnt) >= 1){
		f  = true;
		v.pb((y - cnt));
		cnt += ((y - cnt)*(y - cnt));
	}

	if(cnt >= x && f){
		for(int j = 0; j < n; j++) {
			cout << v[j] << "\n";
		}
	}else{
		cout << "-1" << "\n";
	}

	return 0;
}
/*
 *  Train Insane or Remain the same
 */