#include #include using namespace std; int mySum(int m){ return (m)*(m+1)/2; } int main(){ int N, D, K; cin>> N>> D>> K; int mi=mySum(K); int ma=mySum(N)-mySum(N-K); if(!(mi<=D&&D<=ma)){ cout<< -1<< endl; return 0; } int s=0, k=0; vector ans; for(int n=1; n<=N; n++){ int maS=mySum(N)-mySum(N-K+(k+1));// (nを選ぶとして、)後ろから(K-(k+1)))個の和(大きい) if(n+s+maS>=D){// n+今まで+これからの最大>=D? ans.push_back(n); s+=n; k++; } if(k==K) break; } for(int i=0; i0){ cout<< " "; } cout<< ans[i]; } cout<< endl; return 0; }