#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";	
}