#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; typedef pair P; typedef queue

Q; int N,S; int p[10010001]; struct Data{ vector products; string Nums(){ string s; for(auto i:products){ s += to_string(i+1); s+=" "; } return s; } int sum; bool operator < (const Data& _data) const{ return sum < _data.sum; } }; vector values1; vector values2; int main(){ cin >> N >> S; for(int i=0;i>p[i]; } for (int i=0;i ps; for(int j=0;j0){ Data d={ps,sum}; values1.push_back(d); } } for (int i=0;i ps; for(int j=N/2;j0){ Data d={ps,sum}; values2.push_back(d); } } Data d={{},0}; values1.push_back(d); values2.push_back(d); sort(values1.begin(),values1.end()); auto v2b=values2.begin(),v2e=values2.end(); sort(v2b,v2e); vector anss; for(auto i:values1){ i.sum=S-i.sum; for(auto j=lower_bound(v2b,v2e,i);jNums(); anss.push_back(s); } } sort(anss.begin(),anss.end()); for(auto i:anss){ cout<