#include <bits/stdc++.h>
using namespace std;
int n,w;
int a[20];
int dp[(1<<18)+5][20];
int main(){
memset(dp,0x3f,sizeof(dp));
cin>>n>>w;
for (int i=1;i<=n;i++){
cin>>a[i];
}
for (int i=1;i<=n;i++) dp[0][i]=w;
for (int i=1;i<(1<<n);i++){
for (int j=1;j<=n;j++){
for (int k=0;k<n;k++){
if (!(i&(1<<k)))continue;
int now=i^(1<<k);
if (dp[now][j]+a[k+1]>w){
dp[i][j+1]=min(dp[i][j+1],a[k+1]);
}else{
dp[i][j]=min(dp[i][j],dp[now][j]+a[k+1]);
}
}
}
}
for (int i=1;i<(1<<n);i++){
cout<<i<<" ";
for (int j=1;j<=n;j++){
cout<<dp[i][j]<<" ";
}cout<<"\n\n";
}
for (int i=1;i<=n;i++){
if (dp[(1<<n)-1][i]!=0x3f3f3f3f){
cout<<i;
break;
}
}
}