#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;

typedef long long ll;
typedef vector <ll> v_ll;
typedef vector <vector <ll> > vv_ll;
typedef vector < pair <ll,ll> > vp_ll;
typedef pair <ll,ll> p_ll;

bool TEST=false;

void show(){
  if (TEST){cout << endl;}
}

void show(string x){
  if (TEST){cout << x;}
}

void show(string x,bool enter){
  if (TEST){
    if (enter) cout << "<#> " << x << endl;
    else cout << x;
  }
}

void show(ll x){
  if (TEST){cout << x;}
}

void show(ll x,bool enter){
  if (TEST){
    if (enter) cout << "<#> " << x << endl;
    else cout << x;
  }
}


void show(p_ll p){
  if (TEST){
    cout << "{ ";
    show(p.first);
    cout << " ";
    show(p.second);
    cout << " }";
  }
}

void show(v_ll v){
  if (TEST){
    cout << "<begin> ";
    for (ll i=0;i<v.size();i++){
      show(v[i]); cout << " ";
    }cout <<"<end>"<< endl;
  }
}

void show(vv_ll v){
  if (TEST){
    cout << "//////////" << endl;
    for (ll i=0;i<v.size();i++){
      show(v[i]); cout << endl;
    }
  }
}

void show(vp_ll v){
  if (TEST){
    cout << "//////////" << endl;
    for (ll i=0;i<v.size();i++){
      show(v[i]); cout << endl;
    }
  }
}


ll MOD=1000000007;

ll mod(ll x, ll n){
  ll ret=x%n;
  if (ret<0)ret+=n;
  return ret;
}
ll mod_inv(ll x, ll n){
  ll y = x,z = n-2, ret=1;
  y=mod(y,n);
  while (z>0){
    if(z%2==1) ret=mod(ret*y,n);
    y=mod(y*y,n);
    z/=2;
  }
  return ret;
}
ll mod_pow(ll x,ll a,ll n){
  ll y = x,z = a,ret=1;
  y=mod(y,n);
  if (z<0)z=-z;
  while (z>0){
    if(z%2==1) ret=mod(ret*y,n);
    y=mod(y*y,n);
    z/=2;
  }
  if (a<0) ret=mod_inv(ret,n);
  return ret;
}
v_ll mod_nck(ll n,ll nm){
  v_ll nck(n+1,0);
  nck[0]=1;
  for (ll i=1;i<=n;i++){
    nck[i]=mod(nck[i-1]*(n+1-i),nm);
    nck[i]=mod(nck[i]*mod_inv(i,nm),nm);
  }
  return nck;
}


ll mod(ll x){
  ll n=MOD;
  ll ret=x%n;
  if (ret<0)ret+=n;
  return ret;
}
ll mod_inv(ll x){
  ll n=MOD;
  ll y = x,z = n-2, ret=1;
  y=mod(y,n);
  while (z>0){
    if(z%2==1) ret=mod(ret*y,n);
    y=mod(y*y,n);
    z/=2;
  }
  return ret;
}
ll mod_pow(ll x,ll a){
  ll n=MOD;
  ll y = x,z = a,ret=1;
  y=mod(y,n);
  if (z<0)z=-z;
  while (z>0){
    if(z%2==1) ret=mod(ret*y,n);
    y=mod(y*y,n);
    z/=2;
  }
  if (a<0) ret=mod_inv(ret,n);
  return ret;
}
v_ll mod_nck(ll n){
  ll nm=MOD;
  v_ll nck(n+1,0);
  nck[0]=1;
  for (ll i=1;i<=n;i++){
    nck[i]=mod(nck[i-1]*(n+1-i),nm);
    nck[i]=mod(nck[i]*mod_inv(i,nm),nm);
  }
  return nck;
}

ll mod_exc(ll k){
  ll n=MOD;
  ll ret=1;
  for (ll i=1;i<=k;i++){
    ret*=i;
    ret%=n;
  }
  return ret;
}

ll N,A,B,C;
ll X,Y;
v_ll PA,PB;
int main(){
  //TEST=true;
  MOD=1000000007;
  cin >> N >> A >> B >> C;
  PA.assign(N+10,0);
  PB.assign(N+10,0);
  PA[0]=mod(mod_pow(A,N)*mod_pow(A+B,N-1));
  PB[0]=mod(mod_pow(B,N)*mod_pow(A+B,N-1));
  for (ll i=1;i<N;i++){
    PA[i]=PA[i-1];
    PA[i]=mod(PA[i]*B);
    PA[i]=mod(PA[i]*mod_inv(A+B));
    PA[i]=mod(PA[i]*(N-1+i));
    PA[i]=mod(PA[i]*mod_inv(i));
    PB[i]=PB[i-1];
    PB[i]=mod(PB[i]*A);
    PB[i]=mod(PB[i]*mod_inv(A+B));
    PB[i]=mod(PB[i]*(N-1+i));
    PB[i]=mod(PB[i]*mod_inv(i));
  }
  X=0;
  for (ll i=0;i<N;i++){
    X+=mod(PA[i]*(N+i));
    X+=mod(PB[i]*(N+i));
    X=mod(X);
  }
  X=mod(X*100);

  Y=mod_pow(A+B,2*N);
  //show(mod(X*mod_inv(Y)),true);
  cout << mod(X*mod_inv(Y)) << endl;
}


Measured memory_bytes: 2424