module main; // https://yukicoder.me/submissions/19312 より import std; bool check(int L, int N, int D, int K) { if (N - L + 1 < K) return false; int low = iota(L, L + K).sum, high = iota(N, N - K, -1).sum; return low <= D && high >= D; } void main() { // 入力 int N, D, K; readln.chomp.formattedRead("%d %d %d", N, D, K); // 答えの計算 if (!check(1, N, D, K)) { writeln(-1); return; } int[] ans; for (int i = 1; i <= N && K > 0; i++) { if (check(i + 1, N, D - i, K - 1)) { ans ~= i; D -= i; K--; } } // 答えの出力 writefln("%(%d %)", ans); }