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.

Examples

Input

1 25 25 50


Output

2


Input

4 50 50 0


Output

312500008


Input

1 100 0 0


Output

1


Input

100000 31 41 28


Output

104136146
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
typedef vector<int> V;
const long long MOD=1000000007LL;
const long long INFL=1LL << 60;
const int INF=1<<29;

const int MAX = 220000;

long long fac[MAX], finv[MAX], inv[MAX];

// テーブルを作る前処理
void COMinit() {
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    inv[1] = 1;
    for (int i = 2; i < MAX; i++){
        fac[i] = fac[i - 1] * i % MOD;
        inv[i] = MOD - inv[MOD%i] * (MOD / i) % MOD; 
        finv[i] = finv[i - 1] * inv[i] % MOD;
    }
}

// 二項係数計算
long long COM(int n, int k){
    if (n < k) return 0;
    if (n < 0 || k < 0) return 0;
    return fac[n] * (finv[k] * finv[n - k] % MOD) % MOD;
}


int main() {
    // 前処理
    COMinit();

    ll N,A,B,C;
    cin >>N>>A>>B>>C;
    A=A*inv[100-C]%MOD;
    B=B*inv[100-C]%MOD;

    vector<ll> Apows(N+1),Bpows(N+1);
        
    Apows[0]=1;Bpows[0]=1;
    for(int i=1;i<=N;i++){
        Apows[i]=Apows[i-1]*A%MOD;
        Bpows[i]=Bpows[i-1]*B%MOD;
    }

    ll ans=0;
    for(ll i=N;i<2*N;i++){
        ans+=COM(i-1,N-1)*(Apows[N]*Bpows[i-N]%MOD+Apows[i-N]*Bpows[N]%MOD)%MOD*i%MOD;
        ans=ans%MOD;
    }
    ans=ans*100%MOD*inv[100-C]%MOD;
    cout<<ans<<endl;
    return 0;
}