func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( O3 )   #pragma GCC target( sse4 )   using namespace std;   const int maxn = 1001000;   const int mod = 1000000007;   int a[maxn], f[maxn], r[maxn];   int main() {     int n;     scanf( %d , &n);     for (int e = 1; e <= n; e++) scanf( %d , a + e);     auto mul = [](int x, int y) { return 1ll * x * y % mod; };     f[0] = 1;     for (int e = 1; e <= n; e++) f[e] = mul(e, f[e - 1]);     r[n + 1] = 1;     for (int e = n; e >= 1; e--) r[e] = mul(e, r[e + 1]);     sort(a + 1, a + 1 + n);     int small = 0;     int i = 1, j = 1;     int ans = 0;     while (i <= n) {       while (j <= n && a[i] == a[j]) j++;       if (j == n + 1) break;       ans += mul(j - i, mul(a[i], mul(f[n - small - 1], r[n - small + 1])));       small += j - i;       if (ans >= mod) ans -= mod;       i = j;     }     cout << ans << endl;     return 0;   }   