#include #include using namespace std; using namespace atcoder; typedef modint998244353 mint; typedef long long ll; // DP によって O(N^2 Q) // dp[i][j] : i-1 番目まで見た時 j 個使用するときの積の総和 // これ、おそらく非想定(実際に O(NQ log^2 N) が可能, Mo もいける?)だけど、 // 愚直ですごい間に合う気がする int main(){ int n; cin >> n; vector p(n); for (int i=0; i> t; p[i] = t; } int q; cin >> q; for (int i=0; i> a >> b >> k; a--; vector dp(k+1); dp[0] = 1; for (int j=a; j ndp(k+1); for (int l=0; l<=k; l++){ ndp[l] += dp[l]; } for (int l=1; l<=k; l++){ ndp[l] += dp[l-1] * p[j]; } dp = ndp; } cout << dp[k].val() << "\n"; } }