#include <bits/stdc++.h>
using namespace std;
long long a[2000], b[2000], c[2000];
long long n, m, k, t, r, s, aux, rta;
long long pa, push_back;
long long dp[2000][2000];
long long proba;
long long probb;
long long invb;
long long expmod(long long b, long long e, long long m) {
  if (!e) return 1;
  long long q = expmod(b, e / 2, m);
  q = (q * q) % m;
  return e % 2 ? (b * q) % m : q;
}
long long inverso(long long x) { return expmod(x, 1000000007 - 2, 1000000007); }
long long f(long long ca, long long ck) {
  if (ck >= k) return ck;
  if (ca + ck >= k) return (ck + ca + (pa * invb)) % 1000000007;
  if (dp[ca][ck] != -1) return dp[ca][ck];
  dp[ca][ck] = ((f(ca + 1, ck) * proba) % 1000000007 +
                (f(ca, ca + ck) * probb) % 1000000007) %
               1000000007;
  return dp[ca][ck] % 1000000007;
}
int main() {
  while (cin >> k >> pa >> push_back) {
    memset(a, 0, sizeof(a));
    for (int i = 0; i < (2000); i++)
      for (int j = 0; j < (2000); j++) dp[i][j] = -1;
    proba = pa * inverso(push_back + pa) % 1000000007;
    probb = push_back * inverso(pa + push_back) % 1000000007;
    invb = inverso(push_back) % 1000000007;
    cout << f(1, 0) << endl;
  }
  return 0;
}
