#include using namespace std; #define rep(i, n) for (int i = 0; i < (n); ++i) using ll = long long; using ull = unsigned long long; int main() { cin.tie(nullptr)->sync_with_stdio(false); int n, d, k; cin >> n >> d >> k; constexpr int INF = 1e9; vector dp(n + 1, vector(d + 1, vector(k + 1, INF))); dp[0][0][0] = 0; for (int p = 1; p <= n; ++p) { for (int i = d; i >= 0; --i) { for (int j = k; j >= 0; --j) { if (dp[p - 1][i][j] == INF) continue; dp[p][i][j] = min(dp[p][i][j], i); if (i + p <= d && j < k) dp[p][i + p][j + 1] = min(dp[p][i + p][j + 1], i); } } // cerr << format("{}: {}\n", p, dp[p]); } if (dp[n][d][k] == INF) { cout << -1 << '\n'; } else { vector ans; pair cur = { d, k }; for (int x = n; x >= 0; --x) { // cerr << cur.first << ' ' << cur.second << ' ' << x << ' ' << dp[x][cur.first][cur.second] << '\n'; if (cur.first != dp[x][cur.first][cur.second]) { auto [y, z] = cur; ans.push_back(y - dp[x][y][z]); cur = { dp[x][y][z], z - 1 }; } } reverse(ans.begin(), ans.end()); assert(is_sorted(ans.begin(), ans.end())); rep(i, k) cout << ans[i] << ' '; cout << '\n'; } return 0; }