#include <bits/stdc++.h>
using namespace std;
int dp[1010][1010], A, B, C;
void gcd(int a, int b, int &x, int &y) {
  if (!b) {
    x = 1;
    y = 0;
  } else {
    gcd(b, a % b, y, x);
    y -= x * (a / b);
  }
}
int inverse(int a) {
  int x, y;
  gcd(a, 1000000007, x, y);
  return (x % 1000000007 + 1000000007) % 1000000007;
}
int main() {
  long long k, a, b;
  cin >> k >> a >> b;
  C = inverse(a + b);
  A = ((long long)a * C) % 1000000007;
  B = ((long long)b * C) % 1000000007;
  C = ((long long)a * inverse(b)) % 1000000007;
  for (int i = k; i >= 1; i--)
    for (int j = k; j >= 0; j--)
      dp[i][j] =
          i + j >= k
              ? (i + j + C) % 1000000007
              : (1ll * A * dp[i + 1][j] + 1ll * B * dp[i][i + j]) % 1000000007;
  cout << dp[1][0] << endl;
  return 0;
}
