#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int maxn = 1e3 + 7;
int k, A, B;
long long pa, push_back, invb, f[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 solve(long long n, long long k) {
  if (k <= 0) return 0;
  if (n >= k) return (n + pa * invb) % MOD;
  long long &ret = f[n][k];
  if (ret != -1) return ret;
  long long tmp1 = pa * solve(n + 1, k);
  long long tmp2 = push_back * solve(n, k - n) + push_back * n;
  return ret = (tmp1 + tmp2) % MOD;
}
int main() {
  while (scanf("%d%d%d", &k, &A, &B) != EOF) {
    pa = qpow(A + B, MOD - 2) * A % MOD;
    push_back = qpow(A + B, MOD - 2) * B % MOD;
    invb = qpow(push_back, MOD - 2);
    (memset(f, -1, sizeof(f)));
    printf("%lld\n", solve(1, k));
  }
  return 0;
}
