#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
const int oo = 0x3f3f3f3f;
long long MOD = 998244353;
long long power_mod(long long v, long long p, long long m) {
  if (p == 0) return 1;
  long long res = power_mod((v * v) % m, p / 2, m);
  if (p & 1) res = (res * v) % m;
  return res;
}
long long inverse_mod(long long v, long long m) {
  return power_mod(v, m - 2, m);
}
struct ModInt {
  long long v;
  ModInt(long long v_ = 0) : v(v_){};
  ModInt &operator+=(const ModInt &f) {
    v += f.v;
    v -= ((v >= MOD) ? MOD : 0);
    return *this;
  }
  ModInt &operator-=(const ModInt &f) {
    v -= f.v;
    v += ((v < 0) ? MOD : 0);
    return *this;
  }
  ModInt &operator*=(const ModInt &f) {
    v = (v * f.v) % MOD;
    return *this;
  }
  ModInt &operator/=(const ModInt &f) {
    v = (v * inverse_mod(f.v, MOD)) % MOD;
    return *this;
  }
  ModInt operator-() const { return (v == 0) ? ModInt(0) : ModInt(MOD - v); }
  ModInt operator+(const ModInt &f) const {
    long long x = v + f.v;
    x -= ((x >= MOD) ? MOD : 0);
    return ModInt(x);
  }
  ModInt operator-(const ModInt &f) const { return *this + (-f); }
  ModInt operator*(const ModInt &f) const { return ModInt((v * f.v) % MOD); }
  ModInt operator/(const ModInt &f) const {
    return ModInt((v * inverse_mod(f.v, MOD)) % MOD);
  }
  bool operator==(const ModInt &f) const { return v == f.v; }
};
ostream &operator<<(ostream &str, const ModInt &f) { return str << f.v; }
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int N;
  cin >> N;
  vector<long long> a(N);
  for (int i = (0); i < (N); i++) cin >> a[i];
  int S = 0;
  for (auto i : a) S += (int)i;
  vector<ModInt> add(S), mul(S);
  ModInt invS = ModInt(1) / ModInt(S);
  ModInt invNm1 = ModInt(1) / ModInt(N - 1);
  for (int i = (0); i < (S); i++) {
    ModInt help = ModInt(S - i) * invS;
    ModInt ad = 1, fm1 = ModInt(i) * invS, fsame = help * (ModInt(1) - invNm1),
           fp1 = help * invNm1;
    if (fm1.v) {
      ad += fm1 * add[i - 1];
      fsame += fm1 * mul[i - 1];
    }
    ModInt scale = ModInt(1) / (ModInt(1) - fsame);
    add[i] = ad * scale;
    mul[i] = fp1 * scale;
  }
  vector<ModInt> return_time(S + 1);
  return_time[S] = 0;
  for (int i = int(S) - 1; i >= (0); i--) {
    return_time[i] = add[i] + mul[i] * return_time[i + 1];
  }
  ModInt res(0);
  for (auto i : a) res += return_time[i];
  res -= return_time[0] * ModInt(N - 1);
  res /= ModInt(N);
  cout << res << endl;
  return 0;
}
