//tent
#include <bits/stdc++.h>
#define pii pair<int,int>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
int n,x,y,z,gmax,bk[75200],ap[220],apbk[75200];
vector <pii> v[75200];
int32_t main()
{
f>>n>>gmax;
for(int i=1; i<=n; i++)
f>>x, ap[x]++;
for(int i=1; i<=gmax; i++)
bk[i]=INT_MAX;
for(int i=200; i>=1; i--)
{
for(int j=0; j<=gmax; j++)
if(bk[j]!=INT_MAX)
apbk[j]=0;
else
apbk[j]=20200;
if(ap[i])
{
for(int j=i; j<=gmax; j++)
{
if(bk[j-i]!=INT_MAX and apbk[j-i]<ap[i])
{
apbk[j]=min(apbk[j],apbk[j-i]+1);
if(bk[j-i]+1<bk[j])
bk[j]=bk[j-i]+1, v[j]=v[j-i*apbk[j]], v[j].push_back({i,apbk[j]});
}
}
}
}
int i=gmax;
for(; i>=1; i--)
if(bk[i]!=INT_MAX)
{g<<i<<' '; break;}
g<<v[i].size()<<'\n';
for(auto it:v[i])
for(int j=1; j<=it.second; j++)
g<<it.first<<'\n';
return 0;
}