//#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; inline int read(){ int x=0,o=1;char ch=getchar(); while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar(); if(ch=='-')o=-1,ch=getchar(); while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*o; } int n,m,ans,a[20],b[20]; inline void dfs(int now,int cnt){ if(cnt>=ans)return; if(now==n+1){ans=min(ans,cnt);return;} for(int i=1;i<=cnt;++i){ if(a[now]+b[i]<=m){ b[i]+=a[now]; dfs(now+1,cnt); b[i]-=a[now]; } } b[cnt+1]=a[now]; dfs(now+1,cnt+1); b[cnt+1]-=a[now]; } int main(){ n=read(),m=read(); for(int i=1;i<=n;++i)a[i]=read(); sort(a+1,a+n+1);reverse(a+1,a+n+1); ans=n;dfs(1,0); printf("%d\n",ans); return 0; }