func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MOD = 998244353;   const int N = 2000 + 10;   int n;   int pa, pb, p, q;   int cp[N][N];   int strong[N];   int f[N];   void add(int &t, int s) {     t += s;     if (t >= MOD) t -= MOD;   }   void mul(int &t, int s) { t = (long long)t * s % MOD; }   int pow(int s, int n) {     long long ret = 1;     while (n)       if (n % 2)         ret = ret * s % MOD, n--;       else         s = (long long)s * s % MOD, n >>= 1;     return ret;   }   int inv(int s) { return pow(s, MOD - 2); }   int main() {     cin >> n >> pa >> pb;     p = (long long)pa * inv(pb) % MOD;     q = (MOD - p + 1) % MOD;     f[0] = 0;     f[1] = 0;     cp[0][0] = 1;     for (int i = 1; i <= n; i++) {       cp[i][0] = 1;       for (int j = 1; j <= i; j++) {         cp[i][j] = ((long long)cp[i - 1][j - 1] * pow(q, i - j) +                     (long long)cp[i - 1][j] * pow(p, j)) %                    MOD;       }     }     strong[1] = 1;     for (int i = 2; i <= n; i++) {       int res = 0;       for (int j = 1; j < i; j++) {         int tmp = strong[j];         mul(tmp, cp[i][j]);         add(res, tmp);       }       strong[i] = (1 - res + MOD) % MOD;     }     for (int s = 2; s <= n; s++) {       int res = 0;       for (int i = 1; i < s; i++) {         int cur = 1;         mul(cur, strong[i]);         mul(cur, cp[s][i]);         int games = 0;         add(games, i * (s - i));         add(games, i * (i - 1) / 2);         add(games, f[i]);         add(games, f[s - i]);         mul(cur, games);         add(res, cur);       }       int coeff = 1;       mul(coeff, strong[s]);       mul(coeff, cp[s][s]);       int tmp = coeff;       mul(tmp, s * (s - 1) / 2);       add(res, tmp);       coeff = (1 + MOD - coeff) % MOD;       mul(res, inv(coeff));       f[s] = res;     }     cout << f[n] << endl;     return 0;   }   