#include <bits/stdc++.h>
using namespace std;
int ok,a[100], b[100],n,k;
bool check(){// cong cac thanh phan 1 1
int sum=0;
for(int i=1;i<=n;i++){
sum += a[i]*b[i];
}
return sum==k;
}
void sinh(vector<string>& ans){
while(1){
if(check()){// luu dap an
string tmp = "";
for(int i = 1; i <= n; i++) if(a[i]) tmp += to_string(b[i]) + " ";
ans.push_back(tmp);
}
int i=n;
while(i>0 && a[i]==1) a[i--]=0;
if(i==0) return;
a[i]=1;
}
}
int main(){
cin >> n >> k;
for(int i=1;i<=n;i++){
cin >> b[i];
a[i]=0;
}
vector<string> ans;
sinh(ans);
for(auto x : ans) cout<<x<<"\n";
cout<<ans.size()<<"\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG9rLGFbMTAwXSwgYlsxMDBdLG4sazsKCmJvb2wgY2hlY2soKXsvLyBjb25nIGNhYyB0aGFuaCBwaGFuIDEgMQoJaW50IHN1bT0wOwoJZm9yKGludCBpPTE7aTw9bjtpKyspewoJCXN1bSArPSBhW2ldKmJbaV07Cgl9CglyZXR1cm4gc3VtPT1rOwp9Cgp2b2lkIHNpbmgodmVjdG9yPHN0cmluZz4mIGFucyl7Cgl3aGlsZSgxKXsKCQlpZihjaGVjaygpKXsvLyBsdXUgZGFwIGFuCgkJCXN0cmluZyB0bXAgPSAiIjsKCQkJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGlmKGFbaV0pIHRtcCArPSB0b19zdHJpbmcoYltpXSkgKyAiICI7CgkJCWFucy5wdXNoX2JhY2sodG1wKTsKCQl9CgkJaW50IGk9bjsKCQl3aGlsZShpPjAgJiYgYVtpXT09MSkgYVtpLS1dPTA7CgkJaWYoaT09MCkgcmV0dXJuOwoJCWFbaV09MTsKCX0KfQoKaW50IG1haW4oKXsKCWNpbiA+PiBuID4+IGs7Cglmb3IoaW50IGk9MTtpPD1uO2krKyl7CgkJY2luID4+IGJbaV07CgkJYVtpXT0wOwoJfQoJdmVjdG9yPHN0cmluZz4gYW5zOwoJc2luaChhbnMpOwoJZm9yKGF1dG8geCA6IGFucykgY291dDw8eDw8IlxuIjsKCWNvdXQ8PGFucy5zaXplKCk8PCJcbiI7CQp9