#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void read(T &x) {
  int f = 0;
  x = 0;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar()) f |= (ch == '-');
  for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0';
  if (f) x = -x;
}
namespace {
const int mod = 998244353;
int power(int x, int p) {
  int res = 1;
  for (; p; p >>= 1, x = (long long)x * x % mod)
    if (p & 1) res = (long long)res * x % mod;
  return res;
}
int mul(int x, int y) { return (long long)x * y % mod; }
int fix(int x) { return x >= mod ? x - mod : x; }
void add(int &x, int y) { x = (x + y >= mod ? x + y - mod : x + y); }
void sub(int &x, int y) { x = (x - y < 0 ? x - y + mod : x - y); }
}  // namespace
const int N = 2005;
int f[N][N], g[N], h[N], P[N], Q[N];
int n, a, b, p, q;
int S(int i, int j) {
  return ((long long)j * (i - j) + (long long)j * (j - 1) / 2) % mod;
}
int main() {
  read(n), read(a), read(b);
  p = mul(a, power(b, mod - 2));
  q = fix(mod + 1 - p);
  P[0] = Q[0] = 1;
  for (int i = (1); i <= (n); i++) {
    P[i] = mul(P[i - 1], p);
    Q[i] = mul(Q[i - 1], q);
  }
  f[0][0] = 1;
  for (int i = (0); i <= (n - 1); i++)
    for (int j = (0); j <= (i); j++) {
      add(f[i + 1][j], mul(f[i][j], P[j]));
      add(f[i + 1][j + 1], mul(f[i][j], Q[i - j]));
    }
  g[1] = 1;
  for (int i = (2); i <= (n); i++) {
    g[i] = 1;
    for (int j = (1); j <= (i - 1); j++) sub(g[i], mul(g[j], f[i][j]));
  }
  for (int i = (2); i <= (n); i++) {
    for (int j = (1); j <= (i - 1); j++) {
      int prob = mul(g[j], f[i][j]);
      add(h[i], mul(prob, fix(h[j] + h[i - j]) + S(i, j)));
    }
    int owo = g[i];
    add(h[i], mul(owo, S(i, i)));
    h[i] = mul(h[i], power(fix(mod + 1 - owo), mod - 2));
  }
  cout << h[n] << endl;
  return 0;
}
