#include <bits/stdc++.h>
using namespace std;
int __gcd(int x, int y) {
  if (!y) return x;
  return __gcd(y, x % y);
}
const long long linf = 1e18 + 5;
int mod = (int)1e9 + 7;
const int logN = 18;
const int inf = 1e9 + 9;
const int N = 2e5 + 6;
int pbbb, invsum, n, pa, push_back, k, x, y, z, dp[2001][1234], T, TN, pba,
    pbaa;
int FE(int x, int k) {
  if (!k) return 1;
  int t = FE(x, k / 2);
  if (k & 1) return (long long)t * t % mod * x % mod;
  return (long long)t * t % mod;
}
int mul(int x, int y) { return (long long)x * y % mod; }
int asldkal(int x, int y) { return x * (long long)FE(y, mod - 2) % mod; }
int f(int a, int left) {
  if (left <= 0) return n - left;
  if (a >= left) {
    int cur = n - left;
    return pbbb * (long long)((T + (long long)mul(a + cur, TN)) % mod) % mod;
  }
  int &r = dp[a][left];
  if (r != -1) return r;
  r = 0;
  r = mul(pbaa, f(a + 1, left));
  r = (r + mul(pbbb, f(a, left - a))) % mod;
  return r;
}
int main() {
  scanf("%d %d %d", &n, &pa, &push_back);
  k = n;
  pba = asldkal(push_back, pa);
  pbaa = asldkal(pa, pa + push_back);
  pbbb = asldkal(push_back, pa + push_back);
  T = asldkal(pbaa, (1 - pbaa + mod) * (long long)(1 - pbaa + mod) % mod);
  TN = asldkal(1, (1 - pbaa + mod));
  invsum = FE(push_back + pa, mod - 2);
  memset(dp, -1, sizeof dp);
  int xxx = f(1, n);
  cout << (asldkal(1, 1 - pbbb + mod) * (long long)pbaa % mod * xxx % mod)
       << '\n';
}
