package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

var N, K, S int

var A []int

var ans []string

const mvalue int = 1000000000 - 1

func main() {
	N = readint() // 数列の長さ
	K = readint() // 条件を満たす整数の組の個数
	S = readint() // Al + Al+1 + ... + Ar を満たすS

	// Sを満たすKが0の場合
	if K == 0 {
		anskzero()
		return
	}

	// K が 1以上で

	// 数列の長さNが1の場合
	if N == 1 {
		fmt.Println(S) // Sその値を持つ1要素のみの配列が答えである
		return
	}

	// N が 1より大きければ
	initans()
	for i := 0; i < K; i++ {
		A[i] = S
	}

	// 回答
	putans()
}

func anskzero() {
	putans()
}

func initans() {
	A = make([]int, N)
	n := 1
	if S <= N {
		n = mvalue
	}
	for i := 0; i < N; i++ {
		A[i] = n
	}
}

func putans() {
	ans = make([]string, N)
	for i := 0; i < N; i++ {
		ans[i] = strconv.Itoa(A[i])
	}
	fmt.Println(strings.Join(ans, " "))
}

const (
	iobufsize = 1 * 1024 * 1024 // 1 MB
)

var stdinsc = func() *bufio.Scanner {
	sc := bufio.NewScanner(os.Stdin)
	sc.Buffer(make([]byte, iobufsize), iobufsize)
	sc.Split(bufio.ScanWords)
	return sc
}()

func readint() int {
	stdinsc.Scan()
	v, err := strconv.Atoi(stdinsc.Text())
	if err != nil {
		panic(err)
	}
	return v
}

func readstr() string {
	stdinsc.Scan()
	return stdinsc.Text()
}

func pow(x, y int) int {
	if y < 1 {
		return 1
	}
	return x * pow(x, y-1)
}

func min(x, y int) int {
	if x < y {
		return x
	}
	return y
}

func max(x, y int) int {
	if x > y {
		return x
	}
	return y
}
