#include<iostream>
#include<algorithm>
using namespace std;
long long n,w,minn=1e9;
long long c[50],vis[50],sum[50];
bool cmp(int a,int b)
{
return a>b;
}
void dfs(int step,int num)
{
if(num>=minn)return;
if(step==n+1)
{
minn=num;
return;
}
sum[num+1]+=c[step];
dfs(step+1,num+1);
for(int i=1;i<=num;i++)
{
if(sum[i]+c[step]<=w)
{
sum[i]+=c[step];
dfs(step+1,num);
sum[i]-=c[step];
}
}
}
int main(){
cin>>n>>w;
for(int i=1;i<=n;i++)
{
cin>>c[i];
}
sort(c+1,c+n+1,cmp);
dfs(1,0);
cout<<minn;
return 0;
}