#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,w;
int h[20];
int mn,sum;
int res;
int v[20];
int flag=0;
bool cmp(int x,int y){
return x>y;
}
void dfs(int rest,int cnt,int sum,int las){
if(flag!=0){
return;
}
if(rest==0){
if(cnt<n){
flag=2;
return;
}
else {
flag=1;
return;
}
}
if(cnt==n){
flag=1;
return;
}
for(int i=n;i>=1;i--){
if(w-sum>=h[i]&&v[i]==0){
break;
}
if(w-sum<h[i]&&v[i]==0){
dfs(rest-1,cnt,0,1);
}
}
for(int i=las;i<=n;i++){
if(sum+h[i]<=w&&v[i]==0){
v[i]=1;
//cout<<rest<<" "<<cnt<<" "<<h[i]<<endl;
dfs(rest,cnt+1,sum+h[i],i+1);
v[i]=0;
}
}
}
signed main(){
cin>>n>>w;
for(int i=1;i<=n;i++){
cin>>h[i];
sum+=h[i];
}
res=sum/w;
sort(h+1,h+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<h[i]<<" ";
}
for(int i=res;i<=n;i++){
memset(v,0,sizeof(v));
flag=0;
dfs(i,0,0,1);
if(flag==1){
cout<<i;
return 0;
}
}
}