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