#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; static const double EPS = 1e-8; static const double PI = 4.0 * atan(1.0); static const double PI2 = 8.0 * atan(1.0); #define REP(i,n) for(int i=0;i<(int)n;++i) #define ALL(c) (c).begin(),(c).end() #define CLEAR(v) memset(v,0,sizeof(v)) #define MP(a,b) make_pair((a),(b)) #define ABS(a) ((a)>0?(a):-(a)) #define FOR(i,s,n) for(int i=s;i<(int)n;++i) int N, D, K; vector res; int sum(int a, int b) { return b * (b + 1) / 2 - a * (a - 1) / 2; } bool solve(int d, int k, int i) { if (k == 0) return d == 0; if (d < sum(i + 1, i + k) || d > sum(N - k + 1, N)) return false; FOR(j, i, N) if (solve(d - j - 1, k - 1, j + 1)) { res.push_back(j + 1); return true; } return false; } int main(int argc, char **argv) { cin >> N >> D >> K; if (solve(D, K, 0)) { REP(i, K) { if (i != 0) cout << " "; cout << res[K - 1 - i]; } cout << endl; } else { cout << -1 << endl; } return 0; }