def mod_inv(n: int, mod: int) -> int: return pow(n, mod-2, mod) class ModComb: def __init__(self, n: int, mod: int): fact = [0] * (n+1) fact[0] = 1 for i in range(1, n+1): fact[i] = i * fact[i-1] % mod ifact = [0] * (n+1) ifact[n] = pow(fact[n], mod-2, mod) for i in range(n, 0, -1): ifact[i-1] = ifact[i] * i % mod self.fact = fact self.ifact = ifact self.mod = mod def __call__(self, n: int, k: int) -> int: if n < 0 or k > n: return 0 return (self.fact[n] * self.ifact[k] % self.mod) * self.ifact[n-k] % self.mod MOD = 10**9 + 7 N, M, P = map(int, input().split()) V = list(map(int, input().split())) mcomb = ModComb(N+M, MOD) inv100 = mod_inv(100, MOD) p = (100 - P) * inv100 % MOD # 成功確率 q = P * inv100 % MOD # 失敗確率 pr = [0] * (N+1) for i in range(N): pr[i] = mcomb(i+M-1, i) * pow(p, i, MOD) * pow(q, M, MOD) pr[i] %= MOD s = 0 for i in range(N): s += pr[i] s %= MOD pr[N] = (1 - s) % MOD r_parsum = [0] * (N+1) r_parsum[N] = pr[N] for i in reversed(range(N)): r_parsum[i] = (r_parsum[i+1] + pr[i]) % MOD V.sort(reverse=True) ans = 0 for i in range(1, N+1): ans += V[i-1] * r_parsum[i] ans %= MOD print(ans)