#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
long long pw(long long a, long long b, long long m) {
  long long ret = 1;
  long long mul = a;
  while (b > 0) {
    if (b & 1) ret = (ret * mul) % m;
    mul = (mul * mul) % m;
    b /= 2;
  }
  return ret;
}
const int MAXN = 2e3 + 23, mod = 998244353;
int n, a, b, pg[MAXN], pl[MAXN], c[MAXN], g[MAXN][MAXN], f[MAXN], dp[MAXN];
int main() {
  cin >> n >> a >> b;
  pl[1] = (1ll * a * pw(b, mod - 2, mod)) % mod;
  pg[1] = (1 - pl[1] + mod) % mod;
  pg[0] = pl[0] = 1;
  for (int(i) = (2); (i) < (MAXN); (i)++)
    pg[i] = (1ll * pg[i - 1] * pg[1]) % mod,
    pl[i] = (1ll * pl[i - 1] * pl[1]) % mod;
  for (int(i) = (0); (i) < (MAXN); (i)++)
    c[i] = (1ll * i * (i - 1) / 2ll) % mod;
  g[0][0] = 1;
  for (int(i) = (1); (i) < (MAXN); (i)++) {
    for (int(k) = (0); (k) < (i + 1); (k)++) {
      g[i][k] = (1ll * g[i - 1][k] * pl[k]) % mod;
      if (k) {
        g[i][k] = (g[i][k] + 1ll * g[i - 1][k - 1] * pg[i - k]) % mod;
      }
    }
  }
  f[0] = 1;
  for (int(k) = (1); (k) < (MAXN); (k)++) {
    int p = 0;
    for (int(i) = (1); (i) < (k); (i)++) {
      p = (p + 1ll * f[i] * g[k][i]) % mod;
    }
    f[k] = (1 - p + mod) % mod;
  }
  dp[0] = 0;
  for (int(i) = (1); (i) < (MAXN); (i)++) {
    int sum = (1ll * c[i] * f[i]) % mod, div = (1 - f[i] + mod) % mod;
    for (int(j) = (1); (j) < (i); (j)++) {
      int add =
          (1ll * dp[j] + 1ll * dp[i - j] + 1ll * c[j] + 1ll * j * (i - j)) %
          mod;
      add = (1ll * add * f[j]) % mod;
      add = (1ll * add * g[i][j]) % mod;
      sum += add;
      if (sum >= mod) sum -= mod;
    }
    dp[i] = (1ll * sum * pw(div, mod - 2, mod)) % mod;
  }
  cout << dp[n] << "\n";
}
