#include <bits/stdc++.h>
#include"books.h"
using namespace std;
void solve(int N, int K, long long A, int S){
int l=1, r=N;
int anss=-1;
int m;
int mm=-1;
while(l<=r){
m=(l+r)/2;
int num=skim(m);
if(num>A){
r=m-1;
anss=num;
mm=m;
}else{
l=m+1;
}
}
vector <pair<int, int> > vec(K+1, {0,-1});
int sum=0;
for(int i=1; i<=K; i++){
int x=skim(i);
vec[i].first=x;
vec[i].second=i;
sum+=x;
}
if(sum>2*A){
impossible();
return;
}
vector<int> abb;
if(sum>=A and sum<=2*A){
for(int i=1; i<=K; i++){
abb.push_back(vec[i].second);
}
answer(abb);
return;
}
int summ=sum-vec[K].first;
vector<int> as;
if(anss!=-1){
if(summ+anss>=A and summ+anss<=2*A){
for (int i=1; i<=K-1; i++){
as.push_back(i);
}
as.push_back(mm);
answer(as);
return;
}
}
vector<pair<int, int> > vecc(K+1, {0, -1});
if(anss==-1){
mm=N+1;
}
int idx=1;
for(int i=mm-1; i>=mm-K; i--){
int x=skim(i);
vecc[idx].first=x;
vecc[idx].second=i;
idx++;
}
vector<int> idxx;
for(int i=1; i<=K; i++){
sum+=vecc[i].first-vec[i].first;
vec[i].first=vecc[i].first;
vec[i].second=vecc[i].second;
if(sum>=A and sum<=2*A){
for(int i=1; i<=K; i++){
idxx.push_back(vec[i].second);
}
answer(idxx);
return;
}
}
impossible();
}