#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
int main(){
int n, k, count = 0;
cin >> n >> k;
vector<int> a(n);
for(int &num : a)
cin >> num;
int x = 1 << n;
vector<vector<int>> results;
for(int i=0; i<x; i++){
vector<int> v;
int sum = 0;
for(int j=0; j<n; j++){
if(i & (1<<j)){
v.push_back(a[j]);
sum += a[j];
}
}
if(sum == k){
sort(v.begin(), v.end()); // Sắp xếp từng tập con theo thứ tự tăng dần
results.push_back(v);
count++;
}
}
sort(results.begin(), results.end(), [](const vector<int>& a, const vector<int>& b) {
if (a.size() != b.size()) return a.size() < b.size();
return a < b;
});
for(const auto &v : results){
for(int num : v)
cout << num << " ";
cout << endl;
}
cout << count << endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBlbmRsICJcbiIKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmNvbnN0IGludCBtb2QgPSAxZTkgKyA3OwoKaW50IG1haW4oKXsKCWludCBuLCBrLCBjb3VudCA9IDA7CgljaW4gPj4gbiA+PiBrOwoJdmVjdG9yPGludD4gYShuKTsKCWZvcihpbnQgJm51bSA6IGEpCgkJY2luID4+IG51bTsKCQoJaW50IHggPSAxIDw8IG47Cgl2ZWN0b3I8dmVjdG9yPGludD4+IHJlc3VsdHM7Cglmb3IoaW50IGk9MDsgaTx4OyBpKyspewoJCXZlY3RvcjxpbnQ+IHY7CgkJaW50IHN1bSA9IDA7CgkJZm9yKGludCBqPTA7IGo8bjsgaisrKXsKCQkJaWYoaSAmICgxPDxqKSl7CgkJCQl2LnB1c2hfYmFjayhhW2pdKTsKCQkJCXN1bSArPSBhW2pdOwoJCQl9CgkJfQoJCWlmKHN1bSA9PSBrKXsKCQkJc29ydCh2LmJlZ2luKCksIHYuZW5kKCkpOyAvLyBT4bqvcCB44bq/cCB04burbmcgdOG6rXAgY29uIHRoZW8gdGjhu6kgdOG7sSB0xINuZyBk4bqnbgoJCQlyZXN1bHRzLnB1c2hfYmFjayh2KTsKCQkJY291bnQrKzsKCQl9Cgl9CgoJc29ydChyZXN1bHRzLmJlZ2luKCksIHJlc3VsdHMuZW5kKCksIFtdKGNvbnN0IHZlY3RvcjxpbnQ+JiBhLCBjb25zdCB2ZWN0b3I8aW50PiYgYikgewoJCWlmIChhLnNpemUoKSAhPSBiLnNpemUoKSkgcmV0dXJuIGEuc2l6ZSgpIDwgYi5zaXplKCk7CgkJcmV0dXJuIGEgPCBiOwoJfSk7CgoJZm9yKGNvbnN0IGF1dG8gJnYgOiByZXN1bHRzKXsKCQlmb3IoaW50IG51bSA6IHYpCgkJCWNvdXQgPDwgbnVtIDw8ICIgIjsKCQljb3V0IDw8IGVuZGw7Cgl9CgoJY291dCA8PCBjb3VudCA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0K