#include using namespace std; vector answer; int n,d,k; int seek(int left,int need, int cost){ //cout << left << " " << need << " " << cost << endl; if(need == 1){ if( cost == left){ answer.push_back(left); return 1; } return 0; } if(n-left + 1 < need){ return 0; } if( cost > (n+(n-need+1))*need/2){ // cout << left <<" "<< need<< " " << cost << endl; // cout << n+(n-need+1)*need/2<< " "<< cost << endl; return 0; } for(int i = left+1;i <=n;i++){ if(seek(i,need-1,cost -left)){ answer.push_back(left); return 1; } } return 0; } int main(){ cin >> n >> d >> k; for(int i = 1;i<=n;i++){ if(seek(i,k,d)){ for(int j = k-1;j >= 0;j--){ cout << answer[j]; if( j != 0){ cout << " "; } } cout << endl; return 0; } } cout << -1 << endl; }