#include #include #include #include #include using namespace std; int main() { int n, d, k; cin >> n >> d >> k; if (n < k) { cout << -1 << endl; return 0; } vector bought; int d_rest = d; int k_rest = k; int partial_max = 0; int partial_min = 0; for (int i = 0; i < k - 1; i++) { partial_min += i + 1; partial_max += n - i; } for (int i = 1; i <= n; i++) { int tmp_rest = d_rest - i; // printf("%2d tmp_rest %2d, k_rest %d, partial %2d - %2d\n", i, tmp_rest, k_rest, partial_min, partial_max); if (tmp_rest < partial_min || partial_max < tmp_rest) { partial_min += k_rest - 1; continue; } // printf("push_back %d\n", i); bought.push_back(i); d_rest = tmp_rest; k_rest--; partial_min -= i; partial_max -= n - (k_rest - 1); } if (bought.size() != k) { cout << -1 << endl; } else { for (int i = 0; i < k; i++) { if (i != 0) { cout << " "; } cout << bought[i]; } cout << endl; } return 0; }