#include <bits/stdc++.h>
#include "books.h"
using namespace std;
#pragma GCC optimize("O3")
#define ll long long
#define double double long
#define fori(i,j,k) for(ll i=j; i<=k;i++)
#define study ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define all(s) s.begin(),s.end()
#define ins insert
#define ss second
#define ff first
#ifndef DB
#define DB 0
#endif
#define debugl(l) if constexpr((l)<DB)
#define debug debugl(0)
const ll sz=1e4+10;
ll INF=1e9;
ll mod=1e9+7;
//
// --- Sample implementation for the task books ---
//
// To compile this program with the sample grader, place:
// books.h books_sample.cpp sample_grader.cpp
// in a single folder and run:
// g++ books_sample.cpp sample_grader.cpp
// in this folder.
//
void solve(int N, int K, long long A, int S) {
vector<ll>v(N+10,0);
ll l=1,r=N;
while(l<=r){
ll mid=(l+r)>>1;
if(v[mid]==0)
v[mid]=skim(mid);
if(v[mid]>A){
r=mid-1;
}
else{
l=mid+1;
}
}
r++;
set<ll>st;
fori(i,1,K){
st.ins(i);
}
fori(i,max(1LL,r-K+1),r)
st.ins(i);
vector<int>idk;
for(auto x: st){
if(v[x]==0)
v[x]=skim(x);
idk.pb(x);
}
vector<int>ans;
ll ah=idk.size();
fori(mask,0,(1<<(ah))-1){
ll sum=0;
vector<int>cur;
fori(j,0,ah-1){
if((1<<j)&mask){
sum+=v[idk[j]];
cur.pb(idk[j]);
}
}
if(cur.size()!=K)
continue;
if(sum>=A and sum<=(2*A)){
ans=cur;
break;
}
}
if(ans.size()==K)
answer(ans);
else
impossible();
}