#include <bits/stdc++.h>
using namespace std;
#define ll long long
#include"books.h"
#define pb push_back
void solve(int N, int K, long long A, int S){
long long fi=skim(1);
long long bol=skim(N);
if(fi>2*A){
impossible();
return;
}
long long l=1,r=N;
long long ans=-1;
long long gvanca[N+1];
ll x[N+1];
fill(x,x+N+1,0);
x[1]=fi;
x[N]=bol;
while(l<=r){
long long m=(l+r)/2;
long long bati;
if(x[m]==0){
bati=skim(m);
x[m]=bati;
}
else bati=x[m];
if(bati>=A){
ans=m;
r=m-1;
}
else{
l=m+1;
}
}
ll sum=0;
for(int i=1; i<=K; i++){
if(x[i]==0){
int a=skim(i);
x[i]=a;
}
sum+=x[i];
}
if(sum>2*A){
impossible();
return;
}
if(sum>=A && sum<=2*A){
vector<int>bati;
for(int i=1; i<=K; i++){
bati.pb(i);
}
answer(bati);
return;
}
ll sss=sum-x[K];
ll liam_with_blond_hair_was_better=0;
if(ans!=-1){
liam_with_blond_hair_was_better=ans;
sss+=x[ans];
vector<int>as;
if(sss>=A && sss<=2*A){
for(int i=1; i<=K-1; i++){
as.push_back(i);
}
as.push_back(ans);
answer(as);
return;
}
}
else{
liam_with_blond_hair_was_better=N+1;
}
ll rn=liam_with_blond_hair_was_better-1;
vector<int>liam;
for(int i=1; i<=K; i++){
liam.pb(i);
}
for(int i=0; i<K; i++){
ll to_remove=K-i;
ll to_add=rn-i;
if(to_add<=to_remove)break;
sum-=x[to_remove];
if(x[to_add]==0){
x[to_add]=skim(to_add);
}
sum+=x[to_add];
liam[to_remove-1]=to_add;
if(sum>=A && sum<=2*A) {
answer(liam);
return;
}
}
impossible();
}