#include <bits/stdc++.h>
using namespace std;
int a[1100050], jc[2200050], jv[2200050], a1[1100050];
inline int pow(int, int), c(int, int);
inline void read(int&), prepare(), fmod(int&);
int main() {
  int K, ans(0);
  read(K), prepare();
  for (int i(1); i <= K; ++i) read(a[i]), ++a1[a[i] + 1];
  for (int i(K); i < 1100050; ++i) a1[i] += a1[i - K];
  for (int i(1); i < 1100050; ++i) a1[i] += a1[i - 1];
  int b1(1100050 - 1);
  for (int i(0); i < 1100050; ++i)
    if (a1[i] > i) {
      b1 = i - 1;
      break;
    }
  for (int i(0), i1; i < K && i <= b1; ++i)
    i1 = b1 - i, fmod(ans += c(K - 1 + i1 - a1[i1], K - 1) - 998244353);
  return printf("%d", ans), 0;
}
inline void fmod(int& x) { x += x >> 31 & 998244353; }
inline int c(int n, int r) {
  if (n < 0 || r < 0 || n < r) return 0;
  return jc[n] * 1ll * jv[r] % 998244353 * jv[n - r] % 998244353;
}
inline int pow(int x, int y) {
  int ans(1);
  while (y) {
    if (y & 1) ans = ans * 1ll * x % 998244353;
    x = x * 1ll * x % 998244353, y >>= 1;
  }
  return ans;
}
inline void prepare() {
  for (int i(jc[0] = 1); i < 2200050; ++i)
    jc[i] = jc[i - 1] * 1ll * i % 998244353;
  jv[2200050 - 1] = pow(jc[2200050 - 1], 998244353 - 2);
  for (int i(2200050 - 1); i; --i) jv[i - 1] = jv[i] * 1ll * i % 998244353;
}
inline void read(int& x) {
  x ^= x;
  register char c;
  while (c = getchar(), c < '0' || c > '9')
    ;
  while (c >= '0' && c <= '9')
    x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
}
