#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-10;
const double PI = acos(-1.0);
const auto INF = 0x3f3f3f3f;
int dcmp(double x) {
  if (fabs(x) < eps) return 0;
  return x < 0 ? -1 : 1;
}
const int MAXN = 1005;
const long long MOD = 1e9 + 7;
long long dp[MAXN][MAXN];
long long qpow(long long a, long long b) {
  long long ret = 1;
  while (b) {
    if (b & 1) ret = ret * a % MOD;
    a = a * a % MOD;
    b >>= 1;
  }
  return ret;
}
long long inv(long long t) { return qpow(t, MOD - 2); }
int main() {
  int n;
  long long pa, push_back;
  scanf("%d%lld%lld", &n, &pa, &push_back);
  long long t = pa + push_back;
  pa = pa * inv(t) % MOD;
  push_back = push_back * inv(t) % MOD;
  long long p = pa * inv(push_back) % MOD;
  for (int i = n; i >= 0; i--) {
    for (int j = n; j >= 0; j--) {
      if (i + j >= n)
        dp[i][j] = (i + j + p) % MOD;
      else
        dp[i][j] =
            (dp[i + 1][j] * pa % MOD + dp[i][i + j] * push_back % MOD) % MOD;
    }
  }
  printf("%lld\n", dp[1][0]);
  return 0;
}
