#include <bits/stdc++.h>
using namespace std;
long long int MOD = 998244353;
int N;
long long int fact[100009], invfact[100009];
template <typename T>
T extGcd(T a, T b, T &x, T &y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  } else {
    T g = extGcd(b, a % b, y, x);
    y -= a / b * x;
    return g;
  }
}
template <typename T>
T modInv(T a, T m) {
  T x, y;
  extGcd(a, m, x, y);
  return (x % m + m) % m;
}
const long long int mod[3] = {1004535809LL, 1092616193LL, 998244353LL};
const long long int root[3] = {12289LL, 23747LL, 15311432LL};
const long long int root_1[3] = {313564925LL, 642907570LL, 469870224LL};
const long long int root_pw[3] = {1LL << 21, 1LL << 21, 1LL << 23};
void ntt(long long int *a, bool invert, int m, long long int n) {
  for (long long int i = 1, j = 0; i < n; ++i) {
    long long int bit = n >> 1;
    for (; j >= bit; bit >>= 1) j -= bit;
    j += bit;
    if (i < j) swap(a[i], a[j]);
  }
  for (long long int len = 2, wlen; len <= n; len <<= 1) {
    wlen = invert ? root_1[m] : root[m];
    for (long long int i = len; i < root_pw[m]; i <<= 1)
      wlen = (wlen * wlen % mod[m]);
    for (long long int i = 0; i < n; i += len) {
      for (long long int j = 0, w = 1; j < len / 2; ++j) {
        long long int u = a[i + j], v = a[i + j + len / 2] * w % mod[m];
        a[i + j] = (u + v < mod[m] ? u + v : u + v - mod[m]);
        a[i + j + len / 2] = (u - v >= 0 ? u - v : u - v + mod[m]);
        w = w * wlen % mod[m];
      }
    }
  }
  if (invert) {
    long long int nrev = modInv(n, mod[m]);
    for (long long int i = 0; i < n; ++i) a[i] = a[i] * nrev % mod[m];
  }
}
long long int X[1000009], aux[1000009];
long long int B[1000009], C[1000009];
void print(long long int *A, int n) {
  for (int i = 0; i < n; ++i) printf("%lld ", A[i]);
  printf("\n");
}
void convolution(int n, long long int *a, long long int *b, int m = 2) {
  int j = n >> 1;
  for (int i = 0; i < j; ++i) B[i] = a[i], C[i] = b[i];
  for (int i = j; i < n; ++i) B[i] = C[i] = 0;
  ntt(B, false, m, n);
  ntt(C, false, m, n);
  for (int i = 0; i < n; ++i) a[i] = (B[i] * C[i]) % mod[m];
  ntt(a, true, m, n);
}
int main() {
  int A, B;
  scanf("%d%d%d", &N, &A, &B);
  int K = A + B - 2;
  if (N == 1 && A == 1 && B == 1) {
    printf("1\n");
    return 0;
  }
  if (K < 1 || K >= N || A == 0 || B == 0) {
    printf("0\n");
    return 0;
  }
  fact[0] = 1;
  for (int i = 1; i < 100009; ++i) fact[i] = fact[i - 1] * i % MOD;
  invfact[100009 - 1] = modInv(fact[100009 - 1], MOD);
  for (int i = 100009 - 2; i >= 0; --i)
    invfact[i] = (i + 1) * invfact[i + 1] % MOD;
  int j = 1, p = 0;
  while (j < N - 1) j <<= 1;
  j <<= 1;
  for (int i = 0; i < N - 1; ++i) {
    X[2 * i] = i;
    X[2 * i + 1] = 1;
  }
  p = (N - 1) << 1;
  while (p < j) X[p++] = 1, X[p++] = 0;
  for (int i = 4; i <= p; i <<= 1) {
    for (int j = 0; j < p; j += i) {
      convolution(i, X + j, X + j + (i >> 1));
    }
  }
  printf("%I64d\n",
         X[K] * fact[K] % MOD * invfact[A - 1] % MOD * invfact[B - 1] % MOD);
}
