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