#include<iostream>
#include <algorithm>
using namespace std;
int N, W, w[10001], jy[10001], INF=1e9;
int dp(int n){
if(n<0){
return INF;
}
if(jy[n]!=INF){
return jy[n];
}
if(n==0){
return 0;
}
for(int i=1;i<=n;i++){
jy[n]=min(jy[n],dp(n-w[i]));
}
jy[n]++;
return jy[n];
}
int main(){
cin>>N>>W;
for(int i=1;i<=W;i++){
jy[i]=INF;
}
for(int i=1;i<=N;i++){
cin>>w[i];
}
cout<<dp(W)<<endl;
return 0;
}