#include<bits/stdc++.h>
using namespace std;
const int N=20;
int a[N];
int n,w;
int ans;
int num[N];
int cnt;
void dfs(int now){
if(cnt>=ans) return ;
if(now==n){
ans=min(ans,cnt);
return ;
}
for(int i=0;i<cnt;i++){
if(num[i]+a[now]<=w){
num[i]+=a[now];
dfs(now+1);
num[i]-=a[now];
}
}
num[cnt++]+=a[now];
dfs(now+1);
num[--cnt]-=a[now];
}
int main(){
ans=0x3f3f3f3f;
scanf("%d%d",&n,&w);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);reverse(a,a+n);//从大到小放,优化
dfs(0);
printf("%d\n",ans);
return 0;
}