#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long n, sum;
long long x[300010], bit[300010];
long long read(long long i) {
  long long res = 0;
  while (i) {
    res = (res + bit[i]) % mod;
    i -= i & -i;
  }
  return res;
}
void add1(long long i, long long x) {
  while (i < 300010) {
    bit[i] = (bit[i] + x) % mod;
    i += i & -i;
  }
}
long long mod_pow(long long x, long long n) {
  long long res = 1;
  while (n) {
    if (n & 1) res = res * x % mod;
    x = x * x % mod;
    n >>= 1;
  }
  return res;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> x[i];
  }
  sort(x + 1, x + n + 1);
  for (int i = 1; i <= n; i++) add1(i, x[i]);
  for (int i = 0; i < n - 1; i++) {
    sum =
        (sum + mod_pow(2, i) * (read(n) - read(n - i - 1) - read(i + 1)) % mod +
         mod) %
        mod;
  }
  printf("%I64d\n", sum);
}
