#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;
}
