#include <bits/stdc++.h>
#define ll long long
#define all(x) x.begin(), x.end()
#define f1(i, n) for(int i=1;i<=n;++i)
using namespace std;
const int maxn = 2e6 + 1;
int A[maxn];
int n, k, max_length = 0, bin[100];
vector<vector<int>> result;
void ql(int i) {
if (i > n) {
vector<int> v;
v.clear();
int sum = 0;
for (int i = 1; i <= n; ++i) {
if (bin[i] == 1) {
v.push_back(A[i]);
sum += A[i];
}
}
if (sum <= k) {
result.push_back(v);
max_length = max(max_length, int(v.size()));
}
return;
}
bin[i] = 1;
ql(i + 1);
bin[i] = 0;
ql(i + 1);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> k;
bool ok = false;
for (int i = 1; i <= n; ++i) {
cin >> A[i];
if (A[i] <= k) ok = true;
}
if (!ok) {
cout << 0;
return 0;
}
ql(1);
cout << max_length << endl;
for (auto vec : result) {
if (vec.size() == max_length) {
for (auto x : vec) {
cout << x << " ";
}
cout << endl;
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGYxKGksIG4pIGZvcihpbnQgaT0xO2k8PW47KytpKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IG1heG4gPSAyZTYgKyAxOwoKaW50IEFbbWF4bl07CmludCBuLCBrLCBtYXhfbGVuZ3RoID0gMCwgYmluWzEwMF07CnZlY3Rvcjx2ZWN0b3I8aW50Pj4gcmVzdWx0OwoKdm9pZCBxbChpbnQgaSkgewoJaWYgKGkgPiBuKSB7CgkJdmVjdG9yPGludD4gdjsKCQl2LmNsZWFyKCk7CgkJaW50IHN1bSA9IDA7CgkJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CgkJCWlmIChiaW5baV0gPT0gMSkgewoJCQkJdi5wdXNoX2JhY2soQVtpXSk7CgkJCQlzdW0gKz0gQVtpXTsKCQkJfQoJCX0KCQlpZiAoc3VtIDw9IGspIHsKCQkJcmVzdWx0LnB1c2hfYmFjayh2KTsKCQkJbWF4X2xlbmd0aCA9IG1heChtYXhfbGVuZ3RoLCBpbnQodi5zaXplKCkpKTsKCQl9CgkJcmV0dXJuOwoJfQoKCWJpbltpXSA9IDE7CglxbChpICsgMSk7CgoJYmluW2ldID0gMDsKCXFsKGkgKyAxKTsKfQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKG51bGxwdHIpOwoKCWNpbiA+PiBuID4+IGs7Cglib29sIG9rID0gZmFsc2U7Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKCQljaW4gPj4gQVtpXTsKCQlpZiAoQVtpXSA8PSBrKSBvayA9IHRydWU7Cgl9CglpZiAoIW9rKSB7CgkJY291dCA8PCAwOwoJCXJldHVybiAwOwoJfQoKCXFsKDEpOwoKCWNvdXQgPDwgbWF4X2xlbmd0aCA8PCBlbmRsOwoJZm9yIChhdXRvIHZlYyA6IHJlc3VsdCkgewoJCWlmICh2ZWMuc2l6ZSgpID09IG1heF9sZW5ndGgpIHsKCQkJZm9yIChhdXRvIHggOiB2ZWMpIHsKCQkJCWNvdXQgPDwgeCA8PCAiICI7CgkJCX0KCQkJY291dCA8PCBlbmRsOwoJCX0KCX0KfQoKCg==