#define _USE_MATH_DEFINES #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; typedef pair i_i; typedef pair ll_i; typedef pair d_i; typedef pair ll_ll; typedef pair d_d; struct edge { int u, v; ll w; }; ll MOD = 1000000007; ll _MOD = 1000000009; double EPS = 1e-10; int INF = INT_MAX / 2; bool check(int l, int r, int D, int K) { if (r - l < K) return false; int mini = 0, maxi = 0; for (int i = l; i < min(r, l + K); i++) mini += i; for (int i = r - 1; i >= max(l, r - K); i--) maxi += i; if (D >= mini && D <= maxi) return true; return false; } int main() { int N, D, K; cin >> N >> D >> K; if (N < K) { cout << -1 << endl; return 0; } vector v; for (int i = 1; i <= N; i++) { if (check(i + 1, N + 1, D - i, K - 1)) { v.push_back(i); D -= i; K--; } } if (v.size() == 0) { cout << -1 << endl; return 0; } for (int k = 0; k < v.size(); k++) cout << v[k] << (k + 1 < v.size() ? ' ' : '\n'); }