#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5, Mo = 1e9 + 7;
int pwr(int x, int y) {
  int z = 1;
  for (; y; y >>= 1, x = (long long)x * x % Mo)
    if (y & 1) z = (long long)z * x % Mo;
  return z;
}
int k, a, b, ans, f[N][N];
int main() {
  scanf("%d%d%d", &k, &a, &b);
  int p = (long long)a * pwr(a + b, Mo - 2) % Mo,
      q = (long long)b * pwr(a + b, Mo - 2) % Mo;
  for (int i = k; i >= 0; i--)
    for (int j = k; j >= 0; j--)
      if (i + j >= k)
        f[i][j] = ((long long)p * pwr(Mo + 1 - p, Mo - 2) + j) % Mo;
      else {
        if (i + j > 0) {
          f[i][j] = (long long)f[i][j + 1] * p % Mo;
          (f[i][j] += (long long)(f[i + j][j] + j) * q % Mo) %= Mo;
        } else
          f[i][j] =
              (long long)f[i][j + 1] * p % Mo * pwr(Mo + 1 - q, Mo - 2) % Mo;
      }
  printf("%d\n", f[0][0]);
  return 0;
}
