#include <bits/stdc++.h>
using namespace std;
long long expo(long long a, long long n, long long mod) {
  long long ans = 1;
  while (n) {
    if (n & 1LL) ans = (ans * a) % mod;
    n >>= 1;
    a = (a * a) % mod;
  }
  return ans;
}
long long revMod(long long a, long long mod) { return expo(a, mod - 2, mod); }
const int MOD = 1000000007;
const int K = 1002;
int dp[K][K];
int main() {
  ios_base::sync_with_stdio(0);
  int k, p_a, p_b;
  cin >> k >> p_a >> p_b;
  int revSum = revMod(p_a + p_b, MOD);
  int alpha = ((long long)p_a * revSum) % MOD;
  int beta = ((long long)p_b * revSum) % MOD;
  int coef = revMod((MOD + 1 - alpha) % MOD, MOD);
  int coef2 = ((long long)coef * coef) % MOD;
  coef2 = ((long long)coef2 * alpha) % MOD;
  auto getValue = [&](int t, int numA) -> int {
    if (t >= k) {
      return t;
    } else if (numA >= k) {
      int x = t + numA;
      long long ans = 0;
      ans = (ans + (long long)coef * x) % MOD;
      ans = (ans + coef2) % MOD;
      ans = (ans * beta) % MOD;
      return ans;
    } else {
      return dp[t][numA];
    }
  };
  for (int t = (k - 1); t >= (0); --t)
    for (int numA = (k - 1); numA >= (1); --numA) {
      dp[t][numA] = ((long long)alpha * getValue(t, numA + 1) +
                     (long long)beta * getValue(t + numA, numA)) %
                    MOD;
    }
  long long ans = getValue(0, 1);
  ans = (ans * alpha) % MOD;
  ans = (ans * revMod((MOD + 1 - beta) % MOD, MOD)) % MOD;
  cout << ans;
  return 0;
}
