#include <bits/stdc++.h>
using namespace std;
int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
int k;
long long pa, pb, p1, p2, f[1005][2005], bin[2005];
long long Pow(long long x, long long y) {
  long long ans = 1;
  while (y) {
    if (y & 1) ans = ans * x % 1000000007;
    x = x * x % 1000000007;
    y /= 2;
  }
  return ans;
}
long long ans = 0;
int main() {
  k = read();
  pa = read();
  pb = read();
  long long inv = Pow(pa + pb, 1000000007 - 2);
  p1 = pa * inv % 1000000007;
  p2 = pb * inv % 1000000007;
  long long p3 = Pow(p2, 1000000007 - 2) % 1000000007;
  f[1][0] = 1;
  for (int i = 1; i <= k; i++) {
    for (int j = 0; j <= k; j++)
      if (f[i][j] != 0) {
        if (i + j < k) {
          f[i + 1][j] = (f[i + 1][j] + f[i][j] * p1 % 1000000007) % 1000000007;
          f[i][i + j] = (f[i][i + j] + f[i][j] * p2 % 1000000007) % 1000000007;
        } else {
          if (j == k)
            ans = (ans + f[i][j] * j % 1000000007) % 1000000007;
          else if (j < k) {
            ans =
                (ans + f[i][j] * (i + j + p1 * p3 % 1000000007) % 1000000007) %
                1000000007;
          }
        }
      }
  }
  printf("%lld\n", ans % 1000000007);
  return 0;
}
