#include <bits/stdc++.h>
using namespace std;
long long n, a[300005];
const long long MOD = 1e9 + 7;
long long add(long long x, long long y) { return (x + y) % MOD; }
long long mul(long long x, long long y) { return x * y % MOD; }
long long binpow(long long x, long long y) {
  if (y == 0) return 1;
  if (y % 2) return mul(x, binpow(x, y - 1));
  long long z = binpow(x, y / 2);
  return mul(z, z);
}
long long inv(long long x) { return binpow(x, MOD - 2); }
long long divide(long long x, long long y) { return mul(x, inv(y)); }
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (long long i = 0; i < n; i++) cin >> a[i];
  sort(a, a + n);
  long long ans = 0;
  long long s = 0;
  for (long long i = n - 1; i > 0; i--) s = add(mul(s, 2), a[i]);
  for (long long i = 0; i < n - 1; i++) {
    ans = add(ans, add(s, MOD - mul(binpow(2, n - i - 1) - 1, a[i])));
    s = add(s, MOD - a[i + 1]);
    s = divide(s, 2);
  }
  cout << ans;
}
