def solve():
    import sys
    # 读取输入:兼容多空格/换行分隔的输入格式,拆分后转为列表
    input = sys.stdin.read().split()
    n = int(input[0])  # 目标构造数组的长度
    a = int(input[1])  # 核心约束参数1
    k = int(input[2])  # 核心约束参数2(需要满足范围限制)
    
    # 处理n=1的特殊边界情况
    if n == 1:
        # 数组长度为1时,仅当a等于k时合法,输出a;否则无解输出-1
        if a == k:
            print(a)
        else:
            print(-1)
        return
    
    # 计算k的合法取值范围:超出范围则无法构造数组,输出-1
    mini = (a + 1) // 2  # k的最小值(整数除法,对应C++的(a+1)/2截断规则)
    maxi = a - n // 2    # k的最大值(n//2是n除以2的整数部分)
    # 检查k是否在[mini, maxi]范围内,超出则输出-1
    if k > maxi or k < mini:
        print(-1)
        return
    
    # 初始化数组最后两个元素的初始值
    lf = 1  # 倒数第二个元素的初始值
    # 位运算n&1:判断n的奇偶性(奇数结果为1,偶数结果为0)
    # rt初始值:n为奇数时rt=0,n为偶数时rt=1
    rt = 1 - (n & 1)
    
    # 调整k和a的数值,适配后续计算规则
    k -= n // 2   # k减去n的半长(整数部分)
    a -= (n // 2) * 2  # a减去2倍的n半长(保证a为偶数/奇数适配)
    
    # 计算数组最后两个元素的最终值
    lf += a - k  # 倒数第二个元素的最终值
    rt += k      # 最后一个元素的最终值
    
    # 构造输出结果列表:避免多次print的IO开销,先收集再拼接
    output = []
    # 前n-2个元素固定为"1"(数组长度>2时生效,长度=2时无此部分)
    # range(2, n):遍历从2到n-1(左闭右开),共n-2个元素
    for i in range(2, n):
        output.append("1")
    # 添加最后两个元素(lf和rt)
    output.append(str(lf))
    output.append(str(rt))
    
    # 拼接所有元素为字符串,空格分隔输出
    print(' '.join(output))

# 程序入口:仅当脚本直接运行时执行solve函数
if __name__ == "__main__":
    solve()