#include <bits/stdc++.h>
using namespace std;
long long fast_expo(long long n, long long m, long long md) {
  long long a = 1;
  while (m > 0) {
    if (m & 1) a = (a * n) % md;
    n = (n * n) % md;
    m /= 2;
  }
  return a % md;
}
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
long long rand_num(long long n) {
  long long random_number = uniform_int_distribution<long long>(0, n - 1)(rng);
  return random_number;
}
chrono::high_resolution_clock::time_point start;
chrono::high_resolution_clock::time_point cur_time;
long long p1_p2, p1, p2, k;
long long dp[2000][2000];
long long ans(int i, int j) {
  if (j >= k) return j;
  if (i + j >= k) return (i + j + p1_p2) % 1000000007LL;
  if (dp[i][j] != -1) return dp[i][j];
  long long ret = p1 * ans(i + 1, j) + p2 * ans(i, i + j);
  ret %= 1000000007LL;
  dp[i][j] = ret;
  return ret;
}
void solve_case() {
  cin >> k >> p1 >> p2;
  long long sum = p1 + p2;
  p1 *= fast_expo(sum, 1000000007LL - 2, 1000000007LL);
  p2 *= fast_expo(sum, 1000000007LL - 2, 1000000007LL);
  p1 %= 1000000007LL;
  p2 %= 1000000007LL;
  p1_p2 = p1 * fast_expo(p2, 1000000007LL - 2, 1000000007LL);
  memset(dp, -1, sizeof(dp));
  cout << ans(1, 0) << endl;
  ;
}
void precompute() {}
int main() {
  ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  chrono::high_resolution_clock::time_point start =
      chrono::high_resolution_clock::now();
  int T = 1;
  cout << fixed << setprecision(10);
  cerr << fixed << setprecision(5);
  precompute();
  for (int t = 1; t <= T; t++) {
    solve_case();
  }
  chrono::high_resolution_clock::time_point end =
      chrono::high_resolution_clock::now();
  long double time_spent =
      (chrono::duration_cast<chrono::duration<long double>>(end - start))
          .count();
  return 0;
}
