#include <bits/stdc++.h>
using namespace std;
double eps = 0.0001;
long long M = 1e9 + 7;
long long pow1(long long a, long long b) {
  if (b == 0) return 1;
  if (b % 2 == 0) return pow1((a * a) % M, b / 2);
  return (a * pow1(a, b - 1)) % M;
}
int main() {
  int n;
  cin >> n;
  vector<long long> a(n);
  for (int i = 0; i < n; i++) cin >> a[i];
  sort(a.begin(), a.end());
  long long ans = 0;
  for (int i = 0; i < n - 1; i++) {
    long long p = a[i + 1] - a[i];
    long long kol1 = (pow1(2, i + 1) + M - 1) % M;
    long long kol2 = (pow1(2, n - i - 1) + M - 1) % M;
    ans += (((kol1 * kol2) % M) * p);
    ans %= M;
  }
  cout << ans;
  return 0;
}
