#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+5,mod=1e9+7;
int n,t;
int A[N],fac[N],inv_fac[N],pre[N],suf[N];
int pow(int x,int y)
{
if(y==0) return 1ll;
int tmp=pow(x,y/2);
if(y&1) return 1ll*tmp*tmp%mod*x%mod;
else return 1ll*tmp*tmp%mod;
}
void calc()
{
fac[0]=1;
for(int a=1;a<=200000;a++){
fac[a]=1ll*fac[a-1]*a%mod;
}
inv_fac[200000]=pow(fac[200000],mod-2);
for(int a=200000-1;a>=0;a--){
inv_fac[a]=1ll*inv_fac[a+1]*(a+1)%mod;
}
}
signed main()
{
ios_base::sync_with_stdio(false); cin.tie(0);
calc();
cin>>n;
for(int a=0;a<=n;a++){
cin>>A[a];
}
cin>>t;
pre[0]=1;
for(int a=0;a<=n-1;a++){
pre[a+1]=1ll*pre[a]*(t-a)%mod;
}
suf[n+1]=1;
for(int a=n;a>=0;a--){
suf[a]=1ll*suf[a+1]*(t-a)%mod;
}
int sum=0;
for(int a=0;a<=n;a++){
int res=A[a];
res=1ll*res*pre[a]%mod;
res=1ll*res*suf[a+1]%mod;
res=1ll*res*inv_fac[n-a]%mod;
res=1ll*res*inv_fac[a]%mod;
if((n-a) & 1) sum-=res;
else sum+=res;
sum%=mod;
}
sum+=mod;
sum%=mod;
cout<<sum;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCmNvbnN0IGludCBOPTFlNis1LG1vZD0xZTkrNzsKaW50IG4sdDsKaW50IEFbTl0sZmFjW05dLGludl9mYWNbTl0scHJlW05dLHN1ZltOXTsKaW50IHBvdyhpbnQgeCxpbnQgeSkKewogICAgaWYoeT09MCkgcmV0dXJuIDFsbDsKICAgIGludCB0bXA9cG93KHgseS8yKTsKICAgIGlmKHkmMSkgcmV0dXJuIDFsbCp0bXAqdG1wJW1vZCp4JW1vZDsKICAgIGVsc2UgcmV0dXJuIDFsbCp0bXAqdG1wJW1vZDsKfQp2b2lkIGNhbGMoKQp7CiAgICBmYWNbMF09MTsKICAgIGZvcihpbnQgYT0xO2E8PTIwMDAwMDthKyspewogICAgICAgIGZhY1thXT0xbGwqZmFjW2EtMV0qYSVtb2Q7CiAgICB9CiAgICBpbnZfZmFjWzIwMDAwMF09cG93KGZhY1syMDAwMDBdLG1vZC0yKTsKICAgIGZvcihpbnQgYT0yMDAwMDAtMTthPj0wO2EtLSl7CiAgICAgICAgaW52X2ZhY1thXT0xbGwqaW52X2ZhY1thKzFdKihhKzEpJW1vZDsKICAgIH0KfQpzaWduZWQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOwogICAgY2FsYygpOwogICAgY2luPj5uOwogICAgZm9yKGludCBhPTA7YTw9bjthKyspewogICAgICAgIGNpbj4+QVthXTsKICAgIH0KICAgIGNpbj4+dDsKICAgIHByZVswXT0xOwogICAgZm9yKGludCBhPTA7YTw9bi0xO2ErKyl7CiAgICAgICAgcHJlW2ErMV09MWxsKnByZVthXSoodC1hKSVtb2Q7CiAgICB9CiAgICBzdWZbbisxXT0xOwogICAgZm9yKGludCBhPW47YT49MDthLS0pewogICAgICAgIHN1ZlthXT0xbGwqc3VmW2ErMV0qKHQtYSklbW9kOwogICAgfQogICAgaW50IHN1bT0wOwogICAgZm9yKGludCBhPTA7YTw9bjthKyspewogICAgICAgIGludCByZXM9QVthXTsKICAgICAgICByZXM9MWxsKnJlcypwcmVbYV0lbW9kOwogICAgICAgIHJlcz0xbGwqcmVzKnN1ZlthKzFdJW1vZDsKICAgICAgICByZXM9MWxsKnJlcyppbnZfZmFjW24tYV0lbW9kOwogICAgICAgIHJlcz0xbGwqcmVzKmludl9mYWNbYV0lbW9kOwogICAgICAgIGlmKChuLWEpICYgMSkgc3VtLT1yZXM7CiAgICAgICAgZWxzZSBzdW0rPXJlczsKICAgICAgICBzdW0lPW1vZDsKICAgIH0KICAgIHN1bSs9bW9kOwogICAgc3VtJT1tb2Q7CiAgICBjb3V0PDxzdW07Cn0K