#include <bits/stdc++.h>
using namespace std;
template <class T>
void mini(T &l, T r) {
  l = min(l, r);
}
template <class T>
void maxi(T &l, T r) {
  l = max(l, r);
}
string to_string(string s) { return '"' + s + '"'; }
string to_string(const char *s) { return to_string((string)s); }
template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename A>
string to_string(A v) {
  bool first = true;
  string res = "{";
  for (const auto &x : v) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(x);
  }
  res += "}";
  return res;
}
void debug_out() { cerr << endl; }
template <typename Head, typename... Tail>
void debug_out(Head H, Tail... T) {
  cerr << " " << to_string(H);
  debug_out(T...);
}
using llint = long long;
const int N = 1010, B = 1e9 + 7;
llint f[N][N];
llint pa, pb;
int ta, tb;
int k;
llint mypw(llint a, llint b) {
  llint ret = 1;
  while (b) {
    if (b & 1) ret = ret * a % B;
    a = a * a % B;
    b >>= 1;
  }
  return ret;
}
llint mul(llint a, llint b) {
  int t = a * b % B;
  if (t < 0) t += B;
  return t;
}
llint add(llint a, llint b) {
  int t = (a + b) % B;
  if (t < 0) t += B;
  return t;
}
llint sub(llint a, llint b) {
  int t = (a + b) % B;
  if (t < 0) t += B;
  return t;
}
llint inv(llint a) { return mypw(a, B - 2); }
void run() {
  scanf("%d%d%d", &k, &ta, &tb);
  pa = mul(ta, inv(ta + tb));
  pb = mul(tb, inv(ta + tb));
  f[0][0] = 1;
  for (int x = 1; x <= k; ++x) {
    for (int y = 0; y < x; ++y) {
      f[x][y] = mul(f[x - 1][y], pa);
    }
    for (int y = x; y <= k; ++y) {
      f[x][y] = add(mul(f[x - 1][y], pa), mul(f[x][y - x], pb));
    }
  }
  llint sum = 0;
  llint up = 0;
  for (int x = 1; x < k; ++x) {
    for (int y = 0; y < k; ++y) {
      if (y + x >= k) {
        sum = add(sum, f[x][y]);
        up = add(up, mul(f[x][y], y + x));
      }
    }
  }
  for (int y = 0; y < k; ++y) {
    sum = add(sum, mul(f[k][y], inv(pb)));
    up = add(up, mul(f[k][y], add(mul(pa, mul(inv(pb), inv(pb))),
                                  mul(add(y, k), mul(1, inv(pb))))));
  }
  42;
  printf("%lld\n", mul(up, inv(sum)));
}
int main() {
  run();
  return 0;
}
