#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
long long ModE(long long a, long long b, long long c)
{
long long ans=1;
while(b != 0)
{
if(b%2 == 1)
{
ans=(ans*a);
ans=ans%c;
}
a=(a*a);
a=a%c;
b=b/2;
}
return ans;
}
int main()
{
long long i,n;
vector<long long> x;
long long temp;
long long sum=0;
long long coeff;
long long a,b;
cin>>n;
x.clear();
for(i=0;i<n;i++)
{
cin>>temp;
x.push_back(temp);
}
sort(x.rbegin(),x.rend());
long long r;
r=1000*1000*1000;
r+=7;
for(i=0;i<n;i++)
{
a=ModE(2,n-i-1,r);
b=ModE(2,i,r);
coeff=a-b;
sum+=x[i]*coeff;
sum=sum%r;
}
sum=sum%r;
cout<<sum<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbG9uZyBsb25nIE1vZEUobG9uZyBsb25nIGEsIGxvbmcgbG9uZyBiLCBsb25nIGxvbmcgYykgCnsKCWxvbmcgbG9uZyBhbnM9MTsgICAgICAgICAgICAKICAJd2hpbGUoYiAhPSAwKSAKICAJewogICAgICAgICAgICBpZihiJTIgPT0gMSkKICAgICAgICAgICAgewogICAgICAgICAgCQlhbnM9KGFucyphKTsKICAgIAkgICAgICAgIGFucz1hbnMlYzsKICAgICAgICAgICAgfQogICAgICAgIAlhPShhKmEpOwogICAgICAgICAgICBhPWElYzsKICAgICAgICAgICAgYj1iLzI7CiAgCX0KcmV0dXJuIGFuczsKfQoKCmludCBtYWluKCkKewogICAgbG9uZyBsb25nIGksbjsKICAgIHZlY3Rvcjxsb25nIGxvbmc+IHg7CiAgICBsb25nIGxvbmcgdGVtcDsKICAgIGxvbmcgbG9uZyBzdW09MDsKICAgIGxvbmcgbG9uZyBjb2VmZjsKICAgIGxvbmcgbG9uZyBhLGI7CiAgICAKICAgIGNpbj4+bjsKICAgIHguY2xlYXIoKTsKCgpmb3IoaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgY2luPj50ZW1wOwogICAgICAgIHgucHVzaF9iYWNrKHRlbXApOwogICAgfQogICAgc29ydCh4LnJiZWdpbigpLHgucmVuZCgpKTsKICAgIAogCWxvbmcgbG9uZyByOwogCXI9MTAwMCoxMDAwKjEwMDA7CiAJcis9NzsKIAkKCWZvcihpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBhPU1vZEUoMixuLWktMSxyKTsKICAgICAgICBiPU1vZEUoMixpLHIpOwogICAgICAgIGNvZWZmPWEtYjsKICAgICAgICBzdW0rPXhbaV0qY29lZmY7CiAgICAgICAgc3VtPXN1bSVyOwogICAgICAgCiAgICB9CiAgICBzdW09c3VtJXI7CiAgICBjb3V0PDxzdW08PGVuZGw7CiAgIHJldHVybiAwOwp9