#include<bits/stdc++.h>
using namespace std;
int a[100000], b[10000], n,m , dem=0;
vector <int> aa[100];
int ck(int b[])
{
int tong=0;
for(int i=1;i<=n;i++)
{
if(b[i]==1) tong += a[i-1];
}
if(tong ==m) return 1;
return 0;
}
void out()
{
if(ck(b))
{
for(int i=1;i<=n;i++) if(b[i]==1) aa[dem].push_back(a[i-1]);
dem++;
}
}
void bk(int i)
{
for(int j=0;j<=1;j++)
{
b[i]= j;
if(i==n) out();
else bk(i+1);
}
}
int main()
{
cin>> n>> m;
for(int i=0;i<n;i++) cin>> a[i];
sort(a,a+n);
bk(1);
for(int i=dem-1;i>=0;i--)
{
for(int j=0;j<aa[i].size();j++) cout<< aa[i][j];
cout<< endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGFbMTAwMDAwXSwgYlsxMDAwMF0sIG4sbSAsIGRlbT0wOwp2ZWN0b3IgPGludD4gYWFbMTAwXTsKaW50IGNrKGludCBiW10pCnsKCWludCB0b25nPTA7Cglmb3IoaW50IGk9MTtpPD1uO2krKykKCXsKCQlpZihiW2ldPT0xKSB0b25nICs9IGFbaS0xXTsKCX0KCWlmKHRvbmcgPT1tKSByZXR1cm4gMTsKCXJldHVybiAwOwp9CgoKdm9pZCBvdXQoKQp7CglpZihjayhiKSkgCgl7CgkJZm9yKGludCBpPTE7aTw9bjtpKyspIGlmKGJbaV09PTEpIGFhW2RlbV0ucHVzaF9iYWNrKGFbaS0xXSk7CgkJZGVtKys7Cgl9Cn0Kdm9pZCBiayhpbnQgaSkKewoJZm9yKGludCBqPTA7ajw9MTtqKyspCgl7CgkJYltpXT0gajsKCQlpZihpPT1uKSBvdXQoKTsKCQllbHNlIGJrKGkrMSk7Cgl9Cn0KaW50IG1haW4oKQp7CgljaW4+PiBuPj4gbTsKCWZvcihpbnQgaT0wO2k8bjtpKyspIGNpbj4+IGFbaV07Cglzb3J0KGEsYStuKTsKCWJrKDEpOwoJZm9yKGludCBpPWRlbS0xO2k+PTA7aS0tKQoJewoJCWZvcihpbnQgaj0wO2o8YWFbaV0uc2l6ZSgpO2orKykgY291dDw8IGFhW2ldW2pdOwoJCWNvdXQ8PCBlbmRsOwoJfQp9