#include <bits/stdc++.h>
const int MOD = 1e9 + 7;
const int MAXN = 1000 + 10;
int k, pa, pb;
inline int mul(int a, int b) { return 1ll * a * b % MOD; }
int pwr(int base, int exp) {
  int ans = 1;
  while (exp) {
    if (exp & 1) ans = mul(ans, base);
    base = mul(base, base);
    exp >>= 1;
  }
  return ans;
}
void add(int &a, int b) { a = (a + b) % MOD; }
int sub(int a, int b) { return (a - b + MOD) % MOD; }
namespace solver1 {
int f[MAXN][MAXN], g[MAXN][MAXN];
void main() {
  int a = mul(pa, pwr(pa + pb, MOD - 2)), b = mul(pb, pwr(pa + pb, MOD - 2));
  int ans = 0;
  g[1][0] = a;
  for (int i = 1; i < k; i++) {
    for (int j = 0; j < k; j++) {
      add(f[i + 1][j], mul(f[i][j], a));
      add(g[i + 1][j], mul(g[i][j], a));
      if (j + i < k) {
        add(f[i][j + i], mul((f[i][j] + mul(i, g[i][j])) % MOD, b));
        add(g[i][j + i], mul(g[i][j], b));
      } else
        add(ans, mul((f[i][j] + mul(i, g[i][j])) % MOD, b));
    }
  }
  for (int j = 0; j < k; j++) {
    add(ans, mul(b, mul(mul(g[k][j], k) + f[k][j], pwr(b, MOD - 2))));
    add(ans, mul(mul(g[k][j], b), mul(mul(a, pwr(sub(1, a), MOD - 2)),
                                      pwr(sub(1, a), MOD - 2))));
  }
  ans = mul(ans, mul(1, pwr(sub(1, b), MOD - 2)));
  printf("%d", ans);
}
}  // namespace solver1
int main() {
  scanf("%d%d%d", &k, &pa, &pb);
  solver1::main();
}
