#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e10;
const long long mod = 1000000007;
int n;
long long a[300010], b[300010];
long long st[300010];
long long ksm(long long x, long long y) {
  long long rtn = 1;
  while (y) {
    if (y & 1) rtn = rtn * x % mod;
    y >>= 1;
    x = x * x % mod;
  }
  return rtn;
}
long long len(int x, int y) {
  if (x >= y) return 0;
  return a[y] - a[x];
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  sort(a + 1, a + 1 + n);
  for (int i = 1; i < n; i++) b[i] = a[i + 1] - a[i];
  n -= 1;
  for (int i = 1, j = n; i < j; i++, j--) {
    st[i] = (st[i - 1] + b[i] * i % mod + b[j] * i % mod) % mod;
  }
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    long long x = min(i, n - i + 1);
    ans = (ans +
           ((len(1, n + 1) - len(1, x) - len(n + 1 - x + 1, n + 1)) * x % mod +
            st[x - 1]) *
               ksm(2, i - 1) % mod) %
          mod;
  }
  printf("%I64d\n", ans);
  return 0;
}
