#include <bits/stdc++.h>
long long int mod = 1e9 + 7;
using namespace std;
long long int n, a[300005], m[300005], sum[300005];
long long int modK(long long int x, int t) {
  if (t == 0) return 1;
  long long int r = modK(x, t / 2);
  long long int ans = (r % mod) * (r % mod) % mod;
  if (t % 2) ans = (ans % mod) * (x % mod) % mod;
  return ans;
}
long long Pow(long long x, long long y) {
  long long ret = 1;
  while (y) {
    if (y & 1) ret = ret * x % mod;
    x = x * x % mod;
    y = y >> 1;
  }
  return ret % mod;
}
void Init() {
  for (int i = 0; i < 300005; i++) m[i] = modK(2, i);
}
void solve() {
  long long int ans = 0, cot = 0;
  sort(a + 1, a + n + 1);
  sum[0] = 0;
  for (int i = 1; i <= n; i++) sum[i] = sum[i - 1] + a[i];
  for (int c = 0, i = 1; c <= n - 2; i++, c++) {
    cot = (((sum[n] - sum[n - i]) - sum[i])) % mod;
    ans += (m[c] % mod) * (cot % mod) % mod;
  }
  printf("%I64d\n", ans % mod);
}
int main() {
  scanf("%I64d", &n);
  for (int i = 1; i <= n; i++) scanf("%I64d", &a[i]);
  Init();
  solve();
  return 0;
}
