#include #include #include using mint = atcoder::static_modint<1234567891>; int main() { int N; int64_t M; std::cin >> N >> M; std::vector A(N); for (int &a : A) std::cin >> a; int S = 0; for (int a : A) S += a; std::vector dp(S + 1); dp[0] = 1; while (M) { std::vector ndp(S * 2 + 1); for (int i = 0; i <= S; i++) ndp[i] = dp[i]; for (int a : A) { for (int i = S * 2; i >= a; i--) { ndp[i] += ndp[i - a]; } } int m = M & 1; for (int i = 0; (i << 1 | m) <= S * 2; i++) { dp[i] = ndp[i << 1 | m]; } M >>= 1; } std::cout << dp[0].val() << std::endl; }