#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define siz(x) (int)(x.size())
#define all(x) x.begin(), x.end()
#define debug_arr(x,len) for(int _=1; _<=len; _++) cout<<x[_]<<" "; cout<<'\n';
#define debug(x) cout<<'\n'<<#x<<": "<<x<<'\n';
const int maxN = 1e6+5, mod = 1e9+7;
int n, t, f[maxN], fact[maxN], inv_fact[maxN], pref[maxN], suff[maxN];
long long mux(int x, int y)
{
if(y == 0) return 1;
int tmp = mux(x, y/2);
if(y & 1) return (1ll * (tmp*tmp) % mod * x % mod);
else return (1ll * (tmp*tmp) % mod);
}
void prep()
{
fact[0] = 1;
for(int i=1; i<=2e5; i+=1) fact[i] = 1ll * fact[i-1] * i % mod;
inv_fact[200000] = mux(fact[200000], mod-2);
for(int i=2e5-1; i>=0; i-=1) inv_fact[i] = 1ll * inv_fact[i+1] * (i+1) % mod;
}
void solve()
{
}
int32_t main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
prep();
cin>>n;
for(int i=0; i<=n; i+=1) cin>>f[i];
cin>>t;
pref[0] = 1;
for(int i=0; i<=n-1; i+=1) pref[i+1] = 1ll * pref[i] * (t-i) % mod;
suff[n+1] = 1;
for(int i=n; i>=0; i-=1) suff[i] = 1ll * suff[i+1] * (t-i) % mod;
int ans = 0;
for(int i=0; i<=n; i+=1)
{
int res = f[i];
res = 1ll * res * pref[i] % mod;
res = 1ll * res * suff[i+1] % mod;
res = 1ll * res * inv_fact[n-i] % mod;
res = 1ll * res * inv_fact[i] % mod;
if((n - i) & 1) ans -= res;
else ans += res;
ans %= mod;
}
ans += mod; ans %= mod;
cout<<ans<<'\n';
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzaXooeCkgKGludCkoeC5zaXplKCkpCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGRlYnVnX2Fycih4LGxlbikgZm9yKGludCBfPTE7IF88PWxlbjsgXysrKSBjb3V0PDx4W19dPDwiICI7IGNvdXQ8PCdcbic7CiNkZWZpbmUgZGVidWcoeCkgY291dDw8J1xuJzw8I3g8PCI6ICI8PHg8PCdcbic7CmNvbnN0IGludCBtYXhOID0gMWU2KzUsIG1vZCA9IDFlOSs3OwoKaW50IG4sIHQsIGZbbWF4Tl0sIGZhY3RbbWF4Tl0sIGludl9mYWN0W21heE5dLCBwcmVmW21heE5dLCBzdWZmW21heE5dOwoKbG9uZyBsb25nIG11eChpbnQgeCwgaW50IHkpCnsKCWlmKHkgPT0gMCkgcmV0dXJuIDE7CglpbnQgdG1wID0gbXV4KHgsIHkvMik7CglpZih5ICYgMSkgcmV0dXJuICgxbGwgKiAodG1wKnRtcCkgJSBtb2QgKiB4ICUgbW9kKTsKCWVsc2UgcmV0dXJuICgxbGwgKiAodG1wKnRtcCkgJSBtb2QpOwp9Cgp2b2lkIHByZXAoKQp7CglmYWN0WzBdID0gMTsKCWZvcihpbnQgaT0xOyBpPD0yZTU7IGkrPTEpIGZhY3RbaV0gPSAxbGwgKiBmYWN0W2ktMV0gKiBpICUgbW9kOwoJaW52X2ZhY3RbMjAwMDAwXSA9IG11eChmYWN0WzIwMDAwMF0sIG1vZC0yKTsKCWZvcihpbnQgaT0yZTUtMTsgaT49MDsgaS09MSkgaW52X2ZhY3RbaV0gPSAxbGwgKiBpbnZfZmFjdFtpKzFdICogKGkrMSkgJSBtb2Q7Cn0KCnZvaWQgc29sdmUoKQp7CgkKfQoKaW50MzJfdCBtYWluKCkKewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsKCXByZXAoKTsKCWNpbj4+bjsKCWZvcihpbnQgaT0wOyBpPD1uOyBpKz0xKSBjaW4+PmZbaV07CgljaW4+PnQ7CglwcmVmWzBdID0gMTsKCWZvcihpbnQgaT0wOyBpPD1uLTE7IGkrPTEpIHByZWZbaSsxXSA9IDFsbCAqIHByZWZbaV0gKiAodC1pKSAlIG1vZDsKCXN1ZmZbbisxXSA9IDE7Cglmb3IoaW50IGk9bjsgaT49MDsgaS09MSkgc3VmZltpXSA9IDFsbCAqIHN1ZmZbaSsxXSAqICh0LWkpICUgbW9kOwoJaW50IGFucyA9IDA7Cglmb3IoaW50IGk9MDsgaTw9bjsgaSs9MSkKCXsKCQlpbnQgcmVzID0gZltpXTsKCQlyZXMgPSAxbGwgKiByZXMgKiBwcmVmW2ldICUgbW9kOwoJCXJlcyA9IDFsbCAqIHJlcyAqIHN1ZmZbaSsxXSAlIG1vZDsKCQlyZXMgPSAxbGwgKiByZXMgKiBpbnZfZmFjdFtuLWldICUgbW9kOwoJCXJlcyA9IDFsbCAqIHJlcyAqIGludl9mYWN0W2ldICUgbW9kOwoJCWlmKChuIC0gaSkgJiAxKSBhbnMgLT0gcmVzOwoJCWVsc2UgYW5zICs9IHJlczsKCQlhbnMgJT0gbW9kOwkJCgl9CglhbnMgKz0gbW9kOyBhbnMgJT0gbW9kOwoJY291dDw8YW5zPDwnXG4nOwp9