#include <bits/stdc++.h>
using namespace std;
const long long cls = 1000000007;
const int INF = 0x3f3f3f3f;
using namespace std;
long long a[300010];
long long fuck[300010];
int main() {
  fuck[0] = 1;
  for (int i = 1; i < 300010; i++) {
    fuck[i] = (fuck[i - 1] * 2ll) % cls;
  }
  int n;
  while (cin >> n) {
    for (int i = 1; i < n + 1; i++) {
      scanf("%lld", &a[i]);
    }
    sort(a + 1, a + 1 + n);
    long long ans = 0;
    for (int i = 1; i < n + 1; i++) {
      long long sub = 0, add = 0;
      if (i == n) {
        sub = 0;
      } else {
        sub = (a[i] * (fuck[n - i] - 1) + cls) % cls;
      }
      if (i == 1) {
        add = 0;
      } else {
        add = (a[i] * (fuck[i - 1] - 1) + cls) % cls;
      }
      ans = (ans - sub + cls) % cls;
      ans = (ans + add) % cls;
    }
    cout << ans << endl;
  }
  return 0;
}
