#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9')
    x = (x << 3) + (x << 1) + (ch ^ 48), ch = getchar();
  return x * f;
}
long long k, pa, pb, f[1005][1005], ans = 0;
long long _pow(long long x, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = (res * x) % 1000000007ll;
    x = (x * x) % 1000000007ll, b >>= 1;
  }
  return res;
}
long long inv(long long x) { return _pow(x, 1000000007ll - 2); }
signed main() {
  k = read(), pa = read(), pb = read();
  long long t = inv(pa + pb);
  pa = (pa * t) % 1000000007ll;
  pb = (pb * t) % 1000000007ll;
  f[1][0] = 1;
  for (long long i = 1; i < k; ++i) {
    for (long long j = 0; j < k; ++j) {
      f[i + 1][j] = (f[i + 1][j] + f[i][j] * pa % 1000000007ll) % 1000000007ll;
      if (i + j < k)
        f[i][i + j] =
            (f[i][i + j] + f[i][j] * pb % 1000000007ll) % 1000000007ll;
      else
        ans = (ans + (i + j) * f[i][j] % 1000000007ll * pb % 1000000007ll) %
              1000000007ll;
    }
  }
  t = inv(pb) % 1000000007ll;
  for (long long i = 0; i < k; ++i) {
    ans = (ans + f[k][i] * (k + i - 1 + t) % 1000000007ll) % 1000000007ll;
  }
  cout << ans;
  return 0;
}
