#include "molecules.h"
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define srt(x) sort(all(x))
#define sz(x) (int)(x).size()
using ll = long long;
using vll = vector<ll>;
vector<int> find_subset(int l, int u, vector<int> w) {
int n = sz(w);
vector<pair<int, int>> a(n);
for(int i=0; i<n; i++) a[i] = {w[i], i};
srt(a); srt(w);
vll pf(n+1), sf(n+2);
for(int i=1; i<=n; i++) pf[i] = pf[i-1] + 1ll*w[i-1];
for(int i=n; i>=0; i--) sf[i] = sf[i+1] + 1ll*w[i-1];
for(int i=1; i<=n; i++) if(pf[i] <= u && sf[n+1 - i] >= l){
for(int j=i; 1; j++) if(l <= pf[j] - pf[j-i] && pf[j] - pf[j-i] <= u){
vector<int> ans;
for(int k=j-i; k<j; k++) ans.pb(a[k].second);
return ans;
}
}
return vector<int>(0);
}