#include<bits/stdc++.h>
#include "molecules.h"
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
std::vector<int> find_subset(int L, int U, std::vector<int> W) {
ll n = W.size(), l = L, u = U;
vector<pll> w(n);
for(ll i = 0; i < n; i++) w[i] = {W[i], i};
sort(w.begin(), w.end());
ll lo = 1, hi = n+1;
vector<int> ans;
while(lo < hi){
ll k = (lo + hi) / 2, s = 0;
for(ll i = 0; i < k; i++) s += w[i].first;
if(s > u) {hi = k; continue;}
if(s >= l) {
for(ll j = 0; j < k; j++) ans.push_back(w[j].second);
break;
}
for(ll i = k; i < n; i++){
s -= w[i-k].first; s += w[i].first;
if(s >= l){
for(ll j = i-k+1; j <= i; j++) ans.push_back(w[j].second);
break;
}
}
if(ans.size()) break;
lo = k+1;
}
return ans;
}