#include using namespace std; #include using mint = atcoder::static_modint<1234567891>; using ll = long long; int main() { int N; ll X; cin >> N >> X; vector A(N); for (int i = 0; i < N; i++) cin >> A[i]; int S = 0; for (int i = 0; i < N; i++) S += A[i]; vector dp(2*S+1); dp[0] = 1; while (X > 0) { for (int i = 0; i < N; i++) { for (int j = 2*S-A[i]; j >= 0; j--) { dp[j+A[i]] += dp[j]; } } vector ndp(2*S+1); for (int i = 0; i <= 2*S; i++) { if (X%2 == i%2) ndp[i/2] += dp[i]; } swap(dp, ndp); X >>= 1; } cout << dp[0].val() << endl; }