#include <bits/stdc++.h>
using namespace std;
inline int read() {
  register int x = 0, f = 1;
  register char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = 0;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + (ch ^ '0');
    ch = getchar();
  }
  return f ? x : -x;
}
const int N = 1e6 + 5, mod = 998244353;
int n, a[N], maxa, fac[N], ifc[N], bkt[N], cnt[N];
inline int power(int b, int n) {
  int ans = 1;
  for (; n; n >>= 1, b = 1ll * b * b % mod)
    if (n & 1) ans = 1ll * ans * b % mod;
  return ans;
}
inline int C(int n, int m) {
  return (n < 0 || m < 0 || n < m)
             ? 0
             : 1ll * fac[n] * ifc[m] % mod * ifc[n - m] % mod;
}
inline void inc(int &x, int y) { x = x + y < mod ? x + y : x + y - mod; }
int main() {
  for (int i = (fac[0] = 1), _ed = (N - 1); i <= _ed; ++i)
    fac[i] = 1ll * fac[i - 1] * i % mod;
  ifc[N - 1] = power(fac[N - 1], mod - 2);
  for (int i = (N - 2), _ed = (0); i >= _ed; --i)
    ifc[i] = 1ll * ifc[i + 1] * (i + 1) % mod;
  for (int i = (1), _ed = (n = read()); i <= _ed; ++i)
    a[i] = read(), ++bkt[a[i] + 1], maxa = max(maxa, a[i]);
  for (int i = (1), _ed = (n); i <= _ed; ++i)
    for (int j = a[i] + 1; j <= maxa; j += n) ++cnt[j];
  int empty = 0, res = n, ans = 0;
  for (int i = (1), _ed = (maxa); i <= _ed; ++i) {
    ++empty;
    res -= bkt[i];
    if (empty < cnt[i]) break;
    empty -= cnt[i];
    inc(ans, C(empty + n - 1, n - 1));
    if (empty >= res) inc(ans, mod - C(empty - res + n - 1, n - 1));
  }
  printf("%d\n", (ans + 1) % mod);
  return 0;
}
