#include <iostream>
using namespace std;
int main() {
int n,x;
cin>>n>>x;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
pair<int,int> dp[1<<n];
dp[0] = {0,x+1};
for(int s=1;s<(1<<n);s++)
{
dp[s] = {25,0};
for(int i=0;i<n;i++)
{
if((s>>i)&1)
{
auto [c,w] = dp[s^(1<<i)];
if(w + a[i] > x)
{
c++;
w = min(a[i],w);
}
else
{
w+=a[i];
}
dp[s] = min(dp[s],{c,w});
}
}
}
cout<<dp[(1<<n)-1].first<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgkKCWludCBuLHg7CgljaW4+Pm4+Png7CgkKCWludCBhW25dOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQljaW4+PmFbaV07Cgl9CgkKCXBhaXI8aW50LGludD4gZHBbMTw8bl07CglkcFswXSA9IHswLHgrMX07CgkKCWZvcihpbnQgcz0xO3M8KDE8PG4pO3MrKykKCXsKCQlkcFtzXSA9IHsyNSwwfTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCXsKCQkJaWYoKHM+PmkpJjEpCgkJCXsKCQkJCWF1dG8gW2Msd10gPSBkcFtzXigxPDxpKV07CgkJCQlpZih3ICsgYVtpXSA+IHgpCgkJCQl7CgkJCQkJYysrOwoJCQkJCXcgPSBtaW4oYVtpXSx3KTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQl3Kz1hW2ldOwoJCQkJfQoJCQkJZHBbc10gPSBtaW4oZHBbc10se2Msd30pOwoJCQl9CgkJfQoJCQoJfQoJY291dDw8ZHBbKDE8PG4pLTFdLmZpcnN0PDxlbmRsOwoJCglyZXR1cm4gMDsKfQ==