class Array def sum self.size > 0 ? self.inject(&:+) : 0 end end N, D, K = gets.split.map(&:to_i) ns = *(1..N) a = ns.shift(K) b = [] # bになるべく大きい数値を詰めることで、aには小さい数値が残る。 while a.size > 0 && ns.size > 0 && a.sum + b.sum - a[-1] + ns[-1] < D do ns.unshift a.pop n = ns.pop b.unshift n end # 微妙に足りなければ、aの末尾をちょっと大きいものに取り換える。 idx = D - (a.sum + b.sum) - 1 if idx >= 0 && ns[idx] then b.unshift ns.delete_at(idx) a.pop end if a.size + b.size == K && a.sum + b.sum == D then puts a.concat(b).join(" ") else puts -1 end