#include using namespace std; using ll = long long; const unsigned int MOD = 1234567891; int main(){ int N; ll M; cin >> N >> M; vector A(N); for(auto &&v:A)cin >> v; int Asum = accumulate(A.begin(), A.end(), 0); vector dp(2 * Asum); dp[0] = 1; while(M){ for(int i = 0; i < N; i++){ for(int x = 2 * Asum - 1; x >= A[i]; x--){ if((dp[x] += dp[x - A[i]]) >= MOD)dp[x] -= MOD; } } for(int x = 0; x < Asum; x++)dp[x] = dp[x << 1 | (M & 1)]; fill(dp.begin() + Asum, dp.end(), 0); M >>= 1; } cout << dp[0] << '\n'; }