#include <bits/stdc++.h>
using namespace std;
long long int k, pa, push_back;
long long int dp[1005][1005];
long long int sf[1005][1005];
long long int prea[1010], preins[1010];
long long int ins, ina, inb;
int solve(long long int ys, long long int xs) {
  if (dp[ys][xs] != -1) return dp[ys][xs];
  long long int& ret = dp[ys][xs];
  if (ys >= k) return ret = ys;
  ret = 0;
  if (xs == 0) {
    ret = 0;
    long long int cur = (push_back * ins) % 1000000007;
    long long int cur2 = 1;
    for (long long int r = 1; r <= 1004; ++r) {
      cur = (cur * pa) % 1000000007;
      cur = (cur * ins) % 1000000007;
      cur2 = (cur2 * pa) % 1000000007;
      cur2 = (cur2 * ins) % 1000000007;
      if (ys + r >= k) {
        long long int cc = (ys + r) % 1000000007;
        cc = (cc * cur2) % 1000000007;
        ret = (ret + cc) % 1000000007;
        cc = (cur * pa) % 1000000007;
        cc = (cc * (pa + push_back) % 1000000007) % 1000000007;
        cc = (cc * inb) % 1000000007;
        cc = (cc * inb) % 1000000007;
        ret = (ret + cc) % 1000000007;
        break;
      } else {
        ret = (ret + (solve(ys + r, xs + r) * 1LL * cur) % 1000000007) %
              1000000007;
      }
    }
    ret = (ret * 1LL * (pa + push_back) % 1000000007) % 1000000007;
    ret = (ret * 1LL * ina) % 1000000007;
    return ret;
  }
  solve(ys + 1, xs + 1);
  sf[ys][xs] = (pa * 1LL * sf[ys + 1][xs + 1]) % 1000000007;
  sf[ys][xs] = (ins * 1LL * sf[ys][xs]) % 1000000007;
  ret = 0;
  long long int cur = (push_back * ins) % 1000000007;
  long long int cur2 = 1;
  long long int r = max(0LL, k - ys - xs);
  cur = (cur * prea[r]) % 1000000007;
  cur = (cur * preins[r]) % 1000000007;
  cur2 = (cur2 * prea[r]) % 1000000007;
  cur2 = (cur2 * preins[r]) % 1000000007;
  long long int cc = (ys + r + xs) % 1000000007;
  cc = (cc * cur2) % 1000000007;
  ret = (ret + cc) % 1000000007;
  cc = (cur * pa) % 1000000007;
  cc = (cc * (pa + push_back) % 1000000007) % 1000000007;
  cc = (cc * inb) % 1000000007;
  cc = (cc * inb) % 1000000007;
  ret = (ret + cc) % 1000000007;
  if (r > 0) {
    solve(ys + xs, xs);
    long long int addi = (sf[ys + xs][xs] * push_back) % 1000000007;
    addi = (addi * ins) % 1000000007;
    ret = (ret + addi) % 1000000007;
  }
  sf[ys][xs] = (sf[ys][xs] + ret) % 1000000007;
  return ret;
}
long long int mod_pow(long long int base) {
  long long int ret = 1, exp = 1000000007 - 2;
  while (exp) {
    if (exp % 2) ret = (ret * base) % 1000000007;
    exp = exp >> 1;
    base = (base * base) % 1000000007;
  }
  return ret;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> k >> pa >> push_back;
  ina = mod_pow(pa);
  inb = mod_pow(push_back);
  ins = mod_pow(pa + push_back);
  for (long long int i = 0; i <= 1004; ++i)
    for (long long int j = 0; j <= 1004; ++j) dp[i][j] = -1;
  prea[0] = 1;
  for (long long int i = 1; i <= 1007; ++i)
    prea[i] = (prea[i - 1] * pa) % 1000000007;
  preins[0] = 1;
  for (long long int i = 1; i <= 1007; ++i)
    preins[i] = (preins[i - 1] * ins) % 1000000007;
  cout << solve(0, 0) << '\n';
}
