#include <stdio.h> #include <bits/stdc++.h> #include <atcoder/all> using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) #define Inf 1000000003 vector<vector<bool>> get(vector<int> a,int K){ int n = a.size(); vector dp(n+1,vector<bool>(K+1,false)); dp[0][0] = true; rep(i,n){ rep(j,K+1){ if(dp[i][j]){ dp[i+1][j] = true; if(j+a[i]<=K)dp[i+1][j+a[i]] = true; } } } return dp; } int main(){ int N,K; cin>>N>>K; vector<int> a(N); rep(i,N){ cin>>a[i]; } auto x = get(a,K); reverse(a.begin(),a.end()); auto y = get(a,K); if(x.back().back()==false){ cout<<-1<<endl; return 0; } int ans = 0; rep(i,N){ bool f = false; rep(j,K+1){ if(x[i][j]==false)continue; if(y[N-1-i][K-j]==false)continue; f = true; break; } if(!f)ans++; } cout<<ans<<endl; return 0; }