#include <bits/stdc++.h>
using namespace std;
int n, a[1005];
long long dp[1005];
long long dpsum[1005];
bool b[1005];
long long ch[1005][1005];
long long gc(int c, int x) {
  if (x == 0 || c == x) return 1;
  if (!ch[c][x]) {
    ch[c][x] = (gc(c - 1, x - 1) + gc(c - 1, x)) % 998244353;
  }
  return ch[c][x];
}
int getdp(int x) {
  if (!b[x]) {
    b[x] = 1;
    if (a[x] > 0) {
      for (int i = x + a[x] + 1; i <= n + 1; ++i) {
        dp[x] =
            (dp[x] + gc(i - x - 2, a[x] - 1) * (1LL + dpsum[i])) % 998244353;
      }
    }
  }
  return dp[x];
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    cin >> a[i];
  }
  long long ans = 0;
  for (int i = n; i >= 1; --i) {
    dpsum[i] = dpsum[i + 1] + getdp(i);
    dpsum[i] %= 998244353;
  }
  for (int i = 1; i <= n; ++i) {
    ans = ans + getdp(i);
    ans %= 998244353;
  }
  cout << ans;
}
