func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long mod = 1e9 + 7, inf = 1e17, N = 1e6 + 10;   bool vowel(char che) {     if (che ==  A  || che ==  E  || che ==  I  || che ==  O  || che ==  U  ||         che ==  Y ) {       return true;     } else {       return false;     }   }   long long pw(long long a, long long b) {     long long ans = 1;     while (b) {       if (b % 2 == 1) {         ans = 1ll * ans * a;         ans %= mod;       }       b /= 2;       a = 1ll * a * a % mod;       a %= mod;     }     return ans % mod;   }   bool mark[N], ok[N], h;   char o;   pair<long long, long long> p;   vector<long long> vt[N], vec, jav, vs;   string s, s1;   int64_t a[N], b[N], c[N], d, dp, t, n, m, k, f, ans1, sum, ps;   int64_t fuc[N];   int64_t ans;   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie();     cin >> n;     for (int i = 0; i < n; i++) {       cin >> a[i];       a[i] %= mod;     }     fuc[0] = 1;     for (int i = 1; i <= n; i++) {       fuc[i] = 1ll * fuc[i - 1] * i;       fuc[i] %= mod;     }     sort(a, a + n);     f = 1;     a[n] = -25;     ans = 0;     for (int i = 1; i <= n; i++) {       if (a[i] == a[i - 1])         f++;       else {         if (i != n) {           f %= mod;           k = fuc[n] * pw((n - i + f), mod - 2);           k %= mod;           k *= f;           k %= mod;           ans += 1ll * k * a[i - 1];         }         ans %= mod;         f = 1;       }     }     cout << (ans + mod) % mod << endl;   }   