#include <bits/stdc++.h>
#include "books.h"
#define int long long
using namespace std;
//
// --- Sample implementation for the task books ---
//
// To compile this program with the sample grader, place:
// books.h books.cpp grader.cpp
// in a single folder and run:
// g++ books.cpp grader.cpp
// in this folder.
//
int N;
map<int, int> vals;
int get (int x) {
if (x < 0) return 0;
if (x == N) return 1e18;
return vals[x] = (vals.count(x) ? vals[x] : skim(x + 1));
}
void solve(signed n, signed k, long long A, signed s) {
N = n;
int min_sum = 0;
for (int i = 0; i < k; i++) min_sum += get(i);
if (min_sum > 2 * A) {
impossible();
return;
}
int l = 0, r = n;
while (l < r) {
int m = (l + r) / 2;
if (get(m) >= A) r = m;
else l = m + 1;
}
if (min_sum - get(k - 1) + get(l) <= 2 * A) {
vector<signed> ans;
for (int i = 0; i < k - 1; i++) {
ans.push_back(i + 1);
}
ans.push_back(l + 1);
answer(ans);
return;
}
if (l == n) {
int max_sum = 0;
for (int i = l - 1; i >= l - k; i--) max_sum += get(i);
if (max_sum < A) {
impossible();
return;
}
}
int a = k - 1, b = l - 1;
while (true) {
min_sum += get(b);
min_sum -= get(a);
if (min_sum >= A) break;
a--;
b--;
}
vector<signed> ans;
for (int i = 0; i < a; i++) ans.push_back(i + 1);
for (int i = b; i < l; i++) ans.push_back(i + 1);
answer(ans);
}