#include<bits/stdc++.h>
using namespace std;
//defines
#define openin freopen("input.txt","r",stdin)
#define openout freopen("output.txt","w",stdout)
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define ll long long
#define int long long
#define mod 1000000007
#define rep(i,x,y) for (__typeof(x) i=x;(x<=y?i<=y:i>=y);i=(x<=y?i+1:i-1))
#define all(c) (c).begin(),(c).end()
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
int n ;
int arr[1000006] ;
int p[1000006] ;
int32_t main()
{
fast;
cin >> n ;
rep(i,1,n) cin >> arr[i] ;
p[0] = 1ll ;
rep(i,1,1000000)
{
p[i] = p[i-1]*2ll ;
p[i] %= mod ;
}
int ans = 0 ;
for(int k = 1 ; k <= n/2 ; k++ )
{
int temp = p[n] + p[n-1] - p[n-k] - p[k-1] ;
temp %= mod ;
int temp2 = arr[k] + arr[n+1-k] ;
temp2 %= mod ;
temp = (temp * temp2) ;
temp %= mod ;
ans += temp ;
ans %= mod ;
}
if(n%2)
{
int i = (n+1)/2 ;
int temp = p[n] + p[n-1] - p[n-i] - p[i-1] ;
temp %= mod ;
temp *= arr[i] ;
temp %= mod ;
ans += temp ;
ans %= mod ;
}
cout << ans << '\n' ;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vZGVmaW5lcwojZGVmaW5lIG9wZW5pbiBmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbikKI2RlZmluZSBvcGVub3V0IGZyZW9wZW4oIm91dHB1dC50eHQiLCJ3IixzdGRvdXQpCiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKDApO2NvdXQudGllKDApCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiNkZWZpbmUgcmVwKGkseCx5KSBmb3IgKF9fdHlwZW9mKHgpIGk9eDsoeDw9eT9pPD15Omk+PXkpO2k9KHg8PXk/aSsxOmktMSkpCiNkZWZpbmUgYWxsKGMpIChjKS5iZWdpbigpLChjKS5lbmQoKQojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCmludCBuIDsKaW50IGFyclsxMDAwMDA2XSA7CmludCBwWzEwMDAwMDZdIDsKaW50MzJfdCBtYWluKCkKewogICAgZmFzdDsKICAgIGNpbiA+PiBuIDsKICAgIHJlcChpLDEsbikgY2luID4+IGFycltpXSA7CiAgICBwWzBdID0gMWxsIDsKICAgIHJlcChpLDEsMTAwMDAwMCkKICAgIHsKICAgICAgICBwW2ldID0gcFtpLTFdKjJsbCA7CiAgICAgICAgcFtpXSAlPSBtb2QgOwogICAgfQogICAgaW50IGFucyA9IDAgOwogICAgZm9yKGludCBrID0gMSA7IGsgPD0gbi8yIDsgaysrICkKICAgIHsKICAgICAgICBpbnQgdGVtcCA9IHBbbl0gKyBwW24tMV0gLSBwW24ta10gLSBwW2stMV0gOwogICAgICAgIHRlbXAgJT0gbW9kIDsKICAgICAgICBpbnQgdGVtcDIgPSBhcnJba10gKyBhcnJbbisxLWtdIDsKICAgICAgICB0ZW1wMiAlPSBtb2QgOwogICAgICAgIHRlbXAgPSAodGVtcCAqIHRlbXAyKSA7CiAgICAgICAgdGVtcCAlPSBtb2QgOwogICAgICAgIGFucyArPSB0ZW1wIDsKICAgICAgICBhbnMgJT0gbW9kIDsKICAgIH0KICAgIGlmKG4lMikKICAgIHsKICAgICAgICBpbnQgaSA9IChuKzEpLzIgOwogICAgICAgIGludCB0ZW1wID0gcFtuXSArIHBbbi0xXSAtIHBbbi1pXSAtIHBbaS0xXSA7CiAgICAgICAgdGVtcCAlPSBtb2QgOwogICAgICAgIHRlbXAgKj0gYXJyW2ldIDsKICAgICAgICB0ZW1wICU9IG1vZCA7CiAgICAgICAgYW5zICs9IHRlbXAgOwogICAgICAgIGFucyAlPSBtb2QgOwogICAgfQogICAgY291dCA8PCBhbnMgPDwgJ1xuJyA7CiAgICByZXR1cm4gMDsKfQo=