#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
struct modint {
  long long a = 0;
  modint() {}
  modint(long long x) { *this = x; }
  void operator=(long long x) {
    a = x % MOD;
    if (a < 0) a += MOD;
  }
  bool operator==(modint y) { return a == y.a; }
  bool operator!=(modint y) { return a != y.a; }
  modint operator+(modint y) { return a + y.a; }
  modint operator-(modint y) { return a - y.a; }
  modint operator*(modint y) { return a * y.a; }
  modint pow(modint x, int y) {
    if (!y) return 1;
    if (y & 1) return x * pow(x * x, y >> 1);
    return pow(x * x, y >> 1);
  }
  modint operator/(modint y) { return *this * pow(y, MOD - 2); }
};
modint P[2005], F[2005][2005], E[2005], ep[2005], eq[2005];
int main() {
  int n, a, b;
  scanf("%d%d%d", &n, &a, &b);
  modint p = modint(a) / b;
  modint q = modint(1) - p;
  ep[0] = 1;
  eq[0] = 1;
  for (int i = 1; i <= n; ++i) {
    ep[i] = ep[i - 1] * p;
    eq[i] = eq[i - 1] * q;
  }
  F[0][0] = 1;
  for (int i = 1; i <= n; ++i)
    for (int j = 0; j <= i; ++j) {
      F[i][j] = F[i - 1][j] * eq[j];
      if (j) F[i][j] = F[i][j] + F[i - 1][j - 1] * ep[i - 1 - (j - 1)];
    }
  P[1] = 1;
  for (int i = 2; i <= n; ++i) {
    P[i] = 1;
    for (int j = 1; j < i; ++j) {
      P[i] = P[i] - P[j] * F[i][j];
    }
  }
  for (int i = 2; i <= n; ++i) {
    E[i] = P[i] * (i * (i - 1) / 2);
    for (int j = 1; j < i; ++j)
      E[i] = E[i] +
             F[i][j] * P[j] * (E[j] + E[i - j] + j * (i - j) + j * (j - 1) / 2);
    E[i] = E[i] / (modint(1) - P[i]);
  }
  printf("%lld\n", E[n].a);
}
