#include <bits/stdc++.h>
#include "books.h"
using namespace std;
typedef long long ll;
typedef pair<ll,int> pii;
typedef vector<int> vi;
const int MAXN = 1e5+5;
#define all(x) x.begin(), x.end()
#define sz(x) (int)x.size()
#define mk make_pair
#define pb push_back
#define fr first
#define sc second
int val[MAXN];
int query(int x) {
if(val[x] == 0) return val[x] = skim(x);
return val[x];
}
int search(int N, ll A) {
int l = 1, r = N+1;
while(l < r) {
int mid = (l+r)/2;
if(query(mid) >= A) r = mid;
else l = mid+1;
}
return l;
}
void solve(int N, int K, ll A, int S) {
vi v;
ll sum = 0;
for(int i = 1; i <= K; i++)
sum += query(i), v.pb(i);
if(sum > 2*A) impossible();
if(sum >= A) answer(v);
int m = search(N, A);
if(m != N+1 and sum - query(K) + query(m) <= 2*A) {
v.pop_back();
v.pb(m);
answer(v);
}
for(int i = max(K+1, m-K); i < m; i++) {
sum -= query(v[0]);
sum += query(i);
v.erase(v.begin());
v.pb(i);
if(A <= sum and sum <= 2*A) answer(v);
}
impossible();
}