#include <bits/stdc++.h>
using namespace std;
const int KMAX = 1e3 + 1;
const long long BP = 1e9 + 7;
long long pm, pam, pbm;
int k;
long long dyn[KMAX][KMAX];
long long expo(long long a, long long n) {
  if (n == 0) return 1;
  if (n < 0) return expo(a, BP - 1 + n);
  long long appel = expo(a, n / 2);
  if (n & 1)
    return (((appel * appel) % BP) * a) % BP;
  else
    return (appel * appel) % BP;
}
long long calc(int nbAB, int nbA) {
  if (nbA == k) {
    return (nbAB + k + ((1 - pbm + BP) % BP) * expo(pbm, -1)) % BP;
  } else if (nbAB >= k) {
    return nbAB;
  }
  if (dyn[nbAB][nbA] == -1) {
    dyn[nbAB][nbA] =
        (pam * calc(nbAB, nbA + 1)) % BP + (pbm * calc(nbAB + nbA, nbA)) % BP;
    dyn[nbAB][nbA] %= BP;
  }
  return dyn[nbAB][nbA];
}
int main() {
  long long res = 0;
  int pa, pb;
  scanf("%d%d%d", &k, &pa, &pb);
  for (int i = 0; i <= k; i++)
    for (int j = 0; j <= k; j++) dyn[i][j] = -1;
  pm = expo(pa + pb, -1);
  pam = (pa * pm) % BP;
  pbm = (pb * pm) % BP;
  printf("%lld\n", calc(0, 1));
}
