#include <bits/stdc++.h>
#include"books.h"
using namespace std;
void solve(int N, int K, long long A, int S) {
int fi=skim(1);
int bol=skim(N);
if(fi>2*A){
//cout<<"II"<<endl;
impossible();
return;
}
int l=1,r=N;
int ans=-1;
while(l<=r){
int m=(l+r)/2;
int bati=skim(m);
if(bati>=A){
ans=m;
r=m-1;
}
else{
l=m+1;
}
}
if(ans==-1){
ans=N;
int x[N+1];
fill(x,x+N+1,0);
x[0]=fi;
x[N]=bol;
for(int i=2; i<=K; i++){
int a=skim(i);
x[i]=a;
}
for(int i=ans-1; i>=ans-K; i--){
int a=skim(i);
x[i]=a;
}
int sum=0;
for(int i=1; i<=K; i++){
sum+=x[i];
}
if(sum>=A && sum<=2*A){
vector<int>anss;
for(int i=1; i<=K; i++){
anss.push_back(i);
}
answer(anss);
//cout<<"1"<<endl;
return;
}
if(sum>2*A){
impossible();
return;
}
vector<int>g;
for(int i=1; i<=K; i++){
sum+=abs(x[i]-x[ans-K-i+1]);
g.push_back(ans-K-i+1);
if(sum>=A && sum<=2*A){
vector<int>ja=g;
for(int j=i+1; j<=K; j++){
ja.push_back(j);
}
answer(ja);
//cout<<2<<endl;
return;
}
//cout<<sum<<endl;
}
impossible();
//cout<<"$"<<endl;
return;
}
else{
int x[N+1];
fill(x,x+N+1,0);
x[0]=fi;
x[N]=bol;
for(int i=2; i<=K; i++){
int a=skim(i);
x[i]=a;
}
for(int i=ans-1; i>=ans-K; i--){
int a=skim(i);
x[i]=a;
}
int sum=0;
for(int i=1; i<=K; i++){
sum+=x[i];
}
if(sum>=A && sum<=2*A){
vector<int>anss;
for(int i=1; i<=K; i++){
anss.push_back(i);
}
answer(anss);
//cout<<3<<endl;
return;
}
if(sum>2*A){
impossible();
return;
}
vector<int>g;
for(int i=1; i<=K; i++){
sum+=abs(x[i]-x[ans-K-i+1]);
g.push_back(ans-K-i+1);
if(sum>=A && sum<=2*A){
vector<int>ja=g;
for(int j=i+1; j<=K; j++){
ja.push_back(j);
}
answer(ja);
//cout<<4<<endl;
return;
}
}
int gag=0;
vector<int>o;
x[ans]=skim(ans);
gag+=x[ans];
//cout<<ans<<endl;
//cout<<x[ans]<<" ";
o.push_back(ans);
for(int i=1; i<=K-1; i++){
gag+=x[i];
o.push_back(i);
}
if(gag>=A && gag<=2*A){
answer(o);
cout<<4<<endl;
return;
}
//cout<<gag<<endl;
impossible();
//cout<<"?"<<endl;
return;
}
}