42pts,995!!!!!!
#include<iostream>
#include<algorithm>
using namespace std;
int ans=1;
int a[25],n,w,cnt[25];
bool k(int a,int b){
return a>b;
}
void dfs(int nc,int ls){
if(ls>=ans) return ;
if(nc==n+1){
ans=min(ans,ls);
return ;
}
for(int i=1;i<=ls;i++){
if(cnt[i]+a[nc]<=w){
cnt[i]+=a[nc];
dfs(nc+1,ls);
cnt[i]-=a[nc];
}
}
cnt[ls+1]=a[nc];
dfs(ls+1,nc+1);
cnt[ls+1]-=a[nc];
}
int main(){
cin>>n>>w;
ans=n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n,k);
dfs(1,0);
cout<<ans;
return 0;
}