#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int main() { cin.tie(0); ios::sync_with_stdio(false); int N, D, K; cin >> N >> D >> K; // dp[i][j] := i個選んだとき合計がj円 // dp[i+1][j] := dp[i][j-n] vector dp[12][1010]; for (int i = 0; i < 12; i++) { for (int j = 0; j < 1010; j++) { dp[i][j] = {}; } } dp[0][0] = {0}; for (int n = 1; n <= N; n++) { for (int i = 0; i < K; i++) { for (int j = 0; j <= D; j++) { if (j - n >= 0 && dp[i][j - n].size() != 0 && (find(dp[i][j - n].begin(), dp[i][j - n].end(), n) == dp[i][j - n].end())) { if (dp[i + 1][j].size() == 0) { copy(dp[i][j - n].begin(), dp[i][j - n].end(), back_inserter(dp[i + 1][j])); dp[i + 1][j].push_back(n); } else { dp[i + 1][j] = {}; copy(dp[i][j - n].begin(), dp[i][j - n].end(), back_inserter(dp[i + 1][j])); dp[i + 1][j].push_back(n); } } } } } if (dp[K][D].size() != 0) { for (int i = 1; i <= K; i++) { if (i > 1) cout << " "; cout << dp[K][D][i]; } cout << endl; } else { cout << -1 << endl; } return 0; }