#include <bits/stdc++.h>
using namespace std;
const long long N = 2000005, M = 998244353;
long long fac[N], inv[N], n, a[N], cnt1[N], cnt2[N], ans, Max;
long long ksm(long long x, long long y) {
  long long ans = 1;
  for (; y; y >>= 1, x = x * x % M)
    if (y & 1) (ans *= x) %= M;
  return ans;
}
long long C(long long x, long long y) {
  if (x < y) return 0;
  return fac[x] * inv[y] % M * inv[x - y] % M;
}
signed main() {
  scanf("%lld", &n);
  for (long long i = 1; i <= n; i++) scanf("%lld", &a[i]), Max = max(Max, a[i]);
  fac[0] = inv[0] = 1;
  for (long long i = 1; i < N; i++) fac[i] = fac[i - 1] * i % M;
  inv[N - 1] = ksm(fac[N - 1], M - 2);
  for (long long i = N - 2; i; i--) inv[i] = inv[i + 1] * (i + 1) % M;
  for (long long i = 1; i <= n; i++)
    for (long long j = a[i] + 1; j <= Max; j += n) cnt1[j]++;
  for (long long i = 2; i <= Max; i++) cnt1[i] += cnt1[i - 1];
  for (long long i = 1; i <= n; i++) cnt2[a[i] + 1]++;
  for (long long i = 2; i <= Max; i++) cnt2[i] += cnt2[i - 1];
  for (long long i = 0; i <= Max; i++) {
    if (i < cnt1[i]) break;
    (ans += M + C(i - cnt1[i] + n - 1, n - 1) -
            C(i - cnt1[i] - (n - cnt2[i]) + n - 1, n - 1)) %= M;
  }
  printf("%lld\n", ans);
}
