#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline bool ckmin(T &a, const T &b) {
  return b < a ? a = b, 1 : 0;
}
template <typename T>
inline bool ckmax(T &a, const T &b) {
  return a < b ? a = b, 1 : 0;
}
const int N = 3e5 + 10, P = 998244353;
int n, c[N];
int add(int first) { return first >= P ? first - P : first; }
int sub(int first) { return first < 0 ? first + P : first; }
int qpow(int a, int b) {
  int res = 1;
  for (; b; b >>= 1, a = 1ll * a * a % P)
    if (b & 1) res = 1ll * res * a % P;
  return res;
}
int main() {
  scanf("%d", &n);
  int m = 0;
  for (int i = 1; i <= n; i++) {
    int first;
    scanf("%d", &first);
    c[first]++;
    m += first;
  }
  c[m] = sub(c[m] - 1);
  int inv = 1ll * m * (n - 1) % P * qpow(n, P - 2) % P;
  int f0 = 0, f1 = 0, ans = 0;
  for (int i = 0; i <= m; i++) {
    ans = sub(ans - 1ll * c[i] * f1 % P);
    swap(f0, f1);
    f1 = sub(1ll * f0 * sub(add(m + 1ll * n * i % P) - 2ll * i % P) % P -
             1ll * i * (n - 1) % P * f1 % P);
    f1 = add(f1 + inv);
    f1 = 1ll * f1 * qpow(m - i, P - 2) % P;
  }
  printf("%d\n", ans);
  return 0;
}
