#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n, k, x[100], a[100];
bool ok = true;
void init(){
cin >> n;
for(int i = 1; i <= n; i++){
x[i] = 0;
}
}
bool check(){
int sum = 0;
for(int i = 1; i <= n; i++){
if(x[i] == 1){
sum += a[i];
}
}
return sum == k;
}
void result(){
for(int i = 1; i <= n; i++){
if(x[i]) cout << a[i] << ' ';
}
cout << endl;
}
void next_bits_string(){
int i = n;
while(i > 0 && x[i] == 1){
x[i] = 0;
i--;
}
if(i == 0){
ok = false;
}
else{
x[i] = 1;
}
}
int main(){
init();
cin >> k;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
int cnt = 0;
while(ok){
if(check()){
cnt++;
result();
}
next_bits_string();
}
cout << cnt << endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG4sIGssIHhbMTAwXSwgYVsxMDBdOwpib29sIG9rID0gdHJ1ZTsKCnZvaWQgaW5pdCgpewogICBjaW4gPj4gbjsKICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICB4W2ldID0gMDsKICAgfQp9Cgpib29sIGNoZWNrKCl7CiAgIGludCBzdW0gPSAwOwogICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgIGlmKHhbaV0gPT0gMSl7CiAgICAgICAgIHN1bSArPSBhW2ldOwogICAgICB9CiAgIH0KICAgcmV0dXJuIHN1bSA9PSBrOwp9Cgp2b2lkIHJlc3VsdCgpewogICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgIGlmKHhbaV0pIGNvdXQgPDwgYVtpXSA8PCAnICc7CiAgIH0KICAgY291dCA8PCBlbmRsOwp9Cgp2b2lkIG5leHRfYml0c19zdHJpbmcoKXsKICAgaW50IGkgPSBuOwogICB3aGlsZShpID4gMCAmJiB4W2ldID09IDEpewogICAgICB4W2ldID0gMDsKICAgICAgaS0tOwogICB9CiAgIGlmKGkgPT0gMCl7CiAgICAgIG9rID0gZmFsc2U7CiAgIH0KICAgZWxzZXsKICAgICAgeFtpXSA9IDE7CiAgIH0KfQoKaW50IG1haW4oKXsKICAgaW5pdCgpOwogICBjaW4gPj4gazsKICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICBjaW4gPj4gYVtpXTsKICAgfQogICBpbnQgY250ID0gMDsKICAgd2hpbGUob2spewogICAgICBpZihjaGVjaygpKXsKICAgICAgICAgY250Kys7CiAgICAgICAgIHJlc3VsdCgpOwogICAgICB9ICAgCiAgICAgIG5leHRfYml0c19zdHJpbmcoKTsKICAgfQogICBjb3V0IDw8IGNudCA8PCBlbmRsOwp9