func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, a[1005];   long long int p[1005], f[1005], d;   long long int power(long long int a, long long int b) {     if (b == 0) return 1;     if (b == 1) return a % 998244353;     long long int c = power(a, b / 2);     if (b & 1)       return (((c * c) % 998244353) * a) % 998244353;     else       return (c * c) % 998244353;   }   long long int ret(int a, int b) {     long long int c = f[a];     c *= power(f[b], 998244353 - 2);     c %= 998244353;     c *= power(f[a - b], 998244353 - 2);     return c % 998244353;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     f[0] = 1;     for (int i = 1; i < 1005; i++) {       f[i] = i * f[i - 1];       f[i] %= 998244353;     }     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> a[i];     }     p[n + 1] = 1;     for (int i = n; i > 0; i--) {       p[i] = p[i + 1];       for (int j = i + a[i]; j <= n && a[i] > 0; j++) {         d = ret(j - i - 1, a[i] - 1);         p[i] += d * p[j + 1];         p[i] %= 998244353;       }     }     cout << ((p[1] + 998244353 - 1) % 998244353);   }   