#include <bits/stdc++.h>
using namespace std;
const int N = 53e4, mod = 998244353;
int n, nn, L, A, B, ans, fac[N], inv[N], a[N], b[N], c[N], R[N];
int C(int a, int b) { return 1ll * fac[a] * inv[b] % mod * inv[a - b] % mod; }
int qpow(int a, int b) {
  int ret = 1;
  while (b) {
    if (b & 1) ret = 1ll * ret * a % mod;
    a = 1ll * a * a % mod, b >>= 1;
  }
  return ret;
}
void init(int n) {
  nn = 1, L = 0;
  while (nn <= 2 * n) nn <<= 1, ++L;
  for (int i = 1; i < nn; ++i) R[i] = (R[i >> 1] >> 1) | ((i & 1) << L - 1);
}
void NTT(int* a, int tp) {
  for (int i = 0; i < nn; ++i)
    if (i < R[i]) swap(a[i], a[R[i]]);
  for (int i = 1; i < nn; i <<= 1) {
    int wn = qpow(3, tp * (mod / (i * 2)) + mod - 1);
    for (int j = 0; j < nn; j += i * 2)
      for (int k = 0, w = 1; k < i; ++k, w = 1ll * w * wn % mod) {
        int x = a[j + k], y = 1ll * w * a[j + k + i] % mod;
        a[j + k] = (x + y) % mod;
        a[j + k + i] = (x - y + mod) % mod;
      }
  }
  if (tp == 1) return;
  int invn = qpow(nn, mod - 2);
  for (int i = 0; i < nn; ++i) a[i] = 1ll * a[i] * invn % mod;
}
void solve(int n) {
  if (n == 1) {
    a[1] = 1;
    return;
  }
  if (n & 1) {
    solve(n - 1);
    for (int i = n - 1; ~i; --i)
      a[i + 1] = (a[i + 1] + a[i]) % mod, a[i] = 1ll * (n - 1) * a[i] % mod;
    return;
  }
  int l = n / 2;
  solve(l), init(l);
  for (int i = 0; i < nn; ++i) b[i] = c[i] = 0;
  int tmp = 1;
  for (int i = 0; i <= l; ++i)
    b[i] = 1ll * a[i] * fac[i] % mod, c[i] = 1ll * tmp * inv[i] % mod,
    tmp = 1ll * tmp * l % mod;
  reverse(b, b + l + 1);
  NTT(b, 1), NTT(c, 1);
  for (int i = 0; i < nn; ++i) b[i] = 1ll * b[i] * c[i] % mod;
  NTT(b, -1);
  reverse(b, b + l + 1);
  for (int i = 0; i <= l; ++i) b[i] = 1ll * inv[i] * b[i] % mod;
  for (int i = l + 1; i < nn; ++i) b[i] = 0;
  init(n);
  NTT(a, 1), NTT(b, 1);
  for (int i = 0; i < nn; ++i) a[i] = 1ll * a[i] * b[i] % mod;
  NTT(a, -1);
}
int main() {
  scanf("%d%d%d", &n, &A, &B);
  if (n == 1) {
    if (A == 1 && B == 1)
      puts("1");
    else
      puts("0");
    return 0;
  }
  if (A < 1 || B < 1 || A + B > n + 1 || A + B == 2) {
    puts("0");
    return 0;
  }
  fac[0] = inv[0] = 1;
  for (int i = 1; i <= n; ++i) fac[i] = 1ll * fac[i - 1] * i % mod;
  inv[n] = qpow(fac[n], mod - 2);
  for (int i = n; i; --i) inv[i - 1] = 1ll * inv[i] * i % mod;
  solve(n - 1);
  ans = 1ll * a[A + B - 2] * C(A + B - 2, A - 1) % mod;
  printf("%d", ans);
}
