#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const long long int INFF = 1e17;
const double EPS = 1e-9;
const long long int MOD = 1e9 + 7;
const int MAXN = 3e5 + 10;
long long int add(long long int a, long long int b) {
  return ((a % MOD) + (b % MOD)) % MOD;
}
long long int mod(long long int a) { return (a % MOD + MOD) % MOD; }
long long int sub(long long int a, long long int b) {
  return mod((a % MOD) - (b % MOD));
}
long long int mul(long long int a, long long int b) {
  return ((a % MOD) * (b % MOD)) % MOD;
}
long long int mod_exp(long long int b, long long int e) {
  long long int r = 1LL;
  long long int f = 0LL;
  while (e > 0) {
    if (e & 1LL) r = (r * b) % MOD;
    b = (b * b) % MOD;
    e >>= 1LL;
  }
  return r;
}
long long int mi(long long int n_f) { return mod_exp(n_f, MOD - 2LL) % MOD; }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long int n, sum1 = 0, sum2 = 0;
  vector<long long int> a(MAXN);
  cin >> n;
  for (int i = (0); i < (n); ++i) cin >> a[i];
  sort(a.begin(), a.begin() + n);
  reverse(a.begin(), a.begin() + n);
  for (int i = (0); i < (n); ++i) {
    sum1 += (mul(a[i], sub(mod_exp(2, n - i - 1), 1)));
    sum2 += (mul(a[i], sub(mod_exp(2, i), 1)));
  }
  cout << sub(sum1, sum2) << '\n';
  return 0;
}
