#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
long long MOD = 1e9 + 7;
int n;
long long a[N], inv[N], fac[N];
long long add(long long a, long long b) { return (a + b) % MOD; }
long long mul(long long a, long long b) { return (a * b) % MOD; }
long long sub(long long a, long long b) {
  b %= MOD;
  return (a + MOD - b) % MOD;
}
long long fastexp(long long a, long long b) {
  if (b == 0) return 1;
  long long x = fastexp(a, b >> 1);
  x = mul(x, x);
  if (b & 1) x = mul(x, a);
  return x;
}
void pre() {
  for (int i = 1; i < N; i++) {
    inv[i] = fastexp(i, MOD - 2);
  }
  fac[0] = 1;
  for (int i = 1; i < N; i++) {
    fac[i] = mul(i, fac[i - 1]);
  }
}
long long val(int x) {
  long long ans = fac[n];
  ans = mul(ans, inv[n - x]);
  return ans;
}
int main() {
  scanf("%d", &n);
  pre();
  for (int i = 1; i <= n; i++) {
    scanf("%lld", a + i);
  }
  sort(a + 1, a + n + 1);
  long long ans = 0;
  int x = -1;
  a[0] = -1;
  for (int i = 1; i <= n; i++) {
    if (a[i] != a[i - 1]) x = i - 1;
    if (a[i] == a[n]) break;
    ans = add(ans, mul(val(x), a[i]));
  }
  printf("%lld\n", ans);
}
