#include <bits/stdc++.h>
using namespace std;
const int p = 998244353;
const int G = 3;
const int Gi = 332748118;
long long pow_mod(long long x, long long n) {
  long long s = 1;
  for (; n; n >>= 1) {
    if (n & 1) s = s * x % p;
    x = x * x % p;
  }
  return s;
}
int n, m, _A, _B;
long long B[300010];
long long a[300010], b[300010];
int P[300010];
void init_P(int n) {
  int l = 0;
  while ((1 << l) < n) ++l;
  for (int i = 0; i < n; ++i) P[i] = (P[i >> 1] >> 1) | ((i & 1) << l - 1);
}
void NTT(long long *a, int n, int type) {
  for (int i = 0; i < n; ++i)
    if (i < P[i]) swap(a[i], a[P[i]]);
  for (int i = 2, m = 1; i <= n; m = i, i *= 2) {
    long long wn = pow_mod(type > 0 ? G : Gi, (p - 1) / i);
    for (int j = 0; j < n; j += i) {
      long long w = 1;
      for (int k = 0; k < m; ++k, w = w * wn % p) {
        long long t1 = a[j + k], t2 = a[j + k + m] * w % p;
        a[j + k] = (t1 + t2) % p;
        a[j + k + m] = (t1 - t2) % p;
      }
    }
  }
  if (type < 0) {
    long long inv = pow_mod(n, p - 2);
    for (int i = 0; i < n; ++i) a[i] = a[i] * inv % p;
  }
}
int Mul(long long *a, long long *B, int n1, int n2) {
  int n = 1;
  while (n < n1 + n2 - 1) n <<= 1;
  init_P(n);
  for (int i = 0; i < n2; ++i) b[i] = B[i];
  for (int i = n1; i < n; ++i) a[i] = 0;
  for (int i = n2; i < n; ++i) b[i] = 0;
  NTT(a, n, 1);
  NTT(b, n, 1);
  for (int i = 0; i < n; ++i) a[i] = a[i] * b[i] % p;
  NTT(a, n, -1);
  return n;
}
long long A[20][300010], ans[300010];
void solve(int l, int r, int de) {
  if (l == r) return (void)(A[de][0] = l, A[de][1] = 1);
  int m = l + r >> 1;
  solve(l, m, de + 1);
  for (int i = 0; i < m - l + 2; ++i) A[de][i] = A[de + 1][i];
  solve(m + 1, r, de + 1);
  int L = Mul(A[de], A[de + 1], m - l + 2, r - m + 1);
  for (int i = r - l + 2; i < L; ++i) A[de][i] = 0;
}
long long fac[300010], inv[300010];
void init() {
  fac[0] = 1;
  for (int i = 1; i <= n; ++i) fac[i] = fac[i - 1] * i % p;
  inv[n] = pow_mod(fac[n], p - 2);
  for (int i = n - 1; ~i; --i) inv[i] = inv[i + 1] * (i + 1) % p;
}
long long C(int n, int m) {
  if (n < m) return 0;
  return fac[n] * inv[m] % p * inv[n - m] % p;
}
int main() {
  scanf("%d%d%d", &n, &_A, &_B);
  --n;
  --_A;
  --_B;
  if (_A + _B > n || _A < 0 || _B < 0) return puts("0"), 0;
  if (!n) return puts("1"), 0;
  solve(0, n - 1, 0);
  init();
  long long ans = A[0][_A + _B] * C(_A + _B, _A) % p;
  cout << (ans + p) % p << endl;
  return 0;
}
