Problem:
Score : 500 points

Problem Statement

Takahashi and Aoki will play a game. They will repeatedly play it until one of them have N wins in total.

When they play the game once, Takahashi wins with probability A %, Aoki wins with probability B %, and the game ends in a draw (that is, nobody wins) with probability C %.
Find the expected number of games that will be played, and print it as follows.

We can represent the expected value as P/Q with coprime integers P and Q.
Print the integer R between 0 and 10^9+6 (inclusive) such that R \times Q \equiv P\pmod {10^9+7}.
(Such an integer R always uniquely exists under the constraints of this problem.)

Constraints

1 \leq N \leq 100000

0 \leq A,B,C \leq 100

1 \leq A+B

A+B+C=100

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N A B C

Output

Print the expected number of games that will be played, in the manner specified in the statement.

Sample Input 1

1 25 25 50

Sample Output 1

2

Since N=1, they will repeat the game until one of them wins.
The expected number of games played is 2.

Sample Input 2

4 50 50 0

Sample Output 2

312500008

C may be 0.

Sample Input 3

1 100 0 0

Sample Output 3

1

B may also be 0.

Sample Input 4

100000 31 41 28

Sample Output 4

104136146

Solution in Ruby (2.7.1) (judge verdict: Wrong Answer)

MOD = 10 ** 9 + 7

n, a, b, c = $stdin.readline.chomp.split.map(&:to_i)
m = [100, 2 * n].max
inv = Array.new(m + 1, 0)
inv[0] = 1
fact = Array.new(m + 1, 0)
fact[0] = 1
fact_inv = Array.new(m + 1, 0)
fact_inv[0] = 1

m.times do |i|
  if i == 0
    inv[i + 1] = 1
  else
    inv[i + 1] = (- inv[MOD % (i + 1)] * (MOD / (i + 1))) % MOD
  end
end

1.step(m) do |i|
  fact[i] = (fact[i - 1] * i) % MOD
  fact_inv[i] = (fact_inv[i - 1] * inv[i]) % MOD
end

pow = Hash.new
pow[a] = []
pow[b] = []
[a, b].uniq.each do |e|
  (n + 1).times do |i|
    if i == 0
      pow[e] << 1
    else
      y = ((pow[e][i >> 1] ** 2) * (e ** (i & 1))) % MOD
      pow[e] << y
    end
  end
end

res = 0
n.times do |i|
  e = (fact[n + i - 1] * fact_inv[n - 1] * fact_inv[i]) % MOD
  e = (e * (pow[a][n] * pow[b][i] + pow[b][n] * pow[a][i]) * (n + i)) % MOD
  res = (res + e) % MOD
end
puts (res * 100.pow((n - 1) * (MOD - 2), MOD) * inv[100 - c]) % MOD