#include using namespace std; typedef long long ll; typedef pair P; #define DUMP(x) cout << #x << " = " << (x) << endl; #define FOR(i, m, n) for (ll i = m; i < n; i++) #define IFOR(i, m, n) for (ll i = n - 1; i >= m; i--) #define REP(i, n) FOR(i, 0, n) #define IREP(i, n) IFOR(i, 0, n) #define FOREACH(x, a) for (auto&(x) : (a)) #define ALL(v) (v).begin(), (v).end() #define SZ(x) ll(x.size()) const int MOD = 1000000007; ll modpow(ll a, ll b, ll m) { if (b == 0) return 1; ll ret; if (b % 2 == 0) { ll t = modpow(a, b / 2, m) % m; ret = t * t % m; } else { ll t = modpow(a, (b - 1) / 2, m) % m; ret = a * t % m * t % m; } ret %= m; return ret; } ll inv(ll a) { return modpow(a, MOD - 2, MOD); } int main() { ll N, M, K, p, q; cin >> N >> M >> K >> p >> q; M--; vector b(N); REP(i, N) { cin >> b[i]; } ll r = p * inv(q) % MOD; vector pr(N); REP(i, N) { ll t = 2 * ((MOD - r) % MOD) + 1 % MOD; ll p0 = i <= M ? 1 : 0; pr[i] = (modpow(t, K, MOD) * (p0 + ((MOD - inv(2)) % MOD)) % MOD) % MOD + inv(2) % MOD; } ll ans = 0; REP(i, N) { (ans += b[i] * pr[i] % MOD) %= MOD; } cout << ans << endl; }