#include <bits/stdc++.h>
using namespace std;
long long gi() {
  char cc = getchar();
  long long cn = 0, flus = 1;
  while (cc < '0' || cc > '9') {
    if (cc == '-') flus = -flus;
    cc = getchar();
  }
  while (cc >= '0' && cc <= '9') cn = cn * 10 + cc - '0', cc = getchar();
  return cn * flus;
}
const long long N = 3000 + 5;
const long long P = 998244353;
long long fpow(long long x, long long k) {
  long long ans = 1, base = x;
  while (k) {
    if (k & 1) ans = 1ll * ans * base % P;
    base = 1ll * base * base % P, k >>= 1;
  }
  return ans;
}
long long n, p, fv1[N], fv2[N], dp[N][N], h[N], g[N], f[N];
void inc(long long &x, long long y) { x += y, x %= P; }
signed main() {
  n = gi();
  long long a = gi(), b = gi();
  p = a * fpow(b, P - 2) % P, fv1[0] = fv2[0] = 1;
  for (register long long i = (1); i <= (n); ++i) fv1[i] = fv1[i - 1] * p % P;
  for (register long long i = (1); i <= (n); ++i)
    fv2[i] = fv2[i - 1] * (1 - p + P) % P;
  dp[0][0] = 1;
  for (long long i = 0; i < n; ++i) {
    for (register long long j = (0); j <= (i); ++j)
      inc(dp[i + 1][j], dp[i][j] * fv1[j] % P),
          inc(dp[i + 1][j + 1], dp[i][j] * fv2[i - j] % P);
  }
  g[1] = 1, h[1] = f[1] = 0;
  for (register long long i = (2); i <= (n); ++i) {
    g[i] = 1;
    for (register long long k = 1; k < i; ++k)
      inc(g[i], P - g[k] * dp[i][k] % P);
    long long k = 1 - g[i] + P, c = (i * (i - 1) / 2);
    k %= P, k = fpow(k, P - 2);
    for (register long long j = 1; j < i; ++j)
      inc(c, g[j] * dp[i][j] % P * (f[j] + h[i - j]) % P);
    f[i] = c * k % P;
    for (register long long j = 1; j <= i; ++j)
      inc(h[i], g[j] * dp[i][j] % P * (f[j] + h[i - j]) % P);
  }
  printf("%lld\n", f[n]);
  return 0;
}
