#include<bits/stdc++.h>
using namespace std;
unsigned long long a,b,c,d,xm[20];//创建数组
unsigned long long heavy,sum;//求出缆车体积和总共需要的缆车数量
bool cat[20];//判断小猫还在不在
bool bl;//判断在查找最合适的值的时候有没有更改数字,没有就是没必要查了,直接退出
int main(){
cin>>a>>heavy;
b=a;//记录小猫还剩多少
for(int i=0;i<a;i++)cin>>xm[i];
sort(xm,xm+a);//从小到大排序,保证前面的小猫永远是最轻的
while(b>0){
sum++;//钱+1
for(int i=a-1;i>=0;i--){
//开始查找
if(xm[i]+c<=heavy&&cat[i]==false){
b--;//小猫-1
cat[i]=true;//小猫不能坐两遍缆车
c+=xm[i];
cout<<xm[i]<<' ';
}
}
cout<<endl;
c=0;//初始化
}
cout<<sum;
return 0;
}
#7#11#12过不了