#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 7;
const long long mod = 1e9 + 7;
long long x[maxn];
long long ans[maxn];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &x[i]);
  }
  sort(x + 1, x + 1 + n);
  for (int i = 1; i < n; i++) {
    x[i] = (x[i + 1] - x[i] + mod) % mod;
  }
  n--;
  for (int i = 1; i <= n; i++) {
    x[i] = (x[i] + x[i - 1]) % mod;
  }
  ans[1] = x[n];
  for (int i = 2; i <= n / 2; i++) {
    ans[i] = ((ans[i - 1] + (x[n - i + 1] + mod - x[i - 1]) % mod) % mod);
  }
  if (n & 1LL) {
    int i = n / 2 + 1;
    ans[i] = ((ans[i - 1] + (x[n - i + 1] + mod - x[i - 1]) % mod) % mod);
  }
  long long value = 1LL;
  long long total = 0;
  int i = 1;
  for (i = 1; i <= n / 2; i++) {
    total += (ans[i] * value) % mod;
    total %= mod;
    value = (value * 2) % mod;
  }
  if (n & 1LL) {
    total += (ans[i] * value) % mod;
    total %= mod;
    value = (value * 2) % mod;
    i++;
  }
  for (; i <= n; i++) {
    total += (ans[n - i + 1] * value) % mod;
    total %= mod;
    value = (value * 2) % mod;
  }
  printf("%lld\n", total);
}
