func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   void gi(T &x) {     int f;     char c;     for (f = 1, c = getchar(); c <  0  || c >  9 ; c = getchar())       if (c ==  - ) f = -1;     for (x = 0; c <=  9  && c >=  0 ; c = getchar()) x = x * 10 + (c & 15);     x *= f;   }   const int N = 4e5 + 10, mod = 998244353;   inline int qm(int x, int k) {     int sum = 1;     for (; k; k >>= 1, x = 1ll * x * x % mod)       if (k & 1) sum = 1ll * sum * x % mod;     return sum;   }   int n, a[20][N], R[N], L = 0;   inline int C(int n, int m) {     if (n < m || n < 0 || m < 0) return 0;     int ret = 1, I = 1;     for (int i = 1; i <= m; i++)       ret = 1ll * ret * (n - i + 1) % mod, I = 1ll * I * i % mod;     return 1ll * ret * qm(I, mod - 2) % mod;   }   inline void NTT(int *A) {     for (int i = 0; i < n; i++)       if (i < R[i]) swap(A[i], A[R[i]]);     for (int i = 1; i < n; i <<= 1) {       int t0 = qm(3, (mod - 1) / (i << 1)), x, y;       for (int j = 0; j < n; j += i << 1) {         int t = 1;         for (int k = 0; k < i; k++, t = 1ll * t * t0 % mod) {           x = A[j + k];           y = 1ll * A[j + k + i] * t % mod;           A[j + k] = (x + y) % mod;           A[j + k + i] = (x - y + mod) % mod;         }       }     }   }   inline void mul(int *A, int *B) {     NTT(A);     NTT(B);     for (int i = 0; i < n; i++) A[i] = 1ll * A[i] * B[i] % mod;     NTT(A);     reverse(A + 1, A + n);     for (int i = 0, t = qm(n, mod - 2); i < n; i++) A[i] = 1ll * A[i] * t % mod;   }   inline void solve(int l, int r, int d) {     if (l == r) {       a[d][0] = l;       a[d][1] = 1;       return;     }     int mid = (l + r) >> 1, m = r - l + 1;     solve(l, mid, d + 1);     for (int i = 0; i <= m; i++) a[d][i] = a[d + 1][i];     solve(mid + 1, r, d + 1);     for (n = 1, L = 0; n <= m; n <<= 1) L++;     for (int i = mid - l + 2; i < n; i++) a[d][i] = 0;     for (int i = r - mid + 1; i < n; i++) a[d + 1][i] = 0;     for (int i = 0; i < n; i++) R[i] = (R[i >> 1] >> 1) | ((i & 1) << (L - 1));     mul(a[d], a[d + 1]);   }   int A, B;   int main() {     cin >> n >> A >> B;     if (n == 1) {       if (A + B - 2 >= 0)         puts( 1 );       else         puts( 0 );       exit(0);     }     solve(0, n - 2, 0);     cout << 1ll * a[0][A + B - 2] * C(A + B - 2, A - 1) % mod;     return 0;   }   