#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using lint = long long int; long long int INF = 1001001001001001LL; int inf = 1000000007; long long int MOD = 998244353; double PI = 3.1415926535897932; templateinline void chmin(T1 &a,const T2 &b){if(a>b) a=b;} templateinline void chmax(T1 &a,const T2 &b){if(a> n >> q; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } vector> dp(2, vector(n + 1)); dp[0][0] = 1; int cur = 0; int nxt = 1; for (int i = 0; i < n; i++) { for (int j = 0; j <= n; j++) { dp[nxt][j] = 0; } for (int j = 0; j <= n; j++) { if (dp[cur][j] == 0) continue; // 1 をとる (dp[nxt][j + 1] += dp[cur][j]) %= MOD; // 1 以外 (dp[nxt][j] += dp[cur][j] * (a[i] - 1)) %= MOD; } swap(cur, nxt); } for (int i = 0; i < q; i++) { int j; cin >> j; cout << dp[cur][j] << endl; } return 0; }