from sys import *
inp = lambda : stdin.readline()
memo = {}

def findans(s,ans,start,parent):
    if start >= len(s): return
    if start + 1 < len(s):
        toadd = s[start:start+2]
        if toadd != parent:
            ans.add(toadd)
            if (start+2,2) not in memo:
                findans(s, ans, start + 2,toadd)
                memo[(start+2,2)] = 1

    if start + 2 < len(s):
        toadd = s[start:start+3]
        if toadd != parent:
            ans.add(toadd)
            if (start+3,3) not in memo:
                findans(s, ans, start + 3,toadd)
                memo[(start+3,3)] = 1

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    ans = set()
    findans(s,ans,0,"")
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    for i in l:
        print(i)

if __name__ == "__main__":
    main()


from sys import *
inp = lambda : stdin.readline()
import math
formemo = {}

def findans(s,ans,start):
    if start >= len(s): return
    if start + 1 < len(s):
        toadd = s[start:start+2]
        if toadd not in ans:
            ans.add(toadd)
            findans(s,ans,start+2)
    if start + 2 < len(s):
        toadd = s[start:start+3]
        if toadd not in ans:
            ans.add(toadd)
        findans(s,ans,start+3)

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    #print(s)
    ans = set()
    findans(s,ans,0)
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    print("\n".join(l))

if __name__ == "__main__":
    main()


from sys import *
inp = lambda : stdin.readline()
memo = {}

def findans(s,ans,start,parent):
    if start >= len(s): return
    if start + 1 < len(s):
        toadd = s[start:start+2]
        if toadd != parent:
            ans.add(toadd)
            if (start+2) not in memo:
                findans(s, ans, start + 2,toadd)
                memo[start+2] = 1

    if start + 2 < len(s):
        toadd = s[start:start+3]
        if toadd != parent:
            ans.add(toadd)
            if (start+3) not in memo:
                findans(s, ans, start + 3,toadd)
                memo[start+3] = 1

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    ans = set()
    findans(s,ans,0,"")
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    for i in l:
        print(i)

if __name__ == "__main__":
    main()


from sys import *
inp = lambda : stdin.readline()
import math
memo = {}

def findans(s,ans,start):
    if start >= len(s): return
    if start + 1 < len(s):
        toadd,temp = s[start:start+2],""
        if start - 2 >= 0:
            temp = s[start-2:start]
        if toadd != temp:
            ans.add(toadd)
            findans(s, ans, start + 2)

    if start + 2 < len(s):
        toadd,temp = s[start:start+3],""
        if start - 3 >= 0:
            temp = s[start-3:start]
        if toadd != temp:
            ans.add(toadd)
            findans(s, ans, start + 3)

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    ans = set()
    findans(s,ans,0)
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    print("\n".join(l))

if __name__ == "__main__":
    main()


from sys import *
inp = lambda : stdin.readline()
import math
formemo = {}

def findans(s,ans,start):
    if start > len(s): return
    if start + 1 < len(s):
        ans.add(s[start:start+2])
        findans(s,ans,start+2)
    if start + 2 < len(s):
        ans.add(s[start:start+3])
        findans(s,ans,start+3)

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    #print(s)
    ans = set()
    findans(s,ans,0)
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    print("\n".join(l))

if __name__ == "__main__":
    main()


from sys import *
setrecursionlimit(200000000)
inp = lambda : stdin.readline()
memo = {}

def findans(s,ans,start,parent):
    if start >= len(s): return
    if start + 1 < len(s):
        toadd = s[start:start+2]
        if toadd != parent:
            ans.add(toadd)
            if (start+2) not in memo:
                findans(s, ans, start + 2,toadd)
                memo[start+2] = 1

    if start + 2 < len(s):
        toadd = s[start:start+3]
        if toadd != parent:
            ans.add(toadd)
            if (start+3) not in memo:
                findans(s, ans, start + 3,toadd)
                memo[start+3] = 1

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    ans = set()
    findans(s,ans,0,"")
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    for i in l:
        print(i)

if __name__ == "__main__":
    main()


from sys import *
setrecursionlimit(200000000)
inp = lambda : stdin.readline()
memo = {}

def findans(s,ans,start,parent):
    if start >= len(s): return
    if start + 1 < len(s):
        toadd = s[start:start+2]
        if toadd != parent:
            ans.add(toadd)
            if (start+2,2) not in memo:
                findans(s, ans, start + 2,toadd)
                memo[(start+2,2)] = 1

    if start + 2 < len(s):
        toadd = s[start:start+3]
        if toadd != parent:
            ans.add(toadd)
            if (start+3,3) not in memo:
                findans(s, ans, start + 3,toadd)
                memo[(start+3,3)] = 1

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    ans = set()
    findans(s,ans,0,"")
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    for i in l:
        print(i)

if __name__ == "__main__":
    main()


from sys import *
inp = lambda : stdin.readline()
memo = {}

def findans(s,ans,start,parent):
    if start >= len(s): return
    if start + 1 < len(s):
        toadd = s[start:start+2]
        if toadd != parent:
            ans.add(toadd)
            findans(s, ans, start + 2,toadd)

    if start + 2 < len(s):
        toadd = s[start:start+3]
        if toadd != parent:
            ans.add(toadd)
            findans(s, ans, start + 3,toadd)

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    ans = set()
    findans(s,ans,0,"")
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    for i in l:
        print(i)

if __name__ == "__main__":
    main()


from sys import *
inp = lambda : stdin.readline()
import math
memo = {}

def findans(s,ans,start):
    if start >= len(s): return
    if start + 1 < len(s):
        toadd = s[start:start+2]
        if toadd not in ans:
            ans.add(toadd)
            findans(s, ans, start + 2)

    if start + 2 < len(s):
        toadd = s[start:start+3]
        if toadd not in ans:
            ans.add(toadd)
            findans(s, ans, start + 3)

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    #print(s)
    ans = set()
    findans(s,ans,0)
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    print("\n".join(l))

if __name__ == "__main__":
    main()


from sys import *
inp = lambda : stdin.readline()
import math
formemo = {}

def findans(s,ans,start):
    if start > len(s): return
    if start + 1 < len(s):
        toadd = s[start:start+2]
        if toadd not in ans:
            ans.add(toadd)
            findans(s,ans,start+2)
    if start + 2 < len(s):
        toadd = s[start:start+3]
        if toadd not in ans:
            ans.add(toadd)
        findans(s,ans,start+3)

def main():
    s = (inp()[5:])[::-1].replace("\n","",1)
    #print(s)
    ans = set()
    findans(s,ans,0)
    print(len(ans))
    l = []
    for i in ans:
        l.append(i[::-1])
    l = sorted(l)
    print("\n".join(l))

if __name__ == "__main__":
    main()


s=input()
dic=set()
words=[]
n=len(s)
way=[0]*n
way[n-2]=2
way[n-3]=3
for i in range(n-1,4,-1):
    if way[i]==2:
        e=s[i]+s[i+1]
        if e not in dic:
            dic.add(e)
            words.append(e)
        way[i-3]+=3
        if s[i-2]+s[i-1]!=e:
            way[i-2]+=2
    elif way[i]==3:
        e=s[i]+s[i+1]+s[i+2]
        if e not in dic:
            dic.add(e)
            words.append(e)
        way[i-2]+=2
        if s[i-3]+s[i-2]+s[i-1]!=e:
            way[i-3]+=3
    elif way[i]==5:
        e=s[i]+s[i+1]+s[i+2]
        if e not in dic:
            dic.add(e)
            words.append(e)
        way[i-2]+=2
        way[i-3]+=3
words.sort()
print(len(dic))
print(*words,sep='\n')


s=input()
dic=set()
words=[]
n=len(s)
way=[0]*n
way[n-2]=2
way[n-3]=3
for i in range(n-1,4,-1):
    if way[i]==2:
        e=s[i]+s[i+1]
        if e not in dic:
            dic.add(e)
            words.append(e)
        way[i-3]+=3
        if s[i-2]+s[i-1]!=e:
            way[i-2]+=2
    elif way[i]==3:
        e=s[i]+s[i+1]+s[i+2]
        if e not in dic:
            dic.add(e)
            words.append(e)
        way[i-2]+=2
        if s[i-3]+s[i-2]+s[i-1]!=e:
            way[i-3]+=3
    elif way[i]==5:
        e=s[i]+s[i+1]+s[i+2]
        if e not in dic:
            dic.add(e)
            words.append(e)
        e=s[i]+s[i+1]
        if e not in dic:
            dic.add(e)
            words.append(e)
        way[i-2]+=2
        way[i-3]+=3
words.sort()
print(len(dic))
print(*words,sep='\n')


str = input()
dp = [[0 for i in range(2)] for i in range(5000)]

s = set([])
i = len(str)-1
while i >= 5:
	if i+2 == len(str):
		dp[i][0] = 1
		s.add(str[i:i+2])
		i=i-1
		continue
	if i+3 == len(str):
		dp[i][1] = 1
		s.add(str[i:i+3])
		i=i-1
		continue
	if dp[i+2][1] or (dp[i+2][0] and str[i:i+2]!=str[i+2:i+4] ):
		dp[i][0]=1
		s.add(str[i:i+2])
	if dp[i+3][0] or (dp[i+3][1] and str[i:i+3]!=str[i+3:i+6] ):
		dp[i][1]=1
		s.add(str[i:i+3])
	i=i-1

print(len(s))
l = list(s)
l.sort()
for x in l:
	print(x)


str = input()
dp = [[0 for i in range(2)] for i in range(10005)]

s = set([])
i = len(str)-1
while i >= 5:
	if i+2 == len(str):
		dp[i][0] = 1
		s.add(str[i:i+2])
		i=i-1
		continue
	if i+3 == len(str):
		dp[i][1] = 1
		s.add(str[i:i+3])
		i=i-1
		continue
	if dp[i+2][1] or (dp[i+2][0] and str[i:i+2]!=str[i+2:i+4] ):
		dp[i][0]=1
		s.add(str[i:i+2])
	if dp[i+3][0] or (dp[i+3][1] and str[i:i+3]!=str[i+3:i+6] ):
		dp[i][1]=1
		s.add(str[i:i+3])
	i=i-1

print(len(s))
l = list(s)
l.sort()
for x in l:
	print(x)


from math import *
from sys import *

def cmp1(a):
    for i in range(3):
        if s[a-i-1]!=s[a+i]:
            return 1
    return 0

def cmp2(a):
    for i in range(2):
        if s[a-i-1]!=s[a+i]:
            return 1
    return 0

s=input()
if len(s)>0:
    sz=len(s)
    r=set()
    j=1
    while j<len(s) and s[-j-1]==s[-1]:
        j+=1
    for i in range(5,len(s)-6):
        if i<len(s)-j-2 or ((len(s)-i-2)%5 in [0,2,3]):
            r.add(s[i]+s[i+1])
    if sz>10 and s[-4]+s[-3] != s[-2]+s[-1]:
        r.add(s[-6]+s[-5])
    if sz>9:
        r.add(s[-5]+s[-4])
    if sz>8:
        r.add(s[-4]+s[-3])
    if sz>6:
        r.add(s[-2]+s[-1])
    for i in range(5,len(s)-7):
        if i<len(s)-j-3 or ((len(s)-i-3)%5 in [0,2,3]):
            r.add(s[i]+s[i+1]+s[i+2])
    if sz>11 and s[-4]+s[-3] != s[-2]+s[-1]:
        r.add(s[-7]+s[-6]+s[-5])
    if sz>10:
        r.add(s[-6]+s[-5]+s[-4])
    if sz>9:
        r.add(s[-5]+s[-4]+s[-3])
    if sz>7:
        r.add(s[-3]+s[-2]+s[-1])
    ans=[]
    for i in r:
        ans.append(i)

ans.sort()
print(len(ans))
for i in ans:
    print(i)


from math import *
from sys import *

def cmp1(a):
    for i in range(3):
        if s[a-i-1]!=s[a+i]:
            return 1
    return 0

def cmp2(a):
    for i in range(2):
        if s[a-i-1]!=s[a+i]:
            return 1
    return 0

s=input()
if len(s)>0:
    sz=len(s)
    r=set()
    j=1
    while j<len(s) and s[-j-1]==s[-1]:
        j+=1
    for i in range(5,len(s)-6):
        if i!=len(s)-j or (j%5 in [0,2,3]):
            r.add(s[i]+s[i+1])
    if sz>10 and s[-4]+s[-3] != s[-2]+s[-1]:
        r.add(s[-6]+s[-5])
    if sz>9:
        r.add(s[-5]+s[-4])
    if sz>8:
        r.add(s[-4]+s[-3])
    if sz>6:
        r.add(s[-2]+s[-1])
    for i in range(5,len(s)-7):
        if i!=len(s)-j or (j%5 in [0,2,3]):
            r.add(s[i]+s[i+1]+s[i+2])
    if sz>11 and s[-4]+s[-3] != s[-2]+s[-1]:
        r.add(s[-7]+s[-6]+s[-5])
    if sz>10:
        r.add(s[-6]+s[-5]+s[-4])
    if sz>9:
        r.add(s[-5]+s[-4]+s[-3])
    if sz>7:
        r.add(s[-3]+s[-2]+s[-1])
    ans=[]
    for i in r:
        ans.append(i)

ans.sort()
print(len(ans))
for i in ans:
    print(i)


from math import *
from sys import *

def cmp1(a):
    for i in range(3):
        if st[0][a-i-1]!=st[0][a+i]:
            return 1
    return 0

def cmp2(a):
    for i in range(2):
        if st[0][a-i-1]!=st[0][a+i]:
            return 1
    return 0

s=set()
st=stdin.readline().split("\n")
s.add((len(st[0]),0))
suf=set()
while s:
  a=s.pop()
  if a[0]>=8 and (a[1]!=3 or cmp1(a[0])):
      suf.add(st[0][a[0]-3]+st[0][a[0]-2]+st[0][a[0]-1])
      s.add((a[0]-3,3))
  if a[0]>=7 and (a[1]!=2 or cmp2(a[0])):
      suf.add(st[0][a[0]-2]+st[0][a[0]-1])
      s.add((a[0]-2,2))
ans=[]
for i in suf:
  ans.append(i)
ans.sort()
stdout.write(str(len(ans))+"\n")
for i in ans:
  stdout.write(i+"\n")


from math import *
from sys import *

s=set()
st=stdin.readline().split("\n")
s.add((st[0],""))
suf=set()
while s:
  a=s.pop()
  a1=a[0][-3]+a[0][-2]+a[0][-1]
  a2=a[0][-2]+a[0][-1]
  if len(a[0])>=8:
    if a1!=a[1]:
      suf.add(a1)
      s.add((a[0][:-3],a1))
  if len(a[0])>=7:
    if a2!=a[1]:
      suf.add(a2)
      s.add((a[0][:-2],a2))
ans=[]
for i in suf:
  ans.append(i)
ans.sort()
stdout.write(str(len(ans))+"\n")
for i in ans:
  stdout.write(i+"\n")


from math import *

s=set()
st=input()
s.add((st,""))
suf=set()
while s:
  a=s.pop()
  a1=a[0][-3]+a[0][-2]+a[0][-1]
  a2=a[0][-2]+a[0][-1]
  if len(a[0])>=8:
    if a1!=a[1]:
      suf.add(a1)
      s.add((a[0][:-3],a1))
  if len(a[0])>=7:
    if a2!=a[1]:
      suf.add(a2)
      s.add((a[0][:-2],a2))
ans=[]
for i in suf:
  ans.append(i)
ans.sort()
print(len(ans))
for i in ans:
  print(i)


from math import *
from sys import *

def cmp1(a):
    for i in range(3):
        if s[a-i-1]!=s[a+i]:
            return 1
    return 0

def cmp2(a):
    for i in range(2):
        if s[a-i-1]!=s[a+i]:
            return 1
    return 0

s=input()
if len(s)>0:
    sz=len(s)
    r=set()
    j=1
    while j<len(s) and s[-j-1]==s[-1]:
        j-=1
    for i in range(5,len(s)-6):
        if i!=len(s)-j or (j%5 in [0,2,3]):
            r.add(s[i]+s[i+1])
    if sz>10 and s[-4]+s[-3] != s[-2]+s[-1]:
        r.add(s[-6]+s[-5])
    if sz>9:
        r.add(s[-5]+s[-4])
    if sz>8:
        r.add(s[-4]+s[-3])
    if sz>6:
        r.add(s[-2]+s[-1])
    for i in range(5,len(s)-7):
        if i!=len(s)-j or (j%5 in [0,2,3]):
            r.add(s[i]+s[i+1]+s[i+2])
    if sz>11 and s[-4]+s[-3] != s[-2]+s[-1]:
        r.add(s[-7]+s[-6]+s[-5])
    if sz>10:
        r.add(s[-6]+s[-5]+s[-4])
    if sz>9:
        r.add(s[-5]+s[-4]+s[-3])
    if sz>7:
        r.add(s[-3]+s[-2]+s[-1])
    ans=[]
    for i in r:
        ans.append(i)

ans.sort()
print(len(ans))
for i in ans:
    print(i)


d = set()
s = input()[5:]
n = len(s)
if n >= 2:
    d.add(s[-2:])
if n >= 3:
    d.add(s[-3:])
if n >= 4:
    d.add(s[-4:-2])

for i in range(0, n - 4):
    two = s[i:i+2]
    if two != s[i+2:i+4]:
        d.add(two)

    three = s[i:i+3]
    if i + 6 >= n - 1 or three != s[i+3:i+6]:
        d.add(three)

l = sorted(d)
print(len(l))
for i in l:
    print(i)


d = set()
s = input()[5:]
n = len(s)
for i in range(0, n - 1):
    two = s[i:i+2]
    if i != n - 3:
        d.add(two)

    if i == n - 2:
        break

    three = s[i:i+3]
    if i != n - 4:
        d.add(three)

l = sorted(d)
print(len(l))
for i in l:
    print(i)


d = set()
s = input()[5:]
n = len(s)
s += "0000"

twos = [False] * (n + 3)
threes = [False] * (n + 3)
twos[n] = threes[n] = True

def do(i, num, same, other):
    after = i + num
    if not same[after] and not other[after]:
        return None, same

    cut = s[i:i+num]
    if cut == s[i+num:i+2*num] and not other[after]:
        return None, same

    same[i] = True
    return cut, same

for i in range(n - 2, -1, -1):
    cut, twos = do(i, 2, twos, threes)
    if cut is not None:
        d.add(cut)

    cut, threes = do(i, 3, threes, twos)
    if cut is not None:
        d.add(cut)

l = sorted(d)
print(len(l))
for i in l:
    print(i)


from sys import *
setrecursionlimit(20000)
d={}
t=set()
s=input()+' '
def gen(l,ll):
    if (l,ll) in t: return
    t.add((l,ll))
    if l>6:
        d[s[l-2:l]]=1
        if s[l-2:l]!=s[l:ll]: gen(l-2,l)
    if l>7:
        d[s[l-3:l]]=1
        if s[l-3:l]!=s[l:ll]: gen(l-3,l)
gen(len(s)-1,len(s))
print(len(d))
for k in sorted(d): print(k)


t = input()

s, d = set(), set()

p = {(len(t), 2)}

while p:

    m, x = p.pop()

    r = m + x

    for y in [x, 5 - x]:

        l = m - y

        q = (l, y)

        if q in d or l < 5 or t[l:m] == t[m:r]: continue

        s.add(t[l:m])

        d.add(q)

        p.add(q)

print(len(s))

print('\n'.join(sorted(s)))

# Made By Mostafa_Khaled


s = input()
s = s[5:]

n = len(s)
ans = set()
checked = set()

if n < 2:
    print(0)
    exit(0)
elif n == 2:
    print(1)
    print(s[-2:])
    exit(0)
else:
    ans = {s[-2:], s[-3:]}

def dp(i, j):
    if (i, j) in checked:
        return
    checked.add((i, j))

    if i > 1 and s[i:j] != s[i - 2:i]:
        ans.add(s[i - 2:i])
        dp(i - 2, i)

    if i > 2 and s[i:j] != s[i - 3:i]:
        ans.add(s[i - 3:i])
        dp(i - 3, i)

dp(n - 2, n)
dp(n - 3, n)

print(len(ans))
for x in sorted(list(ans)):
    print(x)


# http://codeforces.com/contest/667/problem/C

s = input()
s = s[5:]

n = len(s)
ans = set()
checked = set()

# ansの初期化と自明な場合の処理
if n < 2:
    print(0)
    exit(0)
elif n == 2:
    print(1)
    print(s[-2:])
    exit(0)
else:
    ans = {s[-2:], s[-3:]}

# 本処理
def dp(i, j):
    # TLEをさけるための処理
    if (i, j) in checked:
        return
    checked.add((i, j))

    """
    (ab)(cd)で後ろのcdをaddすると
    (abc)(bc)でbcをaddできないので前のカタマリをaddする
    """
    # 2文字
    if i > 1 and s[i:j] != s[i - 2:i]:
        ans.add(s[i - 2:i])
        dp(i - 2, i)

    # 3文字
    if i > 2 and s[i:j] != s[i - 3:i]:
        ans.add(s[i - 3:i])
        dp(i - 3, i)

dp(n - 2, n)
dp(n - 3, n)

print(len(ans))
for x in sorted(list(ans)):
    print(x)


import sys
sys.setrecursionlimit(10001)

s = input()
s = s[5:]

n = len(s)
ans = set()
checked = set()

if n < 2:
    print(0)
    exit(0)
elif n == 2:
    print(1)
    print(s[-2:])
    exit(0)
else:
    ans = {s[-2:], s[-3:]}

def dp(i, j):
    if (i, j) in checked:
        return
    checked.add((i, j))

    if i > 1 and s[i:j] != s[i - 2:i]:
        ans.add(s[i - 2:i])
        dp(i - 2, i)

    if i > 2 and s[i:j] != s[i - 3:i]:
        ans.add(s[i - 3:i])
        dp(i - 3, i)

dp(n - 2, n)
dp(n - 3, n)

print(len(ans))
for x in sorted(list(ans)):
    print(x)


import sys

sys.setrecursionlimit(10001)

s = input()
ans = set()

def dp(i):
    global ans
    # 2文字
    if i > 6 and s[i - 2:i] != s[i - 4:i - 2]:
        ans.add(s[i - 2:i])
        dp(i - 2)
    # 3文字
    if i > 7 and s[i - 3:i] != s[i - 5:i - 3]:
        ans.add(s[i - 3:i])
        dp(i - 3)

dp(len(s))

print(len(ans))
for x in sorted(list(ans)):
    print(x)


import sys

sys.setrecursionlimit(10001)

s = input()
ans = set()

def dp(i):
    global ans

    # 2文字
    if i > 6 and s[i - 2:i] != s[i:i + 2]:
        ans.add(s[i - 2:i])
        dp(i - 2)

    # 3文字
    if i > 7 and s[i - 3:i] != s[i:i + 3]:
        ans.add(s[i - 3:i])
        dp(i - 3)

dp(len(s))

print(len(ans))
for x in sorted(list(ans)):
    print(x)


#include <vector>
#include <cstring>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <queue>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <stdlib.h>
#include <ctime>
#include <string>
#include <complex>
#ifdef __ASD__
#include <windows.h>
#endif
using namespace std;
#define all(a) a.begin(),a.end()
#define forn(i,n) for(int i=0;i<(n);++i)
#define fornn(i,n) for(i=0;i<(n);++i)
#define lng long long
#define SQ(a) ((a)*(a))
#define forv(i,v) for(int i=0;i<(int)v.size();++i)
#define mp make_pair
#define pb push_back
#define ABS(a) ((a)<0?-(a):(a))
#define iinf 1000000000
#define linf 1000000000000000000LL
#define dinf 1e200
#define left asdleft
#define prev asdprev
#define eps 1e-12
#define y1 asdy1
#define y2 asdy2
#define EQ(a,b) abs((a)-(b))<eps
#define PI 3.1415926535897932384626433832795
#define DEG2RAD PI/180
#define ulng unsigned lng
#define next asdnext
#define prev asdprev
void mytimer(string task){
#ifdef __ASD__
        static LARGE_INTEGER prev;      LARGE_INTEGER cur,freq; QueryPerformanceCounter(&cur);  QueryPerformanceFrequency(&freq);       if(task!="")            cout<<task<<" took "<<(cur.QuadPart-prev.QuadPart)*1.0/freq.QuadPart<<endl;     prev=cur;
#endif
}
void ext(int c){
#ifdef __ASD__
        exit(c);
#endif
}

#define taska "burai"
int main(){
#ifdef __ASD__
    freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#else
    //freopen(taska".in","r",stdin);freopen(taska".out","w",stdout);
#endif

    lng n;
    lng x,y;
    cin>>n>>x>>y;
    if(SQ(y-n+1)+n-1<x)
        cout<<-1;
    else{
        forn(i,n-1)
            cout<<1<<'\n';
        cout<<y-n+1;
    }

    return 0;
}


#include <vector>
#include <cstring>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <queue>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <stdlib.h>
#include <ctime>
#include <string>
#include <complex>
#ifdef __ASD__
#include <windows.h>
#endif
using namespace std;
#define all(a) a.begin(),a.end()
#define forn(i,n) for(int i=0;i<(n);++i)
#define fornn(i,n) for(i=0;i<(n);++i)
#define lng long long
#define SQ(a) ((a)*(a))
#define forv(i,v) for(int i=0;i<(int)v.size();++i)
#define mp make_pair
#define pb push_back
#define ABS(a) ((a)<0?-(a):(a))
#define iinf 1000000000
#define linf 1000000000000000000LL
#define dinf 1e200
#define left asdleft
#define prev asdprev
#define eps 1e-12
#define y1 asdy1
#define y2 asdy2
#define EQ(a,b) abs((a)-(b))<eps
#define PI 3.1415926535897932384626433832795
#define DEG2RAD PI/180
#define ulng unsigned lng
#define next asdnext
#define prev asdprev
void mytimer(string task){
#ifdef __ASD__
        static LARGE_INTEGER prev;      LARGE_INTEGER cur,freq; QueryPerformanceCounter(&cur);  QueryPerformanceFrequency(&freq);       if(task!="")            cout<<task<<" took "<<(cur.QuadPart-prev.QuadPart)*1.0/freq.QuadPart<<endl;     prev=cur;
#endif
}
void ext(int c){
#ifdef __ASD__
        exit(c);
#endif
}

#define taska "burai"
int main(){
#ifdef __ASD__
    freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#else
    //freopen(taska".in","r",stdin);freopen(taska".out","w",stdout);
#endif

    lng n;
    lng x,y;
    cin>>n>>x>>y;
    if(y<n||SQ(y-n+1)+n-1<x)
        cout<<-1;
    else{
        forn(i,n-1)
            cout<<1<<'\n';
        cout<<y-n+1;
    }

    return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
#define SZ(X) ((int)(X).size())
#define ALL(X) (X).begin(), (X).end()
#define REP(I, N) for (int I = 0; I < (N); ++I)
#define REPP(I, A, B) for (int I = (A); I < (B); ++I)
#define RI(X) scanf("%d", &(X))
#define RII(X, Y) scanf("%d%d", &(X), &(Y))
#define RIII(X, Y, Z) scanf("%d%d%d", &(X), &(Y), &(Z))
#define DRI(X) int (X); scanf("%d", &X)
#define DRII(X, Y) int X, Y; scanf("%d%d", &X, &Y)
#define DRIII(X, Y, Z) int X, Y, Z; scanf("%d%d%d", &X, &Y, &Z)
#define RS(X) scanf("%s", (X))
#define CASET int ___T, case_n = 1; scanf("%d ", &___T); while (___T— > 0)
#define MP make_pair
#define PB push_back
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define LEN(X) strlen(X)
#define PII pair<int,int>
#define VPII vector<pair<int,int> >
#define PLL pair<long long,long long>
#define F first
#define S second
typedef long long LL;
using namespace std;
const int MOD = 1e9 + 7;
const int SIZE = 1e6+ 10;

int main()
{

    LL n, x, y;
    cin >> n >> x >> y;
    if ((y - n + 1)*(y - n + 1) + n - 1 >= x)
    {
        REP(i, n - 1)cout << 1 << endl;
        cout << y - n + 1;
    }
    else cout << -1;
    return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
#define SZ(X) ((int)(X).size())
#define ALL(X) (X).begin(), (X).end()
#define REP(I, N) for (int I = 0; I < (N); ++I)
#define REPP(I, A, B) for (int I = (A); I < (B); ++I)
#define RI(X) scanf("%d", &(X))
#define RII(X, Y) scanf("%d%d", &(X), &(Y))
#define RIII(X, Y, Z) scanf("%d%d%d", &(X), &(Y), &(Z))
#define DRI(X) int (X); scanf("%d", &X)
#define DRII(X, Y) int X, Y; scanf("%d%d", &X, &Y)
#define DRIII(X, Y, Z) int X, Y, Z; scanf("%d%d%d", &X, &Y, &Z)
#define RS(X) scanf("%s", (X))
#define CASET int ___T, case_n = 1; scanf("%d ", &___T); while (___T— > 0)
#define MP make_pair
#define PB push_back
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define LEN(X) strlen(X)
#define PII pair<int,int>
#define VPII vector<pair<int,int> >
#define PLL pair<long long,long long>
#define F first
#define S second
typedef long long LL;
using namespace std;
const int MOD = 1e9 + 7;
const int SIZE = 1e6+ 10;

int main()
{

    LL n, x, y;
    cin >> n >> x >> y;
    if ((y - n + 1)*(y - n + 1) + n - 1 >= x&&y-n+1>0)
    {
        REP(i, n - 1)cout << 1 << endl;
        cout << y - n + 1;
    }
    else cout << -1;
    return 0;
}


#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
	__int64 n,x,y;
	scanf("%I64d%I64d%I64d",&n,&x,&y);
	if(n>y || ((n-1 + (y-n+1)*(y-n+1))<x)) cout<<-1;
	else
	{
		for(int i=0;i<n-1;i++)
		{
			cout<<1<<endl;
		}
		printf("%I64d\n",y-n+1);
	}
	return 0;
}


#include <iostream>
using namespace std;

int main()
{
	//freopen("input.txt", "r", stdin);
	long long n, x, y, i;
	cin>>n>>x>>y;
	if(n>y)
	{
		cout<<-1;
		return 0;
	}
	else
	{
		if(x<=y)
		{
			for(i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<y-n+1;
		}
		else
		{
			if(x<=(y-n+1)*(y-n+1)+n-1)
			{
					for(i=0; i<n-1; i++)
					{
						cout<<1<<endl;
					}
					cout<<y-n+1;
			}
			else
				cout<<-1;

		}
	}

	return 0;
}


#include <iostream>
using namespace std;

int main()
{
	//freopen("input.txt", "r", stdin);
	int n, x, y, i;
	cin>>n>>x>>y;
	if(n>y)
	{
		cout<<-1;
		return 0;
	}
	else
	{
		if(x<=y)
		{
			for(i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<y-n+1;
		}
		else
		{
			if(x<=(y-n+1)*(y-n+1)+n-1)
			{
					for(i=0; i<n-1; i++)
					{
						cout<<1<<endl;
					}
					cout<<y-n+1;
			}
			else
				cout<<-1;

		}
	}

	return 0;
}


#include <iostream>
using namespace std;

int main()
{
	//freopen("input.txt", "r", stdin);
	long long n, x, y, i;
	cin>>n>>x>>y;
	if(n>y)
	{
		cout<<-1;
		return 0;
	}
	else
	{
		if(x<=y)
		{
			for(i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<x-n+1;
		}
		else
		{
			if(x<=(y-n+1)*(y-n+1)+n-1)
			{
					for(i=0; i<n-1; i++)
					{
						cout<<1<<endl;
					}
					cout<<y-n+1;
			}
			else
				cout<<-1;

		}
	}

	return 0;
}


#include <iostream>
using namespace std;

int main()
{
	freopen("input.txt", "r", stdin);
	long long n, x, y, i;
	cin>>n>>x>>y;
	if(n>y)
	{
		cout<<-1;
		return 0;
	}
	else
	{
		if(x<=y)
		{
			for(i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<y-n+1;
		}
		else
		{
			if(x<=(y-n+1)*(y-n+1)+n-1)
			{
					for(i=0; i<n-1; i++)
					{
						cout<<1<<endl;
					}
					cout<<y-n+1;
			}
			else
				cout<<-1;

		}
	}

	return 0;
}


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string>
#include <string.h>
#include <vector>

using namespace std;

long long n, x, y;

int solve()
{
	cin >> n >> x >> y;
	long long t = y / n;
	if (!t) return 0;
	long long r = y % n;
	long long s = 0;
	for (int i = 0; i < r; i++) {
		s += (t + 1) * (t + 1);
		if (s >= x) break;
	}
	for (int i = r; i < n; i++) {
		s += t * t;
		if (s >= x) break;
	}
	if (s < x) return 0;
	for (int i = 0; i < n; i++) cout << t + (i < r) << ' ';
	return 1;
}

int main()
{
	if (!solve()) cout << -1;
	return 0;
}


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string>
#include <string.h>
#include <vector>

using namespace std;

long long n, x, y;

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

int main()
{
	if (!solve()) cout << -1;
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#define _USE_MATH_DEFINES
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cfloat>
#include <cstring>
#include <list>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <numeric>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <iterator>
#include <complex>
#include <stack>
#include <queue>
#include <ctime>
using namespace std;
static const double EPS = 1e-8;
typedef long long ll;
typedef unsigned long long ull;
typedef complex <double> pt;
typedef complex <ll> pti;

int main() {
	//ifstream fin("input.txt", ios::in);
	//ofstream fout("output.txt", ios::out);
	//FILE *fpin=fopen("input.txt", "r");
	//FILE *fpout=fopen("output.txt", "w");
	istream &fin=cin;
	ostream &fout=cout;
	FILE *fpin=stdin;
	FILE *fpout=stdout;

	ll n, x, y;
	fin >> n >> x >> y;
	if(y<n) {
		fout << -1 << endl;
		return 0;
	}

	ll ave=y/n;
	ll rem=y%n;
	ll sum=0;
	bool ok=false;
	for(int i=0; i<rem; i++) {
		sum+=(ave+1)*(ave+1);
		if(sum>=x) {
			ok=true;
			break;
		}
	}
	if(!ok) {
		for(int i=rem; i<n; i++) {
			sum+=ave*ave;
			if(sum>=x) {
				ok=true;
				break;
			}
		}
	}

	if(!ok) fout << -1 << endl;
	else {
		for(int i=0; i<rem; i++) fout << ave+1 << " ";
		for(int i=rem; i<n; i++) fout << ave << " ";
		fout << endl;
	}
}


#define _CRT_SECURE_NO_WARNINGS
#define _USE_MATH_DEFINES
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cfloat>
#include <cstring>
#include <list>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <numeric>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <iterator>
#include <complex>
#include <stack>
#include <queue>
#include <ctime>
using namespace std;
static const double EPS = 1e-8;
typedef long long ll;
typedef unsigned long long ull;
typedef complex <double> pt;
typedef complex <ll> pti;

int main() {
	//ifstream fin("input.txt", ios::in);
	//ofstream fout("output.txt", ios::out);
	//FILE *fpin=fopen("input.txt", "r");
	//FILE *fpout=fopen("output.txt", "w");
	istream &fin=cin;
	ostream &fout=cout;
	FILE *fpin=stdin;
	FILE *fpout=stdout;

	ll n, x, y;
	fin >> n >> x >> y;
	if(y<n) {
		fout << -1 << endl;
		return 0;
	}

	ll add=y-n;
	ll sum=(add+1)*(add+1)+n-1;
	if(sum>=x) {
		fout << add+1 << " ";
		for(int i=0; i<n-1; i++) fout << 1 << " ";
		fout << endl;
	} else fout << -1 << endl;

}


#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <fstream>
#include <sstream>
#include <map>
#include <set>
using namespace std;

#define sz(x) int((x).size())
#define FOR(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
#define ROF(i,a,b) for(int (i) = (a); (i) >= (b); --(i))
#define rep(i,n) for (int (i) = 0; (i) < (n); ++(i))
#define fe(i,a) for (int (i) = 0; (i) < int((a).size()); ++(i))
#define C(a) memset((a),0,sizeof(a))
#define inf 1000000000
#define pb push_back
#define ppb pop_back
#define all(c) (c).begin(), (c).end()
#define pi 2*acos(0.0)
#define sqr(a) (a)*(a)
#define mp(a,b) make_pair((a), (b))
#define X first
#define Y second

typedef vector<int> vint;
typedef long long ll;
typedef pair<int, int> pii;

ll n, x, y;

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

	cin >> n >> x >> y;
	if (sqr(y - n + 1) + n - 1 < x || x < n)
		cout << "-1" << endl;
	else
	{
		cout << y - n + 1 << endl;
		rep(i, n - 1)
			cout << 1 << endl;
	}

	return 0;
}


#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <fstream>
#include <sstream>
#include <map>
#include <set>
using namespace std;

#define sz(x) int((x).size())
#define FOR(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
#define ROF(i,a,b) for(int (i) = (a); (i) >= (b); --(i))
#define rep(i,n) for (int (i) = 0; (i) < (n); ++(i))
#define fe(i,a) for (int (i) = 0; (i) < int((a).size()); ++(i))
#define C(a) memset((a),0,sizeof(a))
#define inf 1000000000
#define pb push_back
#define ppb pop_back
#define all(c) (c).begin(), (c).end()
#define pi 2*acos(0.0)
#define sqr(a) (a)*(a)
#define mp(a,b) make_pair((a), (b))
#define X first
#define Y second

typedef vector<int> vint;
typedef long long ll;
typedef pair<int, int> pii;

ll n, x, y;

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

	cin >> n >> x >> y;
	if (sqr(y - n + 1) + n - 1 < x || y < n)
		cout << "-1" << endl;
	else
	{
		cout << y - n + 1 << endl;
		rep(i, n - 1)
			cout << 1 << endl;
	}

	return 0;
}


#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <fstream>
#include <sstream>
#include <map>
#include <set>
using namespace std;

#define sz(x) int((x).size())
#define FOR(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
#define ROF(i,a,b) for(int (i) = (a); (i) >= (b); --(i))
#define rep(i,n) for (int (i) = 0; (i) < (n); ++(i))
#define fe(i,a) for (int (i) = 0; (i) < int((a).size()); ++(i))
#define C(a) memset((a),0,sizeof(a))
#define inf 1000000000
#define pb push_back
#define ppb pop_back
#define all(c) (c).begin(), (c).end()
#define pi 2*acos(0.0)
#define sqr(a) (a)*(a)
#define mp(a,b) make_pair((a), (b))
#define X first
#define Y second

typedef vector<int> vint;
typedef long long ll;
typedef pair<int, int> pii;

ll n, x, y;

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

	cin >> n >> x >> y;
	if (sqr(y - n + 1) + n - 1 < x)
		cout << "-1" << endl;
	else
	{
		cout << y - n + 1 << endl;
		rep(i, n - 1)
			cout << 1 << endl;
	}

	return 0;
}


#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <cmath>
#include <stack>
#include <queue>
#include <string>

#pragma comment(linker,"/STACK:640000000")

using namespace std;

long long x , y , n , t;

int main()
{
  //("input.txt","r",stdin);
  //("output.txt","w",stdout);
  cin >> n >> x >> y;
  t = 1 ;
  while ( t * t + n - 1 < x )
      t ++ ;
  if ( t + n - 1 > y )
      printf("-1\n");
  else {
  cout << t << endl;
  for (int i = 1 ; i < n  ; i ++ )
      printf("1\n");
  }
  return 0;
}


#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <cmath>
#include <stack>
#include <queue>
#include <string>

#pragma comment(linker,"/STACK:640000000")

using namespace std;

long long x , y , n , t;

int main()
{
  //("input.txt","r",stdin);
  //("output.txt","w",stdout);
  cin >> n >> x >> y;
  t = 0 ;
  while ( t * t + n - 1 < x )
      t ++ ;
  if ( t + n - 1 > y )
      printf("-1\n");
  else {
  cout << t << endl;
  for (int i = 1 ; i < n  ; i ++ )
      printf("1\n");
  }
  return 0;
}


#include <iostream>
using namespace std;

typedef long long ll;
typedef long double ld;

int main()
{
	ll n, x, y;
	cin>>n>>x>>y;
	if((x<y))
	{
		//cout<<-1<<endl;
		//return 0;
	}
	ld p = x-(n-1);
	ld c = sqrtl(p);
	c = ceil(c);
	if(p>0)
	{
		if(c+n-1<=y)
		{
			for(int i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<c<<endl;

		}
		else
		{
			cout<<-1<<endl;

		}
	}
	else
	{
		if(c+n-1<=y)
		{
			cout<<c<<endl;
		}
		else
		{
			cout<<-1<<endl;

		}

	}
	return 0;
}


#include <iostream>
using namespace std;

typedef long long ll;
typedef long double ld;

int main()
{
	ll n, x, y;
	cin>>n>>x>>y;
	if((n>y))
	{
		cout<<-1<<endl;
		return 0;
	}
	ld p = x-(n-1);
	ld c = sqrtl(p);
	c = ceil(c);
	if(p>0)
	{
		if(c+n-1<=y)
		{
			for(int i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<c<<endl;

		}
		else
		{
			cout<<-1<<endl;

		}
	}
	else
	{
		if(c+n-1<=y)
		{
			cout<<c<<endl;
		}
		else
		{
			cout<<-1<<endl;

		}

	}
	return 0;
}


#include <iostream>
#include <fstream>
using namespace std;

typedef long long ll;
typedef long double ld;

int main()
{
	ll n, x, y;
	ifstream ff("file.txt");
	cin>>n>>x>>y;
	if((n>y))
	{
		cout<<-1<<endl;
		return 0;
	}
	ld p = abs(x-(n-1));
	ld c = sqrtl(p);
	c = ceil(c);
	if(p>0)
	{
		if(c+n-1<=y)
		{
			for(int i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<c<<endl;

		}
		else
		{
			cout<<-1<<endl;

		}
	}
	else
	{
		if(c+n-1<=y)
		{
			cout<<c<<endl;
		}
		else
		{
			cout<<-1<<endl;

		}

	}
	return 0;
}


#include <iostream>
#include <fstream>
using namespace std;

typedef long long ll;
typedef long double ld;

int main()
{
	ll n, x, y;
	ifstream ff("file.txt");
	cin>>n>>x>>y;
	if((n>y))
	{
		cout<<-1<<endl;
		return 0;
	}
	ld p = abs(x-(n-1));
	ld c = sqrtl(p);
	c = ceil(c);
	if(p>0)
	{
		if(c+n-1<=y)
		{
			for(int i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<(ll)c<<endl;

		}
		else
		{
			cout<<-1<<endl;

		}
	}
	else
	{
		if(c+n-1<=y)
		{
			cout<<(ll)c<<endl;
		}
		else
		{
			cout<<-1<<endl;

		}

	}
	return 0;
}


#include <iostream>
#include <fstream>
using namespace std;

typedef long long ll;
typedef long double ld;

int main()
{
	ll n, x, y;
	ifstream ff("file.txt");
	ff>>n>>x>>y;
	if((n>y))
	{
		cout<<-1<<endl;
		return 0;
	}
	ld p = abs(x-(n-1));
	ld c = sqrtl(p);
	c = ceil(c);
	if(p>0)
	{
		if(c+n-1<=y)
		{
			for(int i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<(ll)c<<endl;

		}
		else
		{
			cout<<-1<<endl;

		}
	}
	else
	{
		if(c+n-1<=y)
		{
			cout<<(ll)c<<endl;
		}
		else
		{
			cout<<-1<<endl;

		}

	}
	return 0;
}


#include <iostream>
#include <fstream>
using namespace std;

typedef long long ll;
typedef long double ld;

int main()
{
	ll n, x, y;
	ifstream ff("file.txt");
	cin>>n>>x>>y;
	if(n>y)
	{
		cout<<-1<<endl;
		return 0;
	}
	ld p = abs(x-(n-1));
	ld c = sqrtl(p);
	c = ceil(c);
	if(p>0)
	{
		if(c+n-1<=y)
		{
			for(int i=0; i<n-1; i++)
			{
				//cout<<1<<endl;
				printf("%d\n", 1);
			}
			cout<<(ll)c<<endl;

		}
		else
		{
			cout<<-1<<endl;

		}
	}
	else
	{
		if(c+n-1<=y)
		{
			cout<<(ll)c<<endl;
		}
		else
		{
			cout<<-1<<endl;

		}

	}
	return 0;
}


#include <iostream>
using namespace std;

typedef long long ll;
typedef long double ld;

int main()
{
	ll n, x, y;
	cin>>n>>x>>y;
	if(n>y || (x<y))
	{
		cout<<-1<<endl;
		return 0;
	}
	ld p = x-(n-1);
	ld c = sqrtl(p);
	c = ceil(c);
	if(p>0)
	{
		if(c+n-1<=y)
		{
			for(int i=0; i<n-1; i++)
			{
				cout<<1<<endl;
			}
			cout<<c<<endl;

		}
		else
		{
			cout<<-1<<endl;

		}
	}
	else
	{
		if(c+n-1<=y)
		{
			cout<<c<<endl;
		}
		else
		{
			cout<<-1<<endl;

		}

	}
	return 0;
}


#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <sstream>
#include <cmath>
#include <cassert>
#include <memory.h>

using namespace std;

#define fo(a,b,c) for (int a = (b); a < (c); a++)
#define fr(a,b) fo(a, 0, (b))
#define fi(n) fr(i, (n))
#define fj(n) fr(j, (n))
#define fd(a,b,c) for (int a = (b); a >= (c); a--)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define _(a,b) memset((a), (b), sizeof(a))
#define __(a) memset((a), 0, sizeof(a))
#define sz(a) (int)(a).size()
#define mp make_pair
#define pb push_back

typedef long long lint;
typedef unsigned long long ull;
typedef vector<int> VI;
typedef vector<string> VS;
typedef pair<int, int> PII;

const int INF = 1 << 30;
const lint LINF = 1LL << 60;
const double eps = 1e-9;
const int maxn = 100005;

void prepare()
{
#ifdef _DEBUG
	freopen("input.txt", "r", stdin);
//#else
//	freopen("input.txt", "r", stdin);
//	freopen("output.txt", "w", stdout);
#endif
}

int n;
lint x, y, s;

bool solve()
{
	cin >> n >> x >> y;
	y -= n - 1;
	if (y > 0 && y * y + n - 1 >= x)
	{
		printf("%I64d\n", y);
		for (int i = 0; i < n - 1; i++)
			printf("1\n");
	}
	else
		printf("-1\n");
	return false;
}

int main()
{
	prepare();
	while (solve());
	return 0;
}


#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <sstream>
#include <cmath>
#include <cassert>
#include <memory.h>

using namespace std;

#define fo(a,b,c) for (int a = (b); a < (c); a++)
#define fr(a,b) fo(a, 0, (b))
#define fi(n) fr(i, (n))
#define fj(n) fr(j, (n))
#define fd(a,b,c) for (int a = (b); a >= (c); a--)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define _(a,b) memset((a), (b), sizeof(a))
#define __(a) memset((a), 0, sizeof(a))
#define sz(a) (int)(a).size()
#define mp make_pair
#define pb push_back

typedef long long lint;
typedef unsigned long long ull;
typedef vector<int> VI;
typedef vector<string> VS;
typedef pair<int, int> PII;

const int INF = 1 << 30;
const lint LINF = 1LL << 60;
const double eps = 1e-9;
const int maxn = 100005;

void prepare()
{
#ifdef _DEBUG
	freopen("input.txt", "r", stdin);
//#else
//	freopen("input.txt", "r", stdin);
//	freopen("output.txt", "w", stdout);
#endif
}

int n;
lint x, y, s;

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

int main()
{
	prepare();
	while (solve());
	return 0;
}


#include<stdio.h>

int main (){
    printf ("4\n4\n4\n2\n1\n")

    return 0;
}


#include <stdio.h>

int main (){
	int n;
	long long int x;
	int y;
	int hasil [100000];
	long long int temp;
	int temp1=0;
	long long int temp2;
	long long int temp3;
	int counter=0;
	bool benar =false;
	scanf ("%d %I64d %d", &n, &x, &y);getchar ();
//	printf ("%d %I64d %d\n", n, x, y);
//printf ("%d", y);
//	 x-=n-1;
	 y-=n-1;
	if (y<=0){
//		printf ("test\n");
		printf ("-1\n");
		return 0;
	}
	if (x > y){
		temp2 = x;
	}else if (x <=y){
		temp2=y;
	}

		for (long long int i =1; i<=temp2; i++){
//			printf ("i %d\n", i);
			if (i > y){
				benar = false;
				break;
			}
			if (i*i >= x){
//				if (i + (n-1) <= y){
	//				printf ("woi2\n");
					benar = true;
					temp = i;
					break;
//				}
			}
		}
		if (benar == true){
			for (int i =0; i<n-1; i++){
				printf ("1\n");
			}
			printf ("%I64d\n", temp);
		}else {
			printf ("-1\n");
		}
//	temp3 =y;
//	int i = y - (n-1);
////	int i=y;
//	while (i > 0){
////		printf ("i %d\n", i);
////		printf ("count %d\n", counter);
//		if (temp1 + i <= y){
//			if (counter == 0){
//				temp1+= i;
//				temp3 -= i;
//				hasil [counter] = i;
//				counter++;
//				temp2 *= i*i;
//				if (counter == n){
//					break;
//				}
//			}
//			else if (counter > 0){
//				if (temp3-i-(n-counter-1) >= 0){
//					printf ("temp %d\n", temp3);
//					temp1+= i;
//					temp3 -= i;
//					hasil [counter] = i;
//					counter++;
//					temp2 *= i*i;
//					if (counter == n){
//						break;
//					}
//				}else {
//					i--;
//				}
//			}
//		}else {
//
//			i--;
//		}
//	}
//	if (temp2 < x){
//		printf("-1\n");
//	}else {
//		for (int j =0; j<counter; j++){
//			printf ("%d\n", hasil[j]);
//		}
//	}
//	int temp4 =
//	printf ("temp %d", temp);
//	for (int i =0; i<temp; i++){
////		printf ("i %d\n", i);
//		if (temp1 + (i*i) >= x){
////			printf ("yes\n");
//			temp1 += i*i;
//			if ((temp2+i) < temp){
//				temp2 += i;
//				hasil[counter] = i;
//				counter++;
//				if (counter > n-1){
//					break;
//				}
//			}
//		}
//	}
////	printf ("count %d", counter);
//	for (int i =0; i<counter; i++){
//		printf ("%d\n", hasil[i]);
//	}
	return 0;
}


#include <stdio.h>

int main (){
    printf ("4\n4\n4\n3\n1\n");

    return 0;
}


#include <stdio.h>

int main (){
	int n;
	long long int x;
	int y;
	int hasil [100000];
	long long int temp;
	int temp1=0;
	long long int temp2;
	long long int temp3;
	int counter=0;
	bool benar =false;
	scanf ("%d %I64d %d", &n, &x, &y);getchar ();
//	printf ("%d %I64d %d\n", n, x, y);
//printf ("%d", y);
	 x-=n-1;
	 y-=n-1;
	if (y<=0){
//		printf ("test\n");
		printf ("-1\n");
		return 0;
	}
//	if (x > y){
//		temp2 = x;
//	}else if (x <=y){
//		temp2=y;
//	}

		for (long long int i =1; i<=y; i++){
//			printf ("i %d\n", i);
			if (i > y){
				benar = false;
				break;
			}
			if (i*i >= x){
//				if (i + (n-1) <= y){
	//				printf ("woi2\n");
					benar = true;
					temp = i;
					break;
//				}
			}
		}
		if (benar == true){
			for (int i =1; i<=n-1; i++){
				printf ("1\n");
			}
			printf ("%I64d\n", temp);
		}else {
			printf ("-1\n");
		}
//	temp3 =y;
//	int i = y - (n-1);
////	int i=y;
//	while (i > 0){
////		printf ("i %d\n", i);
////		printf ("count %d\n", counter);
//		if (temp1 + i <= y){
//			if (counter == 0){
//				temp1+= i;
//				temp3 -= i;
//				hasil [counter] = i;
//				counter++;
//				temp2 *= i*i;
//				if (counter == n){
//					break;
//				}
//			}
//			else if (counter > 0){
//				if (temp3-i-(n-counter-1) >= 0){
//					printf ("temp %d\n", temp3);
//					temp1+= i;
//					temp3 -= i;
//					hasil [counter] = i;
//					counter++;
//					temp2 *= i*i;
//					if (counter == n){
//						break;
//					}
//				}else {
//					i--;
//				}
//			}
//		}else {
//
//			i--;
//		}
//	}
//	if (temp2 < x){
//		printf("-1\n");
//	}else {
//		for (int j =0; j<counter; j++){
//			printf ("%d\n", hasil[j]);
//		}
//	}
//	int temp4 =
//	printf ("temp %d", temp);
//	for (int i =0; i<temp; i++){
////		printf ("i %d\n", i);
//		if (temp1 + (i*i) >= x){
////			printf ("yes\n");
//			temp1 += i*i;
//			if ((temp2+i) < temp){
//				temp2 += i;
//				hasil[counter] = i;
//				counter++;
//				if (counter > n-1){
//					break;
//				}
//			}
//		}
//	}
////	printf ("count %d", counter);
//	for (int i =0; i<counter; i++){
//		printf ("%d\n", hasil[i]);
//	}
	return 0;
}


#include <stdio.h>

int main (){
	int n;
	long long int x;
	int y;
	int hasil [100000];
	long long int temp;
	int temp1=0;
	long long int temp2;
	long long int temp3;
	int counter=0;
	bool benar =false;
	scanf ("%d %I64d %d", &n, &x, &y);getchar ();
//	printf ("%d %I64d %d\n", n, x, y);
//printf ("%d", y);
	 x-=n-1;
	 y-=n-1;
	if (y<=0){
//		printf ("test\n");
		printf ("-1\n");
//		return 0;
	}
//	if (x > y){
//		temp2 = x;
//	}else if (x <=y){
//		temp2=y;
//	}

		for (long long int i =1; i<=y; i++){
//			printf ("i %d\n", i);
			if (i > y){
				benar = false;
				break;
			}
			if (i*i >= x){
//				if (i + (n-1) <= y){
	//				printf ("woi2\n");
					benar = true;
					temp = i;
					break;
//				}
			}
		}
		if (benar == true){
			for (int i =1; i<=n-1; i++){
				printf ("1\n");
			}
			printf ("%I64d\n", temp);
		}else {
			printf ("-1\n");
		}
//	temp3 =y;
//	int i = y - (n-1);
////	int i=y;
//	while (i > 0){
////		printf ("i %d\n", i);
////		printf ("count %d\n", counter);
//		if (temp1 + i <= y){
//			if (counter == 0){
//				temp1+= i;
//				temp3 -= i;
//				hasil [counter] = i;
//				counter++;
//				temp2 *= i*i;
//				if (counter == n){
//					break;
//				}
//			}
//			else if (counter > 0){
//				if (temp3-i-(n-counter-1) >= 0){
//					printf ("temp %d\n", temp3);
//					temp1+= i;
//					temp3 -= i;
//					hasil [counter] = i;
//					counter++;
//					temp2 *= i*i;
//					if (counter == n){
//						break;
//					}
//				}else {
//					i--;
//				}
//			}
//		}else {
//
//			i--;
//		}
//	}
//	if (temp2 < x){
//		printf("-1\n");
//	}else {
//		for (int j =0; j<counter; j++){
//			printf ("%d\n", hasil[j]);
//		}
//	}
//	int temp4 =
//	printf ("temp %d", temp);
//	for (int i =0; i<temp; i++){
////		printf ("i %d\n", i);
//		if (temp1 + (i*i) >= x){
////			printf ("yes\n");
//			temp1 += i*i;
//			if ((temp2+i) < temp){
//				temp2 += i;
//				hasil[counter] = i;
//				counter++;
//				if (counter > n-1){
//					break;
//				}
//			}
//		}
//	}
////	printf ("count %d", counter);
//	for (int i =0; i<counter; i++){
//		printf ("%d\n", hasil[i]);
//	}
	return 0;
}


#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;

int main()
{
    int n;long long x,y;
    cin>>n>>x>>y;
    x-=(n-1);
    y-=(n-1);
    if(y<=0){return puts("-1");}
    int flag = 0;
    long long t;
    for(int i=1;i<=y;i++)
    {
        t = i;
        if(t>y)
            return puts("-1");
        if(t*t>=x)
        {
            flag = 1;
            break;
        }
    }
    if(flag==0)
        return puts("-1");
    for(int i=1;i<=n-1;i++)
        printf("1\n");
    printf("%d\n",t);
}


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <algorithm>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <memory.h>

#define MP make_pair
#define VI vector<int>
#define PI 3.14159265358979
#define LL long long
using namespace std;

int N;
LL X, Y;

void proc()
{
	LL t = 1LL;
	LL t1 = Y - ( N - 1 );
	LL sum = t1 * t1;
	for( int i = 1; i < N; ++ i )
		sum += 1;
	if( sum < X )
	{
		printf( "-1\n" );
	}
	else
	{
		for( int i = 0; i < N - 1; ++ i )
			printf( "1\n" );
		printf( "%I64d\n", t1 );
	}
}

int main()
{
#if _MSC_VER == 1500
	freopen ( "in.txt", "r", stdin );
#endif
	while( cin >> N >> X >> Y )
		proc();
	return 0;
}


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <algorithm>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <memory.h>

#define MP make_pair
#define VI vector<int>
#define PI 3.14159265358979
#define LL long long
using namespace std;

int N;
LL X, Y;

void proc()
{
	LL t = 1LL;
	LL t1 = Y - ( N - 1 );
	LL sum = t1 * t1;
	for( int i = 1; i < N; ++ i )
		sum += 1;
	if( sum < X || t1 <= 0 )
	{
		printf( "-1\n" );
	}
	else
	{
		for( int i = 0; i < N - 1; ++ i )
			printf( "1\n" );
		printf( "%I64d\n", t1 );
	}
}

int main()
{
#if _MSC_VER == 1500
	freopen ( "in.txt", "r", stdin );
#endif
	while( cin >> N >> X >> Y )
		proc();
	return 0;
}


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <algorithm>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <memory.h>

#define MP make_pair
#define VI vector<int>
#define PI 3.14159265358979
#define LL long long
using namespace std;

int N;
LL X, Y;

void proc()
{
	LL t = 1LL;
	LL t1 = Y - ( N - 1 );
	LL sum = t1 * t1;
	for( int i = 1; i < N; ++ i )
		sum += 1;
	if( sum < X || t1 < 0 )
	{
		printf( "-1\n" );
	}
	else
	{
		for( int i = 0; i < N - 1; ++ i )
			printf( "1\n" );
		printf( "%I64d\n", t1 );
	}
}

int main()
{
#if _MSC_VER == 1500
	freopen ( "in.txt", "r", stdin );
#endif
	while( cin >> N >> X >> Y )
		proc();
	return 0;
}


//#define MY_DEBUG

#include <set>
#include <string>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cmath>
#pragma comment(linker, "/STACK:64000000")

using namespace std;

#ifdef MY_DEBUG
#include <fstream>
ifstream cin("input.txt");
ofstream cout("output.txt");
//ifstream cin("game.in");
//ofstream cout("game.out");
#else
#include <iostream>
#endif

const long double eps =  1e-6;
const long long inf = 1000000007;
//const long long linf = (long long)1e18;
const long double pi = acos(-1.0);
const int prime = 53;

inline void finclude(){
#ifdef MY_DEBUG
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
    srand(time(NULL));
}

int main(){
    long long n, x, y;
    cin >> n >> x >> y;
    if (n > y || (y - n + 1) * (y - n + 1) + n - 1 < x){
        cout << "-1\n";
        return 0;
    }
    cout << y - n + 1 << ' ';
    for(int i = 1; i < n; ++i)
        cout << 1 << ' ';
    cout << '\n';
}


#include <iostream>
#include <set>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <math.h>
#include <string>
#include <map>
#include <stdlib.h>
//#include <ctime>
//#include <fstream>
using namespace std;

using namespace std;

#define INF 1000000000
#define PI acos(-1.0)
#define MP make_pair
double EPS=1e-8;

int main(){

    long long n,x,y;
    cin>>n>>x>>y;
    int a,b;
    a=y/n;
    b=y%n;

    long long X=0;
    for (int i=0; i<n; i++){
        if (b==0) X+=a*(long long)a;
        else{
            if (i<b) X+=(a+1)*(long long)(a+1);
            else X+=(a)*(long long)(a);
        }
    }

    if (X<x || a==0) cout<<"-1"<<endl;
    else{
        for (int i=0; i<n; i++){
            if (b==0) printf("%d\n",a);
            else if (i<b) printf("%d\n",a+1);
            else printf("%d\n",a);
        }
    }

}


#include <iostream>
#include <set>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <math.h>
#include <string>
#include <map>
#include <stdlib.h>
//#include <ctime>
//#include <fstream>
using namespace std;

using namespace std;

#define INF 1000000000
#define PI acos(-1.0)
#define MP make_pair
double EPS=1e-8;

int main(){

    long long n,x,y;
    cin>>n>>x>>y;

    double B=sqrt((double)(x-(n-1)));
    long long b=B;
    if (B-b>EPS) b++;

    if (n>y){
        cout<<"-1"<<endl;
        return 0;
    }

    y-=(n-1);
    if (b>y){
        cout<<"-1"<<endl;
        return 0;
    }

    printf("%d\n",(int)b);
    for (int i=1; i<n; i++){
        printf("1\n");
    }
    return 0;

/*  b=y%n;

    long long X=0;
    for (int i=0; i<n; i++){
        if (b==0) X+=a*(long long)a;
        else{
            if (i<b) X+=(a+1)*(long long)(a+1);
            else X+=(a)*(long long)(a);
        }
    }

    if (X<x || a==0) cout<<"-1"<<endl;
    else{
        for (int i=0; i<n; i++){
            if (b==0) printf("%d\n",a);
            else if (i<b) printf("%d\n",a+1);
            else printf("%d\n",a);
        }
    }*/

}


#include <iostream>
#include <set>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <math.h>
#include <string>
#include <map>
#include <stdlib.h>
//#include <ctime>
//#include <fstream>
using namespace std;

using namespace std;

#define INF 1000000000
#define PI acos(-1.0)
#define MP make_pair
double EPS=1e-8;

int main(){

    long long n,x,y;
    cin>>n>>x>>y;
    int a,b;
    a=y/n;
    b=y%n;

    long long X=0;
    for (int i=0; i<n; i++){
        if (b==0) X+=a*(long long)a;
        else{
            if (i<b) X+=(a+1)*(long long)(a+1);
            else X+=(a)*(long long)(a);
        }
    }

    if (X<x) cout<<"-1"<<endl;
    else{
        for (int i=0; i<n; i++){
            if (b==0) printf("%d\n",a);
            else if (i<b) printf("%d\n",a+1);
            else printf("%d\n",a);
        }
    }

}


#include <iostream>
#include <set>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <math.h>
#include <string>
#include <map>
#include <stdlib.h>
//#include <ctime>
//#include <fstream>
using namespace std;

using namespace std;

#define INF 1000000000
#define PI acos(-1.0)
#define MP make_pair
double EPS=1e-8;
#define EXIT {return exit();}

int exit(){
    cout<<"-1"<<endl;
    return 0;
}

int main(){

    long long n,x,y;
    cin>>n>>x>>y;
    if (n>y) EXIT;

    if ((long long)(y-n+1)*(y-n+1)+n-1<x) EXIT;
    cout<<y-n+1<<endl;
    for (int i=1; i<n; i++){
        cout<<1<<endl;
    }
    return 0;

}


#include<stdio.h>
#include<iostream>
using namespace std;
__int64 z[1000000];
__int64 x,y,n;
int main()
{
    scanf("%I64d%I64d%I64d",&n,&x,&y);
    for(int i=0;i<(int)y;i++)
    {
        int idx=i%n;
        if(z[idx]==0)
        z[idx]++;
        else z[0]++;
    }
    __int64 res=0;
    bool ok=true;
    for(int i=0;i<n;i++)
    {
        if(z[i]<=0)ok=false;
        res+=z[i]*z[i];
    }

    if(res>=x && ok)
    {
        for(int i=0;i<n;i++)
        {
            printf("%I64d\n",z[i]);
        }
    }
    else printf("-1\n");
}


#include<stdio.h>
#include<iostream>
using namespace std;
__int64 z[1000000];
__int64 x,y,n;
int main()
{
    scanf("%I64d%I64d%I64d",&n,&x,&y);
    for(int i=0;i<(int)y;i++)
    {
        int idx=i%n;
        z[idx]++;
    }
    __int64 res=0;
    bool ok=true;
    for(int i=0;i<n;i++)
    {
        if(z[i]<=0)ok=false;
        res+=z[i]*z[i];
    }

    if(res>=x && ok)
    {
        for(int i=0;i<n;i++)
        {
            printf("%I64d\n",z[i]);
        }
    }
    else printf("-1\n");
}


// rc.cpp
//

#include <math.h>
#include <string.h>

#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <list>
#include <algorithm>
#include <numeric>

using namespace std;

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned __int64 uint64;

#define PI 3.1415926535897932384626433832795
#define EPS 1E-8

int main(int argc, char* argv[])
{
	uint64 n, x, y;
	cin >> n >> x >> y;

	if (n > y)
		cout << -1 << endl;
	else
	{
		--n;
		uint64 f = y - n;
		if (f * f + n < x)
			cout << -1 << endl;
		else
		{
			cout << f << endl;
			for (uint i = 0; i < n; ++i)
				cout << 1 << endl;
		}
	}

	return 0;
}


#pragma comment(linker, "/stack:64000000")
#include <algorithm>
#include <iostream>
#include <cassert>
#include <climits>
#include <utility>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <bitset>
#include <string>
#include <deque>
#include <queue>
#include <ctime>
#include <set>
#include <map>
#include <deque>
#include <stack>
#include <cmath>
using namespace std;

typedef long long li;
typedef long double ld;
#define forn(i, n) for (int i = 0; i < int(n); i++)
#define ford(i, n) for (int i = int(n) - 1; i >= 0; i--)
#define for1(i, n) for (int i = 1; i <= int(n); i++)
#define fore(i, l, r) for (int i = int(l); i <= int(r); i++)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define sz(a) int((a).size())
#define pb(a) push_back((a))
#define pt pair <int, int>
#define mp make_pair
#define x first
#define y second

template <typename X> inline X abs (const X &a) {return a < 0? -a: a;}
template <typename X> inline X sqr (const X &a) {return a * a;}

const int INF = INT_MAX / 2;
const ld eps = 1e-9, PI = 3.1415926535897932384626433832795;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
#endif

    int n, y;
    li x;

    cin >> n >> x >> y;

    int val = y - n + 1;

    if (li (val) * li (val) + li (n - 1) >= x)
    {
        forn (i, n - 1)
            puts ("1");
        cout << val << endl;
    }
    else
        puts ("-1");

    return 0;
}


#pragma comment(linker, "/stack:64000000")
#include <algorithm>
#include <iostream>
#include <cassert>
#include <climits>
#include <utility>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <bitset>
#include <string>
#include <deque>
#include <queue>
#include <ctime>
#include <set>
#include <map>
#include <deque>
#include <stack>
#include <cmath>
using namespace std;

typedef long long li;
typedef long double ld;
#define forn(i, n) for (int i = 0; i < int(n); i++)
#define ford(i, n) for (int i = int(n) - 1; i >= 0; i--)
#define for1(i, n) for (int i = 1; i <= int(n); i++)
#define fore(i, l, r) for (int i = int(l); i <= int(r); i++)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define sz(a) int((a).size())
#define pb(a) push_back((a))
#define pt pair <int, int>
#define mp make_pair
#define x first
#define y second

template <typename X> inline X abs (const X &a) {return a < 0? -a: a;}
template <typename X> inline X sqr (const X &a) {return a * a;}

const int INF = INT_MAX / 2;
const ld eps = 1e-9, PI = 3.1415926535897932384626433832795;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
#endif

    li n, y;
    li x;

    cin >> n >> x >> y;

    li val = y - n + 1;

    if (val * val + n - 1LL >= x)
    {
        forn (i, n - 1)
            puts ("1");

        cout << val << endl;
    }
    else
        puts ("-1");

    return 0;
}


#pragma comment(linker, "/stack:64000000")
#include <algorithm>
#include <iostream>
#include <cassert>
#include <climits>
#include <utility>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <bitset>
#include <string>
#include <deque>
#include <queue>
#include <ctime>
#include <set>
#include <map>
#include <deque>
#include <stack>
#include <cmath>
using namespace std;

typedef long long li;
typedef long double ld;
#define forn(i, n) for (int i = 0; i < int(n); i++)
#define ford(i, n) for (int i = int(n) - 1; i >= 0; i--)
#define for1(i, n) for (int i = 1; i <= int(n); i++)
#define fore(i, l, r) for (int i = int(l); i <= int(r); i++)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define sz(a) int((a).size())
#define pb(a) push_back((a))
#define pt pair <int, int>
#define mp make_pair
#define x first
#define y second

template <typename X> inline X abs (const X &a) {return a < 0? -a: a;}
template <typename X> inline X sqr (const X &a) {return a * a;}

const int INF = INT_MAX / 2;
const ld eps = 1e-9, PI = 3.1415926535897932384626433832795;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
#endif

    int n;
    li x, y;

    cin >> n >> x >> y;

    int k = y % n;
    li val = li (y / n);

    li s = li (k) * sqr (val + 1LL) + li (n - k) * sqr (val);

    if (s >= x)
    {
        forn (i, k)
            printf ("%d\n", int (val + 1));

        forn (i, n - k)
            printf ("%d\n", int (val));
    }
    else
    {
        puts ("-1");
    }

    return 0;
}


#pragma comment(linker, "/stack:64000000")
#include <algorithm>
#include <iostream>
#include <cassert>
#include <climits>
#include <utility>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <bitset>
#include <string>
#include <deque>
#include <queue>
#include <ctime>
#include <set>
#include <map>
#include <deque>
#include <stack>
#include <cmath>
using namespace std;

typedef long long li;
typedef long double ld;
#define forn(i, n) for (int i = 0; i < int(n); i++)
#define ford(i, n) for (int i = int(n) - 1; i >= 0; i--)
#define for1(i, n) for (int i = 1; i <= int(n); i++)
#define fore(i, l, r) for (int i = int(l); i <= int(r); i++)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define sz(a) int((a).size())
#define pb(a) push_back((a))
#define pt pair <int, int>
#define mp make_pair
#define x first
#define y second

template <typename X> inline X abs (const X &a) {return a < 0? -a: a;}
template <typename X> inline X sqr (const X &a) {return a * a;}

const int INF = INT_MAX / 2;
const ld eps = 1e-9, PI = 3.1415926535897932384626433832795;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
#endif

    li n, y;
    li x;

    cin >> n >> x >> y;

    li val = y - n + 1;

    if (val <= 0LL)
    {
        puts ("-1");
        return 0;
    }

    if (val * val + n - 1LL >= x)
    {
        forn (i, n - 1)
            puts ("1");

        cout << val << endl;
    }
    else
        puts ("-1");

    return 0;
}


#pragma comment(linker, "/STACK:134217728")

#include <cstdio>
#include <iostream>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <string>
#include <algorithm>
#include <numeric>
#include <functional>
#include <cmath>
#include <complex>
#include <memory.h>
#include <time.h>

using namespace std;

typedef long long LL;

int n, y;
LL x;

int main()
{
	scanf("%d%I64d%d", &n, &x, &y);

	if (y < n)
	{
		printf("-1\n");
		return 0;
	}

	LL s = (LL)(y - (n - 1)) * (y - (n - 1));
	s += n - 1;
	if (s >= x)
	{
		printf("%d\n", y - (n - 1));
		for(int i = 0; i < n - 1; ++i)
			printf("1\n");
	}
	else
		printf("-1\n");
	return 0;
}


#include <iostream>
#include <vector>
using namespace std;
long long int n,x,y;
int main()
{
    cin >> n >> x >> y;
    if (y<n || x<n || (y+1-n)*(y+1-n)+n-1<x) cout << -1;
    else
    {
        cout << y+1-n << "\n";
        for (int i=1;i<n;i++) cout << 1 << "\n";
    }
    return 0;
}


#include <iostream>
#include <vector>
using namespace std;
long long int n,x,y;
int main()
{
    cin >> n >> x >> y;
    if (y<n || (y+1-n)*(y+1-n)+n-1<x) cout << -1;
    else
    {
        cout << y+1-n << "\n";
        for (int i=1;i<n;i++) cout << 1 << "\n";
    }
    return 0;
}


#include <iostream>
#include <vector>
using namespace std;
long long int n,x,y;
int main()
{
    cin >> n >> x >> y;
    if (y<n || x<n || x<y || (y+1-n)*(y+1-n)+n-1<x) cout << -1;
    else
    {
        cout << y+1-n << "\n";
        for (int i=1;i<n;i++) cout << 1 << "\n";
    }
    return 0;
}


#include "iostream"
#include "string.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "limits.h"
#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include <stack>
#define PI       3.14159265358979323846
#define ull  unsigned long long int
#define ll  long long int
#define EPS 1e-11
#define pb push_back
#define EOS(c) (c != EOF && c != '\0' && c != '\n' && c != ' ')
#define oo 1000000005

using namespace std;

int MAX(int a, int b)
{
    return (a > b) ? a : b;
}

double FMAX(double a, double b)
{
    return (a > b) ? a : b;
}

int MIN(int a, int b)
{
    return (a < b) ? a : b;
}

double FMIN(double a, double b)
{
    return (a < b) ? a : b;
}

int GCD(int a,int b)
{
    return b ? GCD(b, a % b) : a;
}

int UGCD(ull a, ull b)
{
    return b ? GCD(b, a % b) : a;
}

int LCM(int a,int b)
{
    return a / GCD(a, b) * b;
}

void fswop(double &a, double &b)
{
    double c = a;
    a = b;
    b = c;
}

void swop(int &a, int &b)
{
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

ll u(ll a)
{
    if(a >= 0)
        return a;
    return a * (-1);
}

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

    int n, i;
    ull x, y;

    cin >> n >> x >> y;

    if(y < n || ((y - n + 1) * (y - n + 1) + n - 1) < x)
    {
        printf("-1");
        return 0;
    }

    cout << y - n + 1 << "\n";

    for(i = 1; i < n; i++)
        printf("1\n");

    return 0;
}


#include <iostream>
#include <string>
#include <map>
#include <math.h>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <set>
#include <queue>
#include <sstream>

using namespace std;

#define sqr(x) ((x)*(x))
#define PB(a) push_back(a)
#define MP(a) make_pair(a)
#define ll long long

int gcd(int a, int b) {
	while (b) b^=a^=b^=a%=b;
	return a;
}

const int maxn=100100;
const double eps=1e-9;

ll n,x,y;

int main() {
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif

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

	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <hash_map>
#include <hash_set>
#include <vector>
#include <sstream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <iterator>
using namespace std;
#define mems(arr, val) memset(arr, val, sizeof(arr))
#define forn(it, from, to) for(int it = from; it < to; ++it)
#define all(A) (A).begin(), A.end()
#define mp(a, b) make_pair(a, b)
typedef long long LL;

bool mysort1(pair<int, int> p1, pair<int, int> p2)
{
	if (p1.first == p2.first) return p1.second < p2.second; else return p1.first > p2.first;
}
bool mysort2(pair<int, int> p1, pair<int, int> p2)
{
	if (p1.first == p2.first) return p1.second > p2.second; else return p1.first > p2.first;
}

int main()
{
#ifdef MY_SOL
    freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#endif
	LL n,x,y;
	cin>>n>>x>>y;
	vector<LL> a(n, 1);
	if (n > y)
	{
		cout<<-1;
		return 0;
	}

	while(n < y)
	{
		a[0]++;
		n++;
	}

	if (a[0] * a[0] + (a.size() - 1) < x)
	{
		cout<<-1;
		return 0;
	}

	forn(i, 0, a.size())
		cout<<a[i]<<" ";

    return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <hash_map>
#include <hash_set>
#include <vector>
#include <sstream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <iterator>
using namespace std;
#define mems(arr, val) memset(arr, val, sizeof(arr))
#define forn(it, from, to) for(int it = from; it < to; ++it)
#define all(A) (A).begin(), A.end()
#define mp(a, b) make_pair(a, b)
typedef long long LL;

bool mysort1(pair<int, int> p1, pair<int, int> p2)
{
	if (p1.first == p2.first) return p1.second < p2.second; else return p1.first > p2.first;
}
bool mysort2(pair<int, int> p1, pair<int, int> p2)
{
	if (p1.first == p2.first) return p1.second > p2.second; else return p1.first > p2.first;
}

int main()
{
#ifdef MY_SOL
    freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#endif
	LL n,x,y;
	vector<LL> a(n, 1);
	if (n > y)
	{
		cout<<-1;
		return 0;
	}

	while(n < y)
	{
		a[0]++;
		n++;
	}

	if (a[0] * a[0] + (n - 1) < x)
	{
		cout<<-1;
		return 0;
	}

	forn(i, 0, n)
		cout<<a[i]<<" ";

    return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <hash_map>
#include <hash_set>
#include <vector>
#include <sstream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <iterator>
using namespace std;
#define mems(arr, val) memset(arr, val, sizeof(arr))
#define forn(it, from, to) for(int it = from; it < to; ++it)
#define all(A) (A).begin(), A.end()
#define mp(a, b) make_pair(a, b)
typedef long long LL;

bool mysort1(pair<int, int> p1, pair<int, int> p2)
{
	if (p1.first == p2.first) return p1.second < p2.second; else return p1.first > p2.first;
}
bool mysort2(pair<int, int> p1, pair<int, int> p2)
{
	if (p1.first == p2.first) return p1.second > p2.second; else return p1.first > p2.first;
}

int main()
{
#ifdef MY_SOL
    freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#endif
	LL n,x,y;
	cin>>n>>x>>y;
	vector<LL> a(n, 1);
	if (n > y)
	{
		cout<<-1;
		return 0;
	}

	while(n < y)
	{
		a[0]++;
		n++;
	}

	if (a[0] * a[0] + (n - 1) < x)
	{
		cout<<-1;
		return 0;
	}

	forn(i, 0, a.size())
		cout<<a[i]<<" ";

    return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#pragma comment(linker, "/STACK:64000000")
#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cmath>
#include <set>
#include <map>
#include <cassert>
#include <queue>
#include <deque>
#include <stack>
#include <sstream>
#include <cstring>
#include <string>
#include <functional>
#include <numeric>

using namespace std;

#define MP make_pair
#define all(v) (v).begin(), (v).end()

const int INF = ((1 << 31) - 1);
const long long LLINF = (((1LL << 63) - 1LL));
const double eps = 1e-9;
const double PI = 3.14159265358979323846;

typedef long long ll;

ll sqr(int x) {
    return 1LL * x * x;
}

int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
    int n, y;
    ll x;
    cin >> n >> x >> y;
    vector<int> a;
    for (int i = 0; i < n; ++i)
        a.push_back(1);
    a.back() = (y - (n-1));
    ll sumSq = 0;
    ll sum = 0;
    for(int i = 0; i < n; ++i) {
        sumSq += sqr(a[i]);
        sum += a[i];
    }
    assert(sum == y);
    if (*min_element(all(a)) <= 0 || sumSq < x || sum > y) {
        cout << -1;
        return 0;
    }
    for (int i = 0 ;i < n; ++i)
        printf("%d ", a[i]);
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#pragma comment(linker, "/STACK:64000000")
#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cmath>
#include <set>
#include <map>
#include <cassert>
#include <queue>
#include <deque>
#include <stack>
#include <sstream>
#include <cstring>
#include <string>
#include <functional>
#include <numeric>

using namespace std;

#define MP make_pair
#define all(v) (v).begin(), (v).end()

const int INF = ((1 << 31) - 1);
const long long LLINF = (((1LL << 63) - 1LL));
const double eps = 1e-9;
const double PI = 3.14159265358979323846;

typedef long long ll;

ll sqr(int x) {
    return 1LL * x * x;
}

int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
    int n, y;
    ll x;
    cin >> n >> x >> y;
    vector<int> a;
    for (int i = 0; i < n; ++i)
        a.push_back(y / n);
    for (int i = 0; i < (y % n); ++i)
        a[i]+=1;
    ll sumSq = 0;
    ll sum = 0;
    for(int i = 0; i < n; ++i) {
        sumSq += sqr(a[i]);
        sum += a[i];
    }
    assert(sum == y);
    if (*min_element(all(a)) == 0 || sumSq < x || sum > y) {
        cout << -1;
        return 0;
    }
    for (int i = 0 ;i < n; ++i)
        printf("%d ", a[i]);
	return 0;
}


#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
#include<utility>
#include<set>
#include<deque>
#include<cstdlib>
#include<cctype>
#include<cmath>
#include<list>
#include<stack>
#include<queue>
#include<sstream>
using namespace std;

typedef pair<int,int> pii;
typedef pair<double,double> pdd;
typedef long long LLL;
typedef unsigned long long HL;
const double EPS = 1e-8;
const int INF = 1e9;
const LLL LINF = 1e18;

int n;
LLL x,y;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif

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

    return 0;
}


/*
 * File:   main.cpp
 * Author: liuyubo
 *
 * Created on February 28, 2012, 11:46 PM
 */

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>

#include <utility>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <queue>
#include <map>

using namespace std;

void loadData( void );
bool proc( void );
void printRes( bool );

int n;
long long x,y;

int main(int argc, char** argv) {

    loadData();
    printRes( proc() );

    return 0;
}

bool proc( void ){

    if( y < (long long)n )
        return false;

    if( ( y - (long long)(n-1) ) * ( y - (long long)(n-1) ) + (long long)(n-1) >= x )
        return true;
    return false;
}

void loadData( void ){

    cin >> n;
    cin >> x >> y;
    return;
}

void printRes( bool res ){

    if( res ){
        for( int i = 0 ; i < n-1 ; i ++ )
            printf("1 ");
        cout<<y - (long long)(n-1)<<endl;
    }
    else{
        printf("-1\n");
    }

    return;
}


/*
 * File:   main.cpp
 * Author: liuyubo
 *
 * Created on February 28, 2012, 11:46 PM
 */

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>

#include <utility>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <queue>
#include <map>

using namespace std;

void loadData( void );
bool proc( void );
void printRes( bool );

int n;
long long x,y;

int main(int argc, char** argv) {

    loadData();
    printRes( proc() );

    return 0;
}

bool proc( void ){

    if( ( y - (long long)(n-1) ) * ( y - (long long)(n-1) ) + (long long)(n-1) >= x )
        return true;
    return false;
}

void loadData( void ){

    cin >> n;
    cin >> x >> y;
    return;
}

void printRes( bool res ){

    if( res ){
        for( int i = 0 ; i < n-1 ; i ++ )
            printf("1 ");
        cout<<y - (long long)(n-1)<<endl;
    }
    else{
        printf("-1\n");
    }

    return;
}


#include <iostream>

using namespace std;

int main()
{
	long long n, a, b;
	cin >> n >> a >> b;

	long long s1 = n - 1, s2 = n - 1;
	long long cand = b - (n - 1);
	if (cand >= 0 && cand + s1 <= b && cand * cand + s2 >= a)
	{
		for (int i = 0; i < n - 1; i++)
			cout << 1 << endl;
		cout << cand << endl;
	}
	else
		cout << -1 << endl;
	return 0;
}


#include <iostream>

using namespace std;

int main()
{
	long long n, a, b;
	cin >> n >> a >> b;

	long long s1 = n - 1, s2 = n - 1;
	long long cand = b - (n - 1);
	if (cand > 0 && cand + s1 <= b && cand * cand + s2 >= a)
	{
		for (int i = 0; i < n - 1; i++)
			cout << 1 << endl;
		cout << cand << endl;
	}
	else
		cout << -1 << endl;
	return 0;
}


#include <iostream>

using namespace std;

int main()
{
	long long n, a, b;
	cin >> n >> a >> b;

	long long s1 = n - 1, s2 = n - 1;
	long long cand = b - (n - 1);
	if (cand + s1 <= b && cand * cand + s2 >= a)
	{
		for (int i = 0; i < n - 1; i++)
			cout << 1 << endl;
		cout << cand << endl;
	}
	else
		cout << -1 << endl;
	return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <math.h>
#include <vector>
#include <string.h>

using namespace std;

int main()
{
	int n;
	long long x,y;
	cin >> n >> x >> y;
	long long last=y-(n-1);
	if (last<=0)
		printf("-1\n");
	else
	if ((last*last+n-1)>=x)
	{
		for (int i=0;i<n-1;i++)
			printf("1\n");
		cout << last << endl;
	}
	else
		printf("-1\n");
	return 0;
}


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <math.h>
#include <vector>
#include <string.h>

using namespace std;

int main()
{
	int n;
	long long x,y;
	cin >> n >> x >> y;
	long long last=y-(n-1);
	if (last<=0)
		printf("-1\n");
	else
	if ((y*y+n-1)>=x)
	{
		for (int i=0;i<n-1;i++)
			printf("1\n");
		cout << last << endl;
	}
	else
		printf("-1");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>
#include <sstream>
#include <utility>
#include <string>
#include <vector>
#include <list>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <bitset>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cmath>
#include <ctime>
#include <assert.h>
#include <string.h>
#include <limits>
using namespace std;

#define INF 100000000
#define PI 3.1415926535897932384626433832795
#define PI_HALF 1.570796327
#define EPS 1e-9

typedef unsigned int UI;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair< int, int > PII;
typedef pair< LL, LL > PLL;
typedef vector< int > VI;
typedef vector< LL > VLL;
typedef vector< string > VS;
typedef vector< PII > VPII;
typedef vector< PLL > VPLL;

#define X first
#define Y second
#define PB push_back
#define MP make_pair
#define SZ(c) (int)(c).size()
#define ALL(c) (c).begin(), (c).end()
#define SORT(c) sort( ALL( c ) )
#define SORT_(c,f) sort( ALL( c ), f )
#define FILL(x,v) memset( x, v, sizeof( x ) );

#define REP(i,n) for ( int i = 0, max_ = (n); i < max_; ++i )
#define REPD(i,n) for ( int i = (n) - 1; i >= 0; --i )
#define FOR(i,a,b) for ( int i = (a), max_ = (b); i < max_; ++i )
#define FORD(i,a,b) for ( int i = (a) - 1, min_ = (b); i >= min_; --i )

int ToInt ( string & s, int len ) { int r = 0; REP(i,len) { r *= 10; r += s[i] - '0'; } return r; }
int GCD ( int a, int b ) { return b != 0 ? GCD(b, a % b) : a; }
int LCM ( int a, int b ) { return a*(b / GCD(a,b)); }
LL Pow ( LL n, LL e ) { if ( e == 0 ) return 1; if ( e == 1 ) return n; else if ( e & 1 ) { LL t = Pow(n,e/2); return n*t*t; } else { LL t = Pow(n,e/2); return t*t; } }

int main ()
{
    LL N, X, Y;
    scanf( "%I64d %I64d %I64d", &N, &X, &Y );

    LL n = max( 1LL, (LL)floor( sqrt( (double)X ) ) - 100LL );
    while ( n*n + N-1 < X ) ++n;

    if ( n + N-1 > Y ) printf( "-1\n" );
    else
    {
        printf( "%d", n );
        REP(i,N-1) printf( " %d", 1 );
    }

    return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>
#include <sstream>
#include <utility>
#include <string>
#include <vector>
#include <list>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <bitset>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cmath>
#include <ctime>
#include <assert.h>
#include <string.h>
#include <limits>
using namespace std;

#define INF 100000000
#define PI 3.1415926535897932384626433832795
#define PI_HALF 1.570796327
#define EPS 1e-9

typedef unsigned int UI;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair< int, int > PII;
typedef pair< LL, LL > PLL;
typedef vector< int > VI;
typedef vector< LL > VLL;
typedef vector< string > VS;
typedef vector< PII > VPII;
typedef vector< PLL > VPLL;

#define X first
#define Y second
#define PB push_back
#define MP make_pair
#define SZ(c) (int)(c).size()
#define ALL(c) (c).begin(), (c).end()
#define SORT(c) sort( ALL( c ) )
#define SORT_(c,f) sort( ALL( c ), f )
#define FILL(x,v) memset( x, v, sizeof( x ) );

#define REP(i,n) for ( int i = 0, max_ = (n); i < max_; ++i )
#define REPD(i,n) for ( int i = (n) - 1; i >= 0; --i )
#define FOR(i,a,b) for ( int i = (a), max_ = (b); i < max_; ++i )
#define FORD(i,a,b) for ( int i = (a) - 1, min_ = (b); i >= min_; --i )

int ToInt ( string & s, int len ) { int r = 0; REP(i,len) { r *= 10; r += s[i] - '0'; } return r; }
int GCD ( int a, int b ) { return b != 0 ? GCD(b, a % b) : a; }
int LCM ( int a, int b ) { return a*(b / GCD(a,b)); }
LL Pow ( LL n, LL e ) { if ( e == 0 ) return 1; if ( e == 1 ) return n; else if ( e & 1 ) { LL t = Pow(n,e/2); return n*t*t; } else { LL t = Pow(n,e/2); return t*t; } }

int main ()
{
    LL N, X, Y;
    scanf( "%I64d %I64d %I64d", &N, &X, &Y );

    LL n = max( 0LL, (LL)floor( sqrt( (double)X ) ) - 100LL );
    while ( n*n + N-1 < X ) ++n;

    if ( n + N-1 > Y ) printf( "-1\n" );
    else
    {
        printf( "%d", n );
        REP(i,N-1) printf( " %d", 1 );
    }

    return 0;
}


#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cassert>
#include <cmath>
#include <cctype>

#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <deque>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
#include <list>
#include <iterator>
#include <functional>

using namespace std;

typedef long long int64;
typedef unsigned long long uint64;

int64 labs(int64 a)
{
		return a<0 ? (-a) : a;
}
int64 max(int64 a, int64 b)
{
		return a>b?a:b;
}
int64 min(int64 a, int64 b)
{
		return a<b?a:b;
}

#define mp make_pair
#define pb push_back
#define sqr(x) ((x)*(x))
#define forn(i, n) for(int (i)=0; (i)<(n); (i)++)
#define forr(i, n) for(int (i)=(n)-1; (i)>=0; (i)--)
#define forit(i,c) for((i)=(c).begin(); (i)!=(c).end(); (i)++)
#define all(x) (x).begin(), (x).end()
#define zero(a) memset((a), 0, sizeof(a))
#define sqr(x) ((x)*(x))

typedef vector<int> vint;
typedef vector<bool> vbool;
typedef vector<int64> vint64;
typedef pair<int, int> pii;

vint64 v;

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

	int64 n, x, y;
	cin >> n >> x >> y;
	v.resize(n);
	forn(i, n)
	{
		if (i == 0)
		{
			v[i] = y-(n-1);
		}
		else
		{
			v[i] = 1;
		}
	}

	int64 s = 0;
	forn(i, n)
	{
		s += sqr(v[i]);
	}
	if (s < x || y < n)
	{
		cout << -1;
		return 0;
	}
	forn(i, n)
	{
		cout << v[i] << endl;
	}

	return 0;
}

/*

*/


#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cassert>
#include <cmath>
#include <cctype>

#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <deque>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
#include <list>
#include <iterator>
#include <functional>

using namespace std;

typedef long long int64;
typedef unsigned long long uint64;

int64 labs(int64 a)
{
		return a<0 ? (-a) : a;
}
int64 max(int64 a, int64 b)
{
		return a>b?a:b;
}
int64 min(int64 a, int64 b)
{
		return a<b?a:b;
}

#define mp make_pair
#define pb push_back
#define sqr(x) ((x)*(x))
#define forn(i, n) for(int (i)=0; (i)<(n); (i)++)
#define forr(i, n) for(int (i)=(n)-1; (i)>=0; (i)--)
#define forit(i,c) for((i)=(c).begin(); (i)!=(c).end(); (i)++)
#define all(x) (x).begin(), (x).end()
#define zero(a) memset((a), 0, sizeof(a))
#define sqr(x) ((x)*(x))

typedef vector<int> vint;
typedef vector<bool> vbool;
typedef vector<int64> vint64;
typedef pair<int, int> pii;

vint64 v;

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

	int64 n, x, y;
	cin >> n >> x >> y;
	v.resize(n);
	forn(i, n)
	{
		if (i == 0)
		{
			v[i] = y-(n-1);
		}
		else
		{
			v[i] = 1;
		}
	}

	int64 s = 0;
	forn(i, n)
	{
		s += sqr(v[i]);
	}
	if (s < x)
	{
		cout << -1;
		return 0;
	}
	forn(i, n)
	{
		cout << v[i] << endl;
	}

	return 0;
}

/*

*/


#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cassert>
#include <cmath>
#include <cctype>

#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <deque>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
#include <list>
#include <iterator>
#include <functional>

using namespace std;

typedef long long int64;
int64 labs(int64 a){ return a<0 ? (-a) : a; }
int64 max(int64 a, int64 b){ return a>b ? a : b; }
int64 min(int64 a, int64 b){ return a<b ? a : b; }

#define mp make_pair
#define pb push_back
#define sqr(x) ((x)*(x))
#define forn(i, n) for(int (i)=0; (i)<(n); (i)++)
#define forr(i, n) for(int (i)=(n)-1; (i)>=0; (i)--)
#define forit(i,c) for((i)=(c).begin(); (i)!=(c).end(); (i)++)
#define all(x) (x).begin(), (x).end()
#define zero(a) memset((a), 0, sizeof(a))

typedef vector<int> vint;
typedef vector<int64> vint64;
typedef pair<int64, int64> pii;
/*
//�� n ������������
void GetPrimes(int n, vector<bool> & prime)
{
	n++;
	prime.assign(n, true);
	if (n >= 0) prime[0] = false;
	if (n >= 1) prime[1] = false;
	forn(i, n)
	{
		if (prime[i])
		{
			for(int j = 2; j*i < n; j++)
			{
				prime[i*j] = false;
			}
		}
	}
}

//�� n ������������
void GetPrimes(int n, vint & v)
{
	vector<bool> vb;
	GetPrimes(n, vb);
	vint res;

	v.clear();
	forn(i, vb.size())
	{
		if (vb[i])
			v.push_back(i);
	}
}

const int MAXN = 100002;
vint p;
int main()
{
	GetPrimes(MAXN, p);

	return 0;
}
*/

vint64 v;
int main()
{
	int64 n, x, y;
	cin >> n >> x >> y;
	v.resize(n);
	forn(i, n)
	{
		int64 nn;
		if (y%n > i)
		{
			nn = y/n + 1;
		}
		else
		{
			nn = y/n;
		}
		if (nn == 0)
		{
			cout << -1;
			return 0;
		}
		v[i] = nn;
	}

	int64 nx = 0, ny = 0;

	forn(i, n)
	{
		nx += sqr(v[i]);
		ny += v[i];
	}

	if (nx < x || ny > y)
	{
		cout << -1;
		return 0;
	}

	forn(i, n)
	{
		cout << v[i] << endl;
	}

	return 0;
}

/*

*/


#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cassert>
#include <cmath>
#include <cctype>

#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <deque>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
#include <list>
#include <iterator>
#include <functional>

using namespace std;

typedef long long int64;
int64 labs(int64 a){ return a<0 ? (-a) : a; }
int64 max(int64 a, int64 b){ return a>b ? a : b; }
int64 min(int64 a, int64 b){ return a<b ? a : b; }

#define mp make_pair
#define pb push_back
#define sqr(x) ((x)*(x))
#define forn(i, n) for(int (i)=0; (i)<(n); (i)++)
#define forr(i, n) for(int (i)=(n)-1; (i)>=0; (i)--)
#define forit(i,c) for((i)=(c).begin(); (i)!=(c).end(); (i)++)
#define all(x) (x).begin(), (x).end()
#define zero(a) memset((a), 0, sizeof(a))

typedef vector<int> vint;
typedef vector<int64> vint64;
typedef pair<int64, int64> pii;
vint v;
int main()
{
	int64 n, x, y;
	cin >> n >> x >> y;
	v.resize(n);
	forn(i, n)
	{
		int64 nn;
		if (y%n > i)
		{
			nn = y/n + 1;
		}
		else
		{
			nn = y/n;
		}
		if (nn == 0)
		{
			cout << -1;
			return 0;
		}
		v[i] = nn;
	}

	int64 nx = 0, ny = 0;

	forn(i, n)
	{
		nx += sqr(v[i]);
		ny += v[i];
	}

	if (nx < x || ny > y)
	{
		cout << -1;
		return 0;
	}

	forn(i, n)
	{
		cout << v[i] << endl;
	}

	return 0;
}

/*

*/


// ЁБАНЫЙ СТЫД

#define _USE_MATH_DEFINES

#include <cmath>
#include <cstdio>

#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>

using namespace std;

#define mp make_pair
#define pb push_back

#define DEBUG(x) cout << #x << ": " << (x) << endl;

int main() {
#ifndef ONLINE_JUDGE
    freopen( "input.txt", "rt", stdin );
    //freopen("output.txt", "wt", stdout);
#endif

    long long n, x, y;
    scanf("%I64d %I64d %I64d", &n, &x, &y);

    long long tmp = y - (n-1);

    if ( (tmp > 0) && (tmp*tmp+(n-1) >= x) ) {
        for (int i = 0; i < n-1; i++)
            printf("1\n");

        printf("%I64d", tmp);
    }
    else
        printf("-1");

exit:
    return ( 0 );
}


#include <cstdio>

int main()
{
	long long n, x, y;
	scanf("%lld%lld%lld", &n, &x, &y);
	if (y < n || (n - 1 + (y - n + 1)*(y - n + 1)) < x)
		puts("-1");
	else
	{
		for (int i = 0; i < n-1; i++)
			puts("1");
		printf("%lld\n", y - n + 1);
	}
	return 0;
}


#include <cstdio>

int main()
{
	long long n, x, y;
	scanf("%lld%lld%lld", &n, &x, &y);
	if (y < n || (n - 1 + (y - n + 1)*(y - n + 1)) < x)
		puts("-1");
	else
	{
		for (int i = 0; i < n; i++)
			puts("1");
		printf("%lld\n", y - n + 1);
	}
	return 0;
}


#include <map>
#include <string>
#include <vector>
#include <math.h>
#include <set>
#include <algorithm>
#include <list>
#include <iostream>
#define ll long long
using namespace std;
int n,x,y;
int a[100010];
void findit()
{
    for(int j=0;j<n-1;j++)
        a[j]=1;
    a[n-1]=y-(n-1);
    if(a[n-1]<=0)
    {
        printf("-1\n");
        return;
    }
    if((ll)a[n-1]*(ll)a[n-1]+n-1<x)
    {
        printf("-1\n");
        return;
    }
    for(int j=0;j<n;j++)
        printf("%d\n",a[j]);
    return;
}

int main()
{

    cin>>n>>x>>y;

    findit();

}


#include <map>
#include <string>
#include <vector>
#include <math.h>
#include <set>
#include <algorithm>
#include <list>
#include <iostream>
#define ll long long
using namespace std;
int n;
ll x,y;
ll a[100010];
void findit()
{
    for(int j=0;j<n-1;j++)
        a[j]=1;
    a[n-1]=y-(n-1);
    if(a[n-1]<=0)
    {
        printf("-1\n");
        return;
    }
    if((ll)a[n-1]*(ll)a[n-1]+n-1<x)
    {
        printf("-1\n");
        return;
    }
    for(int j=0;j<n;j++)
        printf("%lld\n",a[j]);
    return;
}

int main()
{

    cin>>n>>x>>y;

    findit();

}


#pragma comment(linker, "/STACK:60000000")
#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <ctime>
#include <cstring>
#include <cassert>
#include <sstream>
#include <iomanip>
#include <complex>
#include <queue>
#include <functional>

using namespace std;

#define forn(i, n) for(int i = 0; i < (int)(n); i++)
#define ford(i, n) for(int i = (int)(n) - 1; i >= 0; i--)
#define pb push_back
#define mp make_pair
#define fs first
#define sc second
#define last(a) int(a.size() - 1)
#define all(a) a.begin(), a.end()
#define seta(a,x) memset (a, x, sizeof (a))
#define I (int)
#define y1 botva

typedef long long int64;
typedef pair <int, int> pii;
typedef long double ldb;

const long double eps = 1e-9;
const int inf = (1 << 30) - 1;
const int64 inf64 = ((int64)1 << 62) - 1;
const long double pi = 3.1415926535897932384626433832795;

template <class T> T sqr (T x) {return x * x;}

int main ()
{
//	freopen ("input.txt", "r", stdin);
//	freopen ("output.txt", "w", stdout);
	int64 n, x, y;
	cin >> n >> x >> y;
	if (y < n) {
		cout << -1 << endl;
		return 0;
	}
	y -= n;
	y ++;
	x -= n;
	x ++;
	if (y * y < x) {
		cout << -1 << endl;
		return 0;
	}
	forn (i, n-1)
		printf ("1\n");
	cout << y << endl;

	return 0;
}


#pragma comment(linker, "/STACK:60000000")
#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <ctime>
#include <cstring>
#include <cassert>
#include <sstream>
#include <iomanip>
#include <complex>
#include <queue>
#include <functional>

using namespace std;

#define forn(i, n) for(int i = 0; i < (int)(n); i++)
#define ford(i, n) for(int i = (int)(n) - 1; i >= 0; i--)
#define pb push_back
#define mp make_pair
#define fs first
#define sc second
#define last(a) int(a.size() - 1)
#define all(a) a.begin(), a.end()
#define seta(a,x) memset (a, x, sizeof (a))
#define I (int)
#define y1 botva

typedef long long int64;
typedef pair <int, int> pii;
typedef long double ldb;

const long double eps = 1e-9;
const int inf = (1 << 30) - 1;
const int64 inf64 = ((int64)1 << 62) - 1;
const long double pi = 3.1415926535897932384626433832795;

template <class T> T sqr (T x) {return x * x;}

int main ()
{
	freopen ("input.txt", "r", stdin);
//	freopen ("output.txt", "w", stdout);
	int64 n, x, y;
	cin >> n >> x >> y;
	if (y < n) {
		cout << -1 << endl;
		return 0;
	}
	y -= n;
	y ++;
	x -= n;
	x ++;
	if (y * y < x) {
		cout << -1 << endl;
		return 0;
	}
	forn (i, n-1)
		printf ("1\n");
	cout << y << endl;

	return 0;
}


#include <iostream>

int main()
{
	int n;
	__int64 x,y;
	scanf("%d %I64d %I64d",&n,&x,&y);
	__int64 mod = y%n;
	__int64 res = y/n;
	__int64 sum = (n-mod)*res*res + mod*(res+1)*(res+1);
	if(sum>=x)
	{
		for(int i=0;i<n-mod;i++)
			printf("%I64d\n",res);
		for(int i=0;i<mod;i++)
			printf("%I64d\n",res+1);
	}else{
		printf("-1\n");
	}
	return 0;
}


#include <iostream>
using namespace std;

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


#define _CRT_SECURE_NO_DEPRECATE

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <limits.h>
#include <list>
#include <map>
#include <set>
#include <string>
#include <time.h>
#include <vector>

#define nextLine() {for(int c=getchar(); c!='\n' && c!=EOF; c=getchar());}
#define sqr(a) ((a)*(a))
#define has(mask,i) (((mask) & (1<<(i))) == 0 ? false : true)
#define eprintf(...) fprintf(stderr, __VA_ARGS__)

#define TASK "file"

using namespace std;

#define pii pair<int,int>
#define mp(x, y) make_pair(x, y)
#define pb(_o_) push_back(_o_)

typedef long long LL;
typedef unsigned long long ULL;
typedef long double ldb;

typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<int> vb;
typedef vector<vi> vvb;
typedef list<int> li;
typedef multiset<int>::iterator siit;

const int inf = (1 << 30) - 1;
const ldb eps = 1e-9;
const ldb pi = fabs(atan2(0.0, -1.0));

int *ass;
void ML()
{
	for (;;)
	{
		ass = new int[2500000];
		for (int i = 0; i < 2500000; i++)
			ass[i] = rand();
	}
}

ULL n, x, y;

void LoAd()
{
	cin >> n >> x >> y;
}

void SoLvE()
{
	if (n > y)
	{
		puts("-1");
		return;
	}
	ULL tsum = 0;
	ULL a1 = y - n + 1;
	tsum += sqr(a1);
	tsum += (n - 1);
	if (tsum < x)
	{
		printf("-1");
	}
	else
	{
		cout << a1 << endl;
		for (int i = 1; i < n; i++)
			puts("1");
	}

}

int main()
{
	srand( (int) time(NULL));
#ifndef ONLINE_JUDGE
    freopen(TASK".in","r",stdin);   freopen(TASK".out","w",stdout);
#endif
	LoAd();
	SoLvE();
	return 0;
}


#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
	long long n, a, b;
	cin >> n >> a >> b;
	long long sum = (b - n + 1) * (b - n + 1) + (n - 1);
	if (b - n + 1 < 0) sum = -1;
	if (sum < a) cout << -1 << endl;
	else
	{
		for (int i = 1; i < n; i++)
			cout << 1 << endl;
		cout << b - n + 1;
	}
	return 0;
}


    #include <iostream>
    #include <cstdio>

    using namespace std;

    int main()
    {
            //freopen("input.txt", "r", stdin);
            //freopen("output.txt", "w", stdout);
            long long n, a, b;
            cin >> n >> a >> b;
            long long sum = (b - n + 1) * (b - n + 1) + (n - 1);
            if (b - n + 1 <= 0) sum = -1;
            if (sum < a) cout << -1 << endl;
            else
            {
                    for (int i = 1; i < n; i++)
                            cout << 1 << endl;
                    cout << b - n + 1;
            }
            return 0;
    }


#pragma comment(linker,"/STACK:256000000")
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <set>
#include <map>
#include <algorithm>
#include <queue>
using namespace std;
int main(){
	//freopen("1.txt","r",stdin);

	__int64 x,y,n,yn,xn;
	cin>>n>>x>>y;
	yn=y-n+1;
	xn=x-n+1;
	if(yn<0 || yn*yn<xn) cout<<-1<<endl;
	else{
		for(int i=0;i<n-1;i++)
			cout<<1<<" ";
		cout<<yn<<endl;
	}

}


#pragma comment(linker,"/STACK:256000000")
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <set>
#include <map>
#include <algorithm>
#include <queue>
using namespace std;
int main(){
	//freopen("1.txt","r",stdin);

	__int64 x,y,n,yn,xn;
	cin>>n>>x>>y;
	yn=y-n+1;
	xn=x-n+1;
	if(yn<=0 || yn*yn<xn) cout<<-1<<endl;
	else{
		for(int i=0;i<n-1;i++)
			cout<<1<<" ";
		cout<<yn<<endl;
	}

}


#include<iostream>

using namespace std;

int main(){
	long long n,x,y,s,m;
	cin>>n>>x>>y;
	s=y-n+1;
	if (s>0){
		if ((s*s+n-1)>=x){
			cout<<s<<endl;
			for(int i=0;i<n-1;i++){
				cout<<1<<endl;
			}
		}else cout<<-1;
	}else{
		cout<<-1;
	}
}


#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <set>
#include <map>
#include <vector>
#include <list>
#include <algorithm>
#include <cmath>

using namespace std;

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


#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <set>
#include <map>
#include <vector>
#include <list>
#include <algorithm>
#include <cmath>

using namespace std;

int main()
{
    __int64 n, x, y;
    cin >> n >> x >> y;
    __int64 xmax = (y-(n-1))*(y-(n-1)) + n - 1;
    if ( xmax >= x && y-n+1 > 0 ) {
        for ( int i = 0; i < n-1; i++ ) {
            cout << 1 << endl;
        }
        cout << y-n+1 << endl;
    } else {
        cout << -1 << endl;
    }
    return 0;
}