#include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define ll long long
#include "books.h"
using namespace std;
map <ll,ll> a;
void solve(int N, int K, long long A, int S) {
// TODO implement this function
ll k=K;
ll x=A;
a.clear();
ll l=1,r=N;
while (l<r){
ll mid=(l+r)/2;
ll y=skim(mid); a[mid]=y;
if (y<A) l=mid+1; else r=mid;
}
if (a[l]==0){
x=skim(l); a[l]=x; }
if (l==N && a[l]<A){
l=N+1;
}
// cout<<l<<endl;
vector <int> ans;
ans.clear();
ll sum=0;
ll b[2*k+5];
for (int i=1; i<=2*k; i++) b[i]=0;
sum=0;
for (int i=1; i<=k; i++){
if (a[i]==0) {
x=skim(i); a[i]=x;
}
sum+=a[i];
b[i]=i;
}//cout<<"a"<<endl;
if (sum>2*A){
impossible(); return;
}
else
if (sum>=A){
for (int i=1; i<=k; i++) ans.pb(i);
answer(ans); return;
}
if (l>k && l<=N){
if (a[l]==0){
x=skim(l); a[l]=x;
}
sum-=a[k]; sum+=a[l];
if (sum>=A && sum<=2*A){
ans.clear();
for (int i=1; i<k; i++) ans.pb(i);
ans.pb(l);
answer(ans); return ;
}
}
sum=0;
for (int i=1; i<=k; i++) sum+=a[i];
ll sz=k;
for (int i=max(k,l-k); i<l; i++){
if (i<=k) continue;
sz++; b[sz]=i; if (a[i]==0){
x=skim(i); a[i]=x;
}
}
ll ind=-1;
for (int i=k+1; i<=sz; i++){
sum-=a[b[i-k]]; sum+=a[b[i]];
if (sum>=A && sum<=2*A) {
ind=i-k+1; break;
}
}
//cout<<sum<<endl;
if (ind==-1){
impossible(); return ;
}
ans.clear();
for (int i=ind; i<ind+k; i++){
ans.pb(b[i]);
}
answer(ans); return ;
}
/*
15 3 42 8
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21*/
/*
15 3 42 8
1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351
*/
/*
15 3 30 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 100
*/