#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include #include #include #include #include #include #include #define REP(i, n) for (int i = 0; i < (n); ++i) using namespace std; using ll = long long; constexpr ll INF = 1LL << 60; constexpr ll MOD = 998244353; int n, q, x, y; ll a[6060]; ll dp[6060][6060]; int main() { cin >> n >> q; REP(i, n) cin >> a[i]; dp[0][0] = 1; REP(i, n) REP(j, n) { dp[i + 1][j + 1] += dp[i][j]; dp[i + 1][j + 1] %= MOD; dp[i + 1][j] += dp[i][j] * (a[i] - 1); dp[i + 1][j] %= MOD; } REP(i, q) { int b; cin >> b; cout << dp[n][b] << '\n'; } return 0; }