func_code_string: #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;   }   