#include <bits/stdc++.h>
using namespace std;
const int MAXN = (int)2003;
const int MOD = 998244353;
const int infint = (long long)1e9 + 3;
const long long inf = (long long)1e18;
long long n, a, b;
long long pwr(long long a, long long b) {
  if (b == 0) return 1;
  if (b == 1) return a;
  long long c = pwr(a, b / 2);
  c = (c * c) % MOD;
  if (b % 2) c = (c * a) % MOD;
  return c;
}
long long inv(long long p) { return pwr(p, MOD - 2); }
long long C(long long n) { return n * (n - 1) % MOD * inv(2) % MOD; }
long long gt[MAXN][MAXN], f[MAXN], ans[MAXN];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> a >> b;
  long long P = a * inv(b) % MOD, Q = ((b - a + MOD) % MOD) * inv(b) % MOD;
  gt[0][0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= i; j++)
      if (j == 0 || j == i)
        gt[i][j] = 1;
      else
        gt[i][j] = (gt[i - 1][j] * pwr(P, j) % MOD +
                    gt[i - 1][j - 1] * pwr(Q, i - j) % MOD) %
                   MOD;
  f[1] = 1;
  for (int i = 2; i <= n; i++) {
    f[i] = 1;
    for (int j = 1; j < i; j++)
      f[i] -= gt[i][j] * f[j] % MOD, f[i] = (f[i] + MOD) % MOD;
  }
  ans[1] = 0;
  for (int i = 2; i <= n; i++) {
    long long A = C(i);
    for (int j = 1; j < i; j++)
      A += gt[i][j] * f[j] % MOD *
           ((ans[j] + ans[i - j] - C(i - j) + MOD) % MOD) % MOD,
          A %= MOD;
    long long B = inv((1 - f[i] + MOD) % MOD);
    ans[i] = A * B % MOD;
  }
  cout << ans[n];
}
