#include <bits/stdc++.h>
using namespace std;
inline char gc() {
  static const int L = 233333;
  static char sxd[L], *sss = sxd, *ttt = sxd;
  if (sss == ttt) {
    ttt = (sss = sxd) + fread(sxd, 1, L, stdin);
    if (sss == ttt) {
      return EOF;
    }
  }
  return *sss++;
}
inline char readalpha() {
  char c = getchar();
  for (; !isalpha(c); c = getchar())
    ;
  return c;
}
inline char readchar() {
  char c = getchar();
  for (; c == ' '; c = getchar())
    ;
  return c;
}
template <class T>
inline bool read(T& x) {
  bool flg = false;
  char c = getchar();
  x = 0;
  for (; !isdigit(c); c = getchar()) {
    if (c == '-') {
      flg = true;
    } else if (c == EOF) {
      return false;
    }
  }
  for (; isdigit(c); c = getchar()) {
    x = (x << 1) + (x << 3) + (c ^ 48);
  }
  if (flg) {
    x = -x;
  }
  return true;
}
const int mod = 998244353;
const int maxn = 2005;
int n;
int p[maxn];
int pp[maxn];
int f[maxn];
int g[maxn][maxn];
int s[maxn];
inline int ksm(int a, int b) {
  int ans = 1;
  for (; b; b >>= 1, a = (long long)a * a % mod) {
    if (b & 1) {
      ans = (long long)ans * a % mod;
    }
  }
  return ans;
}
int main() {
  int A, B, TA;
  read(n), read(A), read(B);
  TA = B - A;
  p[0] = pp[0] = 1;
  B = ksm(B, mod - 2);
  p[1] = (long long)A * B % mod;
  pp[1] = (long long)TA * B % mod;
  for (int i = 2; i <= n; ++i) {
    p[i] = (long long)p[i - 1] * p[1] % mod;
    pp[i] = (long long)pp[i - 1] * pp[1] % mod;
  }
  for (int i = 0; i <= n; ++i) {
    g[i][0] = 1;
    for (int j = 1; j <= i; ++j) {
      g[i][j] = (long long)p[i - j] * g[i - 1][j - 1] % mod +
                (long long)pp[j] * g[i - 1][j] % mod;
      {
        if (g[i][j] >= mod) {
          g[i][j] -= mod;
        }
        if (g[i][j] < 0) {
          g[i][j] += mod;
        }
      };
    }
  }
  for (int i = 1; i <= n; ++i) {
    s[i] = 1;
    for (int j = 1; j < i; ++j) {
      s[i] -= (long long)s[j] * g[i][j] % mod;
      {
        if (s[i] >= mod) {
          s[i] -= mod;
        }
        if (s[i] < 0) {
          s[i] += mod;
        }
      };
    }
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j < i; ++j) {
      int tmp =
          (long long)(i - j) * j % mod + (((long long)j * (j - 1)) >> 1) % mod;
      {
        if (tmp >= mod) {
          tmp -= mod;
        }
        if (tmp < 0) {
          tmp += mod;
        }
      };
      tmp += f[j];
      {
        if (tmp >= mod) {
          tmp -= mod;
        }
        if (tmp < 0) {
          tmp += mod;
        }
      };
      tmp += f[i - j];
      {
        if (tmp >= mod) {
          tmp -= mod;
        }
        if (tmp < 0) {
          tmp += mod;
        }
      };
      f[i] += (long long)s[j] * g[i][j] % mod * tmp % mod;
      {
        if (f[i] >= mod) {
          f[i] -= mod;
        }
        if (f[i] < 0) {
          f[i] += mod;
        }
      };
    }
    f[i] += (long long)s[i] * g[i][i] % mod *
            ((((long long)i * (i - 1)) >> 1) % mod) % mod;
    {
      if (f[i] >= mod) {
        f[i] -= mod;
      }
      if (f[i] < 0) {
        f[i] += mod;
      }
    };
    f[i] = (long long)f[i] *
           ksm((mod + 1ll - (long long)s[i] * g[i][i] % mod) % mod, mod - 2) %
           mod;
  }
  printf("%d\n", f[n]);
  return 0;
}
