#include <bits/stdc++.h>
using ul = std::uint32_t;
using li = std::int32_t;
using ll = std::int64_t;
using ull = std::uint64_t;
using lf = double;
using vul = std::vector<ul>;
using vvul = std::vector<vul>;
const ul base = 998244353;
ul plus(ul a, ul b) { return a + b < base ? a + b : a + b - base; }
ul minus(ul a, ul b) { return a < b ? a + base - b : a - b; }
ul mul(ul a, ul b) { return ull(a) * ull(b) % base; }
void exgcd(li a, li b, li& x, li& y) {
  if (b) {
    exgcd(b, a % b, y, x);
    y -= a / b * x;
  } else {
    x = 1;
    y = 0;
  }
}
ul inverse(ul a) {
  li x, y;
  exgcd(a, base, x, y);
  return x < 0 ? li(base) + x : x;
}
ul devide(ul a, ul b) { return mul(a, inverse(b)); }
ul k;
ul a[100001];
ul fact[1000001];
ul factinv[1000001];
ul binomial(ul a, ul b) {
  return mul(fact[a], mul(factinv[a - b], factinv[b]));
}
int main() {
  std::scanf("%u", &k);
  fact[0] = 1;
  for (ul i = 1; i <= 1000000; ++i) {
    fact[i] = mul(fact[i - 1], i);
  }
  factinv[1000000] = inverse(fact[1000000]);
  for (ul i = 1000000; i; --i) {
    factinv[i - 1] = mul(factinv[i], i);
  }
  ul critical = 0;
  for (ul i = 1; i <= k; ++i) {
    std::scanf("%u", &a[i]);
  }
  std::sort(a + 1, a + k + 1);
  for (ul i = 1; i <= k; ++i) {
    if (a[i] < i - 1) {
      critical = i - 1;
      break;
    }
  }
  if (critical) {
    ul ans = 0;
    for (ul j = 0; j < critical; ++j) {
      ul x = std::lower_bound(a + 1, a + k + 1, j) - a - 1;
      ans = plus(ans, binomial(j - x + k - 1, k - 1));
    }
    std::printf("%u\n", ans);
  } else {
    ul sum = 0;
    ul sum2 = 0;
    for (ul i = 1; i <= k; ++i) {
      sum += a[i];
      a[i] %= k;
      sum2 += a[i];
    }
    std::sort(a + 1, a + k + 1);
    ul ans = 0;
    for (ul t = 0; t != k; ++t) {
      ul x = k - (std::lower_bound(a + 1, a + k + 1, k - t) - a - 1);
      ans = plus(ans, binomial((sum - sum2) / k - t + x + k - 1, k - 1));
    }
    std::printf("%u\n", ans);
  }
  return 0;
}
