#include <bits/stdc++.h>
using namespace std;
long long int power(long long int x, long long int y, long long int p) {
  long long int res = 1;
  x = x % p;
  while (y > 0) {
    if (y & 1) res = (res * x) % p;
    y = y >> 1;
    x = (x * x) % p;
  }
  return res;
}
const long long int md = 998244353;
long long int n;
long long int a[1005];
long long int dp[1005];
long long int C[1005][1005];
void pre() {
  long long int i, j;
  for (i = 0; i <= 1000; i++) {
    for (j = 0; j <= i; j++) {
      if (j == 0 || j == i)
        C[i][j] = 1;
      else
        C[i][j] = C[i - 1][j - 1] + C[i - 1][j], C[i][j] %= md;
    }
  }
}
long long int nCr(long long int n, long long int r) {
  if (n < r || n <= 0) return 0;
  return C[n][r];
}
long long int rec(long long int idx) {
  long long int i;
  if (a[idx] <= 0) return 0;
  long long int ret = 0;
  if (dp[idx] != -1) return dp[idx];
  for (i = idx + a[idx] + 1; i <= n; i++) {
    long long int tmp = nCr(i - idx - 1, a[idx]);
    tmp *= (rec(i));
    tmp %= md;
    ret += tmp;
    ret %= md;
  }
  if (idx + a[idx] <= n) {
    ret += nCr(n - idx, a[idx]);
    ret %= md;
  }
  ret %= md;
  dp[idx] = ret;
  return ret;
}
int main() {
  ios_base::sync_with_stdio(false);
  long long int i, j, k, x, y, t, m;
  cin >> n;
  for (i = 1; i <= n; i++) cin >> a[i];
  pre();
  memset(dp, -1, sizeof(dp));
  long long int ans = 0;
  for (i = 1; i <= n; i++) ans += rec(i), ans %= md;
  cout << ans << endl;
}
