#include using namespace std; // #define int long long const int N = 5005; const int mod = 998244353; int n,p[N],q,f[N][N],r[N],pre[N],g[N][N]; int qpow(int a,int b) { int res = 1; while(b) { if(b & 1) res = 1ll * res * a % mod; a = 1ll * a * a % mod; b >>= 1; } return res; } signed main() { cin >> n; for(int i=1;i<=n;i++) cin >> p[i], p[i] = (mod + p[i] % mod) % mod; f[0][0] = 1; for(int i=1;i<=n;i++) { f[i][i] = 1ll * f[i-1][i-1] * p[i] % mod; f[i][0] = f[i-1][0]; for(int j=1;j=1;j--) pre[j] = (pre[j] + 1ll * p[i+1] * pre[j-1]) % mod; r[0] = 1; for(int i=1;i<=n;i++) { int sum = 0; for(int j=1;j<=i;j++) sum = (sum + 1ll * pre[j] * r[i-j]) % mod; r[i] = (mod - sum) % mod; } g[n][0] = r[0]; for(int i=1;i<=n;i++) g[n][i] = (r[i] + 1ll * r[i-1] * p[n]) % mod; for(int i=n-1;i>=1;i--) { g[i][0] = g[i+1][0]; for(int j=1;j<=n;j++) g[i][j] = (g[i+1][j] + 1ll * p[i] * g[i+1][j-1]) % mod; } cin >> q; while(q--) { int a, b, k; cin >> a >> b >> k; int ans = 0; for(int i=0;i<=k;i++) ans = (ans + 1ll * f[b][i] * g[a][k-i]) % mod; cout << ans << '\n'; } return 0; }