#include <bits/stdc++.h>
#include "books.h"
using namespace std;
void solve(int n, int k, long long a, int Q) {
int l = 1, r = n;
vector<int> ans;
int es = n+1;
while(l<=r){
int m = (l+r)/2;
long long ok = skim(m);
if(ok>a) {r = m-1; es = m;}
else if(ok<a) {l = m+1;}
else {
es= m;
break;
}
}
//cout << es <<endl;
vector<pair<long long,int>> v;
long long s = 0;
for(int i = 1; i<= k; i++) {
long long x = skim(i);
s+=x;
v.push_back({x, i});
}
if(s>2*a) {impossible(); return;}
int q = es-k;
q = max(1, q);
if(es-k<=k) q = k+1;
for(int i = q; i< es; i++){
long long x = skim(i);
v.push_back({x, i});
}
long long sum1 = s - v[k-1].first;
if(es!=n+1) sum1+=skim(es);
if(sum1>=a&&sum1<=2*a&&es!=n+1){
for(int i = 1; i< k; i++) ans.push_back(i);
ans.push_back(es);
answer(ans);
return;
}
//cout << s << endl;
int m = (int)v.size();
r = k-1, l = 0;
while(r<m-1){
if(s>=a&&s<=2*a){
for(int i = l; i<=r; i++) ans.push_back(v[i].second);
answer(ans); return;
}
s-=v[l].first;
r++;
l++;
s+=v[r].first;
}
if(s>=a&&s<=2*a){
for(int i = l; i<=r; i++) ans.push_back(v[i].second);
answer(ans); return;
}
impossible();
}