#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void read(T &k) {
  k = 0;
  int flag = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') flag = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    k = k * 10 + c - '0';
    c = getchar();
  }
  k *= flag;
}
const int N = 1005;
int n, m, k, s, t;
long long pa, pb, f[N][N], A, B;
void exgcd(long long a, long long b, long long &x, long long &y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return;
  }
  exgcd(b % a, a, y, x);
  x -= b / a * y;
}
long long inv(long long a) {
  long long x, y;
  exgcd(a, 1000000007, x, y);
  return x;
}
int main() {
  cin >> k >> pa >> pb;
  A = pa * inv(pa + pb) % 1000000007;
  B = pb * inv(pa + pb) % 1000000007;
  for (int i = k; i >= 1; --i)
    for (int j = k - 1; j >= 0; --j) {
      if (i + j >= k) {
        f[i][j] = (i + j + pa * inv(pb)) % 1000000007;
      } else {
        f[i][j] = (A * f[i + 1][j] + B * f[i][i + j]) % 1000000007;
      }
    }
  cout << (f[1][0] + 1000000007) % 1000000007 << endl;
}
