#include <bits/stdc++.h>
using namespace std;
const long long maxn = 1100;
const long long mod = 1e9 + 7;
const long long inf = 1e9 + 500;
long long uuu = 99999999;
long long poww(long long a, long long b) {
  long long ans = 1;
  uuu--;
  while (b > 0) {
    uuu--;
    if (b & 1) {
      uuu--;
      ans *= a;
      uuu--;
      ans %= mod;
      uuu--;
    }
    uuu--;
    a *= a;
    uuu--;
    a %= mod;
    uuu--;
    b /= 2;
    uuu--;
  }
  uuu--;
  return ans;
  uuu--;
}
long long k, pa, push_back;
long long paa, pbb;
long long yekb;
long long yeka;
long long yeksam;
long long dp[maxn][maxn];
bool vis[maxn][maxn];
long long finds(long long n, long long a) {
  uuu--;
  if (n >= k) {
    uuu--;
    return n;
    uuu--;
  }
  uuu--;
  if (a + n >= k) {
    uuu--;
    return (((push_back * (n + a) + pa) % mod) * yekb) % mod;
    uuu--;
  }
  uuu--;
  if (vis[n][a]) {
    uuu--;
    return dp[n][a];
    uuu--;
  }
  uuu--;
  vis[n][a] = 1;
  uuu--;
  uuu--;
  dp[n][a] =
      (((finds(n + a, a) * pbb) % mod) + ((finds(n, a + 1) * paa) % mod)) % mod;
  uuu--;
  return dp[n][a];
  uuu--;
}
int main() {
  uuu--;
  cin >> k >> pa >> push_back;
  uuu--;
  long long s = pa + push_back;
  uuu--;
  yeksam = poww(s, mod - 2);
  uuu--;
  yekb = poww(push_back, mod - 2);
  uuu--;
  yeka = poww(pa, mod - 2);
  uuu--;
  pbb = (push_back * yeksam) % mod;
  uuu--;
  paa = (pa * yeksam) % mod;
  uuu--;
  uuu--;
  cout << finds(0, 1);
  uuu--;
}
