N, D, K = gets.split.map(&:to_i) dp = Array.new(N + 1){ Array.new(K + 1){ Array.new(D + 1, -1) } } dp[0][0][0] = 0 (1 .. N).each do |n| (1 .. K).each do |k| (1 .. D).each do |d| if d - n >= 0 && dp[n - 1][k - 1][d - n] >= 0 dp[n][k][d] = n else dp[n][k][d] = dp[n - 1][k][d] end end end end d = D i = dp[N][K][D] items = [] while i > 0 items << i d = d - i i = dp[i - 1][K - items.size][d] end puts items.empty? ? -1 : items.reverse.join(' ')