#include #define rep(i,n) for(int i=0;i ; const int INF = 1e9; const int MOD = 1000000007; long long modpow(long long a, long long b,long long mod){ bitset<60> bit(b); string s = bit.to_string(); long long ret = 1; for (int i = 0;i< s.length(); ++i){ ret = (ret * ret) % mod; if(s[i]-'0') ret = (ret * a) % mod; } return ret; } long long inverse(long long x,long long mod){ return modpow(x,mod-2,mod); } int main(){ ll n,m,k,p,q; cin >> n >> m >> k >> p >> q; ll A = 0,B = 0; rep(i,m){ ll a;cin >> a; A = (A + a)%MOD; } rep(i,n-m){ ll b;cin >> b; B = (B + b)%MOD; } ll C = modpow(q,k,MOD); ll D = modpow(q-2*p+MOD,k,MOD); ll X = ((((A+B)%MOD) * C)%MOD + ((A-B+MOD)%MOD * D)%MOD)%MOD; ll Y = (2 * C)%MOD; ll R = (X * inverse(Y,MOD))%MOD; /*cout << A << endl; cout << B << endl; cout << C << endl; cout << D << endl; cout << X << endl; cout << Y << endl;*/ cout << R << endl; return 0; }