///Bismillahir Rahmanir Rahim
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<cctype>
#include<algorithm>
#include<string>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<stack>
#include<list>
#include<iostream>
#include<assert.h>
#include<bits/stdc++.h>
/**Define file I/O **/
#define f_input freopen("input.txt","r",stdin)
#define f_output freopen("output.txt","w",stdout)
/**Define memory set function**/
#define mem(x,y) memset(x,y,sizeof(x))
#define CLEAR(x) memset(x,0,sizeof(x))
/**Define function and object**/
#define pb push_back
#define Sort(v) sort(v.begin(),v.end())
#define RSort(v) sort(v.rbegin(),v.rend())
#define CSort(v,C) sort(v.begin(),v.end(),C)
#define all(v) (v).begin(),(v).end()
#define sqr(x) ((x)*(x))
#define find_dist(a,b) sqrt(sqr(a.x-b.x)+sqr(a.y-b.y))
/**Define constant value**/
#define ERR 1e-9
#define pi (2*acos(0))
#define PI 3.141592653589793
/**Define input**/
#define scanint(a) scanf("%d",&a)
#define scanLLD(a) scanf("%lld",&a)
#define scanstr(s) scanf("%s",s)
#define scanline(l) scanf(" %[^\n]",l)
#define scandouble(d) scanf("%lf",&d)
#define scanchar(c) scanf("%c",&c)
/**Define Bitwise operation**/
#define check(n, pos) (n & (1ll<<(pos)))
#define biton(n, pos) (n | (1ll<<(pos)))
#define bitoff(n, pos) (n & ~(1ll<<(pos)))
/**Define color**/
enum { WHITE,GREY,BLACK} ;
/**Sync off with stdio**/
#define __ cin.sync_with_stdio(false);\
cin.tie();
/**Debug tools**/
#define what_is(x) cerr<<(#x)<<" is "<<x<<endl
using namespace std;
/**Typedef**/
typedef vector< int > vint;
typedef vector< vint > vint2D;
typedef vector< string> vstr;
typedef vector< char > vchar;
typedef vector< vchar > vchar2D;
typedef queue< int > Qi;
typedef queue< Qi > Qii;
typedef map< int ,int > Mii;
typedef map< string,int > Msi;
typedef map< int ,string> Mis;
typedef stack< int > stk;
typedef pair< int ,int > pp;
typedef pair< int , pp > ppp;
typedef long long int ll;
ll inf= 1e18 ;
/**Template & structure**/
template < class T> T gcd( T a,T b) { return b == 0 ? a : gcd( b, a % b) ; }
template < typename T> T lcm( T a, T b) { return a / gcd( a,b) * b; }
template < typename T> T last_bit( T n) { return n & 1 ; }
template < class T> T big_mod( T n,T p,T m) { if ( p== 0 ) return ( T) 1 ; T x= big_mod( n,p/ 2 ,m) ; x= ( x* x) % m; if ( p& 1 ) x= ( x* n) % m; return x; }
template < class T> T modInv( T a, T m) { T x, y; extgcd( a, m, x, y) ; x % = m; while ( x < 0 ) { x + = m; } return x; }
template < class T> T extgcd( T a,T b,T& x,T& y) { if ( b== 0 ) { x= 1 ; y= 0 ; return a; } else { int g= extgcd( b,a% b,y,x) ; y- = a/ b* x; return g; } }
template < class T> T multiplication( T n,T p,T m) { if ( p== 0 ) return ( T) 0 ; T x= multiplication( n,p/ 2 ,m) ; x= ( x+ x) % m; if ( p& 1 ) x= ( x+ n) % m; return x; }
template < class T> T my_pow( T n,T p) { if ( p== 0 ) return 1 ; T x= my_pow( n,p/ 2 ) ; x= ( x* x) ; if ( p& 1 ) x= ( x* n) ; return x; } ///n to the power p
template < class T> double getdist( T a, T b) { return sqrt ( ( a.x - b.x ) * ( a.x - b.x ) + ( a.y - b.y ) * ( a.y - b.y ) ) ; } /// distance between a & b
template < class T> T extract( string s, T ret) { stringstream ss( s) ; ss >> ret; return ret; } /// extract words or numbers from a line
template < class T> string tostring( T n) { stringstream ss; ss << n; return ss.str ( ) ; } /// convert a number to string
template < class T> T Mod( T n,T m) { return ( n% m+ m) % m; } ///For Positive Negative No.
template < class T> T MIN3( T a,T b,T c) { return min( a,min( b,c) ) ; } /// minimum of 3 number
template < class T> T MAX3( T a,T b,T c) { return max( a,max( b,c) ) ; } ///maximum of 3 number
template < class T> void print_vector( T & v) { int sz= v.size ( ) ; if ( sz) cout << v[ 0 ] ; for ( int i = 1 ; i < sz; i++ ) cout << ' ' << v[ i] ; cout << "\n " ; } /// prints all elements in a vector
bool isVowel( char ch) { ch= toupper ( ch) ; if ( ch== 'A' || ch== 'U' || ch== 'I' || ch== 'O' || ch== 'E' ) return true ; return false ; }
bool isConsonant( char ch) { if ( isalpha ( ch) && ! isVowel( ch) ) return true ; return false ; }
template < class R> R Josephus( R n,R k) { R ans= 1 ; for ( R i= 2 ; i<= n; i++ ) ans= ( ans+ k- 1 ) % i+ 1 ; return ans; }
template < class R> R toitent_Phi2( R a) { R result = a; for ( R i= 2 ; i* i<= a; i++ ) { if ( a% i== 0 ) result= result- result/ i; while ( a% i== 0 ) a= a/ i; } if ( a> 1 ) result= result- result/ a; return result; }
template < typename T> T Angle( T x1,T y1,T x2, T y2) { return atan ( double ( y1- y2) / double ( x1- x2) ) ; }
//namespace debug{
// int sum(){return 0;}
// template<typename T,typename... Args> T sum(T a,Args... args) {return a+sum(args...);}
// void print(){cout<<"\n";return;}template<typename T, typename... Args>void print(T a,Args... args){cout<<a<<" ";print(args...);}
//}
/**Direction**/
///int dx[8] = {0, 1, 1, 1, 0, -1, -1, -1};int dy[8] = {1, 1, 0, -1, -1, -1, 0, 1}; ///8 Direction
///int dx[4] = {1, 0, -1, 0};int dy[4] = {0, 1, 0, -1}; ///4 Direction
///int dx[]={2,1,-1,-2,-2,-1,1,2};int dy[]={1,2,2,1,-1,-2,-2,-1};///Knight Direction
///int dx[]={-1,-1,+0,+1,+1,+0};int dy[]={-1,+1,+2,+1,-1,-2}; ///Hexagonal Direction
/******************************End******************************/
#define mxn 300009
//#define mod
ll a[ mxn] ;
int main( )
{ //freopen("largeinput.txt","r",stdin);
//freopen("largeoutput.txt","w",stdout);
__;
ll T,t;
ll n;
ll i,j,k;
ll ans= 0 ;
cin >> T;
for ( t= 1 ; t<= T; t++ ) {
cin >> n;
for ( i= 1 ; i<= n; i++ ) {
cin >> a[ i] ;
}
ll mod= 1000000007LL;
sort( a+ 1 ,a+ 1 + n) ;
for ( i= 1 ; i<= n; i++ ) {
ans+ = ( a[ i] * big_mod( 2ll,i- 1ll,mod) + mod) % mod;
ans= ( ans- a[ i] * big_mod( 2ll,n- i,mod) + mod) % mod;
}
cout << "Case #" << t<< ": " ;
cout << ( ans+ mod) % mod<< "\n " ;
}
}
Ly8vQmlzbWlsbGFoaXIgUmFobWFuaXIgUmFoaW0KCiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8aW9tYW5pcD4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8Y21hdGg+CiNpbmNsdWRlPGNzdGRsaWI+CiNpbmNsdWRlPGNjdHlwZT4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxzdHJpbmc+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8cXVldWU+CiNpbmNsdWRlPG1hcD4KI2luY2x1ZGU8c2V0PgojaW5jbHVkZTxzc3RyZWFtPgojaW5jbHVkZTxzdGFjaz4KI2luY2x1ZGU8bGlzdD4KI2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFzc2VydC5oPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKLyoqRGVmaW5lIGZpbGUgSS9PICoqLwojZGVmaW5lIGZfaW5wdXQgZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pCiNkZWZpbmUgZl9vdXRwdXQgZnJlb3Blbigib3V0cHV0LnR4dCIsInciLHN0ZG91dCkKCi8qKkRlZmluZSBtZW1vcnkgc2V0IGZ1bmN0aW9uKiovCiNkZWZpbmUgbWVtKHgseSkgbWVtc2V0KHgseSxzaXplb2YoeCkpCiNkZWZpbmUgQ0xFQVIoeCkgbWVtc2V0KHgsMCxzaXplb2YoeCkpCgovKipEZWZpbmUgZnVuY3Rpb24gYW5kIG9iamVjdCoqLwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIFNvcnQodikgc29ydCh2LmJlZ2luKCksdi5lbmQoKSkKI2RlZmluZSBSU29ydCh2KSBzb3J0KHYucmJlZ2luKCksdi5yZW5kKCkpCiNkZWZpbmUgQ1NvcnQodixDKSBzb3J0KHYuYmVnaW4oKSx2LmVuZCgpLEMpCiNkZWZpbmUgYWxsKHYpICh2KS5iZWdpbigpLCh2KS5lbmQoKQojZGVmaW5lIHNxcih4KSAoKHgpKih4KSkKI2RlZmluZSBmaW5kX2Rpc3QoYSxiKSBzcXJ0KHNxcihhLngtYi54KStzcXIoYS55LWIueSkpCgovKipEZWZpbmUgY29uc3RhbnQgdmFsdWUqKi8KI2RlZmluZSBFUlIgMWUtOQojZGVmaW5lIHBpICgyKmFjb3MoMCkpCiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTMKCi8qKkRlZmluZSBpbnB1dCoqLwojZGVmaW5lIHNjYW5pbnQoYSkgc2NhbmYoIiVkIiwmYSkKI2RlZmluZSBzY2FuTExEKGEpIHNjYW5mKCIlbGxkIiwmYSkKI2RlZmluZSBzY2Fuc3RyKHMpIHNjYW5mKCIlcyIscykKI2RlZmluZSBzY2FubGluZShsKSBzY2FuZigiICVbXlxuXSIsbCkKI2RlZmluZSBzY2FuZG91YmxlKGQpIHNjYW5mKCIlbGYiLCZkKQojZGVmaW5lIHNjYW5jaGFyKGMpIHNjYW5mKCIlYyIsJmMpCgovKipEZWZpbmUgQml0d2lzZSBvcGVyYXRpb24qKi8KI2RlZmluZSBjaGVjayhuLCBwb3MpIChuICYgKDFsbDw8KHBvcykpKQojZGVmaW5lIGJpdG9uKG4sIHBvcykgKG4gfCAoMWxsPDwocG9zKSkpCiNkZWZpbmUgYml0b2ZmKG4sIHBvcykgKG4gJiB+KDFsbDw8KHBvcykpKQoKLyoqRGVmaW5lIGNvbG9yKiovCmVudW0ge1dISVRFLEdSRVksQkxBQ0t9OwoKLyoqU3luYyBvZmYgd2l0aCBzdGRpbyoqLwojZGVmaW5lIF9fIGNpbi5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpO1wKICAgICAgICAgICBjaW4udGllKCk7CgovKipEZWJ1ZyB0b29scyoqLwojZGVmaW5lIHdoYXRfaXMoeCkgY2Vycjw8KCN4KTw8IiBpcyAiPDx4PDxlbmRsCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovKipUeXBlZGVmKiovCnR5cGVkZWYgdmVjdG9yPGludD4gdmludDsKdHlwZWRlZiB2ZWN0b3I8IHZpbnQgPiB2aW50MkQ7CnR5cGVkZWYgdmVjdG9yPHN0cmluZz4gdnN0cjsKdHlwZWRlZiB2ZWN0b3I8Y2hhcj52Y2hhcjsKdHlwZWRlZiB2ZWN0b3I8IHZjaGFyID52Y2hhcjJEOwp0eXBlZGVmIHF1ZXVlPGludD4gUWk7CnR5cGVkZWYgcXVldWU8IFFpID4gUWlpOwp0eXBlZGVmIG1hcDxpbnQsaW50PiBNaWk7CnR5cGVkZWYgbWFwPHN0cmluZyxpbnQ+IE1zaTsKdHlwZWRlZiBtYXA8aW50LHN0cmluZz4gTWlzOwp0eXBlZGVmIHN0YWNrPGludD4gc3RrOwp0eXBlZGVmIHBhaXI8aW50LGludD4gcHA7CnR5cGVkZWYgcGFpcjxpbnQsIHBwID4gcHBwOwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGw7CmxsIGluZj0xZTE4OwoKLyoqVGVtcGxhdGUgJiBzdHJ1Y3R1cmUqKi8KCnRlbXBsYXRlPGNsYXNzIFQ+VCBnY2QoVCBhLFQgYil7cmV0dXJuIGIgPT0gMCA/IGEgOiBnY2QoYiwgYSAlIGIpO30KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+VCBsY20oVCBhLCBUIGIpIHtyZXR1cm4gYSAvIGdjZChhLGIpICogYjt9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPlQgbGFzdF9iaXQoVCBuKSB7IHJldHVybiBuICYgMTsgfQoKdGVtcGxhdGU8Y2xhc3MgVD5UIGJpZ19tb2QoVCBuLFQgcCxUIG0pe2lmKHA9PTApcmV0dXJuIChUKTE7VCB4PWJpZ19tb2QobixwLzIsbSk7eD0oeCp4KSVtO2lmKHAmMSl4PSh4Km4pJW07cmV0dXJuIHg7fQoKdGVtcGxhdGU8Y2xhc3MgVD5UIG1vZEludihUIGEsIFQgbSl7VCB4LCB5OyBleHRnY2QoYSwgbSwgeCwgeSk7IHggJT0gbTsgd2hpbGUgKHggPCAwKXt4ICs9IG07fSByZXR1cm4geDt9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBUIGV4dGdjZChUIGEsVCBiLFQmIHgsVCYgeSl7aWYoYj09MCl7eD0xO3k9MDtyZXR1cm4gYTt9ZWxzZXtpbnQgZz1leHRnY2QoYixhJWIseSx4KTt5LT1hL2IqeDtyZXR1cm4gZzt9fQoKdGVtcGxhdGU8Y2xhc3MgVD5UIG11bHRpcGxpY2F0aW9uKFQgbixUIHAsVCBtKXtpZihwPT0wKXJldHVybiAoVCkwO1QgeD1tdWx0aXBsaWNhdGlvbihuLHAvMixtKTt4PSh4K3gpJW07aWYocCYxKXg9KHgrbiklbTtyZXR1cm4geDt9Cgp0ZW1wbGF0ZTxjbGFzcyBUPlQgbXlfcG93KFQgbixUIHApe2lmKHA9PTApcmV0dXJuIDE7VCB4PW15X3BvdyhuLHAvMik7eD0oeCp4KTtpZihwJjEpeD0oeCpuKTtyZXR1cm4geDt9IC8vL24gdG8gdGhlIHBvd2VyIHAKCnRlbXBsYXRlIDxjbGFzcyBUPiBkb3VibGUgZ2V0ZGlzdChUIGEsIFQgYil7cmV0dXJuIHNxcnQoKGEueCAtIGIueCkgKiAoYS54IC0gYi54KSArIChhLnkgLSBiLnkpICogKGEueSAtIGIueSkpO30vLy8gZGlzdGFuY2UgYmV0d2VlbiBhICYgYgoKdGVtcGxhdGUgPGNsYXNzIFQ+IFQgZXh0cmFjdChzdHJpbmcgcywgVCByZXQpIHtzdHJpbmdzdHJlYW0gc3Mocyk7IHNzID4+IHJldDsgcmV0dXJuIHJldDt9Ly8vIGV4dHJhY3Qgd29yZHMgb3IgbnVtYmVycyBmcm9tIGEgbGluZQoKdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cmluZyB0b3N0cmluZyhUIG4pIHtzdHJpbmdzdHJlYW0gc3M7IHNzIDw8IG47IHJldHVybiBzcy5zdHIoKTt9Ly8vIGNvbnZlcnQgYSBudW1iZXIgdG8gc3RyaW5nCgp0ZW1wbGF0ZTxjbGFzcyBUPiBUIE1vZChUIG4sVCBtKSB7cmV0dXJuIChuJW0rbSklbTt9IC8vL0ZvciBQb3NpdGl2ZSBOZWdhdGl2ZSBOby4KCnRlbXBsYXRlPGNsYXNzIFQ+IFQgTUlOMyhUIGEsVCBiLFQgYykge3JldHVybiBtaW4oYSxtaW4oYixjKSk7fSAvLy8gbWluaW11bSBvZiAzIG51bWJlcgoKdGVtcGxhdGU8Y2xhc3MgVD4gVCBNQVgzKFQgYSxUIGIsVCBjKSB7cmV0dXJuIG1heChhLG1heChiLGMpKTt9IC8vL21heGltdW0gb2YgMyBudW1iZXIKCnRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIHByaW50X3ZlY3RvcihUICZ2KXtpbnQgc3o9di5zaXplKCk7aWYoc3opY291dDw8dlswXTtmb3IoaW50IGkgPSAxOyBpIDwgc3o7IGkrKyljb3V0IDw8ICcgJzw8dltpXTtjb3V0PDwiXG4iO30vLy8gcHJpbnRzIGFsbCBlbGVtZW50cyBpbiBhIHZlY3RvcgoKYm9vbCBpc1Zvd2VsKGNoYXIgY2gpeyBjaD10b3VwcGVyKGNoKTsgaWYoY2g9PSdBJ3x8Y2g9PSdVJ3x8Y2g9PSdJJ3x8Y2g9PSdPJ3x8Y2g9PSdFJykgcmV0dXJuIHRydWU7IHJldHVybiBmYWxzZTt9Cgpib29sIGlzQ29uc29uYW50KGNoYXIgY2gpe2lmIChpc2FscGhhKGNoKSAmJiAhaXNWb3dlbChjaCkpIHJldHVybiB0cnVlOyByZXR1cm4gZmFsc2U7fQoKdGVtcGxhdGUgPGNsYXNzIFI+IFIgSm9zZXBodXMoUiBuLFIgayl7UiBhbnM9MTtmb3IoUiBpPTI7aTw9bjtpKyspYW5zPShhbnMray0xKSVpKzE7cmV0dXJuIGFuczt9Cgp0ZW1wbGF0ZSA8Y2xhc3MgUj4gUiB0b2l0ZW50X1BoaTIoUiBhKXtSIHJlc3VsdCA9IGE7Zm9yKFIgaT0yO2kqaTw9YTtpKyspe2lmKGElaT09MCkgcmVzdWx0PXJlc3VsdC1yZXN1bHQvaTt3aGlsZShhJWk9PTApIGE9YS9pO31pZihhPjEpIHJlc3VsdD1yZXN1bHQtcmVzdWx0L2E7cmV0dXJuIHJlc3VsdDt9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBBbmdsZShUIHgxLFQgeTEsVCB4MiwgVCB5Mil7IHJldHVybiBhdGFuKCBkb3VibGUoeTEteTIpIC8gZG91YmxlKHgxLXgyKSk7fQoKCi8vbmFtZXNwYWNlIGRlYnVnewovLyAgICBpbnQgc3VtKCl7cmV0dXJuIDA7fQovLyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lLi4uIEFyZ3M+IFQgc3VtKFQgYSxBcmdzLi4uIGFyZ3MpIHtyZXR1cm4gYStzdW0oYXJncy4uLik7fQovLyAgICB2b2lkIHByaW50KCl7Y291dDw8IlxuIjtyZXR1cm47fXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+dm9pZCBwcmludChUIGEsQXJncy4uLiBhcmdzKXtjb3V0PDxhPDwiICI7cHJpbnQoYXJncy4uLik7fQovL30KCgovKipEaXJlY3Rpb24qKi8KLy8vaW50IGR4WzhdID0gezAsIDEsIDEsIDEsIDAsIC0xLCAtMSwgLTF9O2ludCBkeVs4XSA9IHsxLCAxLCAwLCAtMSwgLTEsIC0xLCAwLCAxfTsgLy8vOCBEaXJlY3Rpb24KLy8vaW50IGR4WzRdID0gezEsIDAsIC0xLCAwfTtpbnQgZHlbNF0gPSB7MCwgMSwgMCwgLTF9OyAvLy80IERpcmVjdGlvbgovLy9pbnQgZHhbXT17MiwxLC0xLC0yLC0yLC0xLDEsMn07aW50IGR5W109ezEsMiwyLDEsLTEsLTIsLTIsLTF9Oy8vL0tuaWdodCBEaXJlY3Rpb24KLy8vaW50IGR4W109ey0xLC0xLCswLCsxLCsxLCswfTtpbnQgZHlbXT17LTEsKzEsKzIsKzEsLTEsLTJ9OyAvLy9IZXhhZ29uYWwgRGlyZWN0aW9uCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKkVuZCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNkZWZpbmUgbXhuIDMwMDAwOQovLyNkZWZpbmUgbW9kCmxsIGFbbXhuXTsKCmludCBtYWluKCkKeyAvL2ZyZW9wZW4oImxhcmdlaW5wdXQudHh0IiwiciIsc3RkaW4pOwovL2ZyZW9wZW4oImxhcmdlb3V0cHV0LnR4dCIsInciLHN0ZG91dCk7CiAgICBfXzsKCiAgICBsbCBULHQ7CiAgICBsbCBuOwogICAgbGwgaSxqLGs7CiAgICBsbCBhbnM9MDsKCiAgICBjaW4+PlQ7CiAgICBmb3IodD0xO3Q8PVQ7dCsrKXsKICAgIGNpbj4+bjsKICAgIGZvcihpPTE7aTw9bjtpKyspewogICAgICAgIGNpbj4+YVtpXTsKICAgIH0KCiAgICBsbCBtb2Q9MTAwMDAwMDAwN0xMOwogICAgc29ydChhKzEsYSsxK24pOwogICAgZm9yKGk9MTtpPD1uO2krKyl7CiAgICAgICAgYW5zKz0oYVtpXSpiaWdfbW9kKDJsbCxpLTFsbCxtb2QpK21vZCklbW9kOwogICAgICAgIGFucz0oYW5zLWFbaV0qYmlnX21vZCgybGwsbi1pLG1vZCkrbW9kKSVtb2Q7CiAgICB9CgogICAgY291dDw8IkNhc2UgIyI8PHQ8PCI6ICI7CiAgICBjb3V0PDwoYW5zK21vZCklbW9kPDwiXG4iOwogICAgfQp9CgoK