#include #define mp make_pair #define mt make_tuple #define pb push_back #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair pii; typedef pair pll; const int INF=1<<29; const double EPS=1e-9; const int MOD = 100000007; const int dx[]={1,0,-1,0},dy[]={0,-1,0,1}; int N,D,K; bool dp[110][1010][11]; vector ans; void memo(int last, int sum, int cnt, vector &res){ if (dp[last][sum][cnt])return ; dp[last][sum][cnt] = true; if (ans.size() > 0)return ; if (cnt == K){ if (sum == D){ ans = res; return ; } return ; } for (int i = last; i <= N; i++){ if (i + sum > D)break; res.push_back(i); memo(i + 1, sum + i, cnt + 1, res); res.pop_back(); } } int main(){ cin >> N >> D >> K; vector res; memo(1, 0, 0, res); if (ans.empty())cout << "-1" << endl; else{ for (int i = 0; i < ans.size(); i++){ if (i != ans.size() - 1){ cout << ans[i] << " "; }else{ cout << ans[i] << endl; } } } }