#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
inline int qpow(int a, int p) {
  int ans = 1;
  while (p) {
    if (p & 1) ans = (long long)ans * a % MOD;
    a = (long long)a * a % MOD;
    p >>= 1;
  }
  return ans;
}
inline int add(const int& x, const int& y) {
  return x + y >= MOD ? x + y - MOD : x + y;
}
inline int dec(const int& x, const int& y) {
  return x < y ? x - y + MOD : x - y;
}
int rt[2][24], r[262144], l, lim;
inline void init() {
  lim = 1 << l;
  for (int i = 0; i < lim; i++) r[i] = (r[i >> 1] >> 1) | ((i & 1) << (l - 1));
}
inline void NTT(int* a, int type) {
  for (int i = 0; i < lim; i++)
    if (i < r[i]) swap(a[i], a[r[i]]);
  for (int L = 0; L < l; L++) {
    int mid = 1 << L, len = mid << 1;
    long long Wn = rt[type][L + 1];
    for (int s = 0; s < lim; s += len)
      for (int k = 0, w = 1; k < mid; k++, w = w * Wn % MOD) {
        int x = a[s + k], y = (long long)w * a[s + mid + k] % MOD;
        a[s + k] = add(x, y), a[s + mid + k] = dec(x, y);
      }
  }
  if (type) {
    int t = qpow(lim, MOD - 2);
    for (int i = 0; i < lim; i++) a[i] = (long long)a[i] * t % MOD;
  }
}
int fac[262144], finv[262144];
int f[262144], g[262144], t[262144];
void solve(int n) {
  if (n == 0) return (void)(f[0] = 1);
  int m = n >> 1;
  solve(m);
  for (l = 0; (1 << l) <= (m << 1); l++)
    ;
  init();
  for (int i = 0; i <= m; i++)
    t[i] = f[i], f[i] = (long long)f[i] * fac[i] % MOD;
  g[m] = 1;
  for (int i = m - 1; i >= 0; i--) g[i] = (long long)g[i + 1] * m % MOD;
  for (int i = 0; i <= m; i++) g[i] = (long long)g[i] * finv[m - i] % MOD;
  for (int i = m + 1; i < lim; i++) g[i] = 0;
  NTT(f, 0), NTT(g, 0);
  for (int i = 0; i < lim; i++) g[i] = (long long)f[i] * g[i] % MOD;
  NTT(g, 1);
  for (int i = 0; i <= m; i++) g[i] = (long long)g[i + m] * finv[i] % MOD;
  for (int i = m + 1; i < lim; i++) g[i] = 0;
  for (int i = 0; i <= m; i++) f[i] = t[i];
  for (int i = m + 1; i < lim; i++) f[i] = 0;
  NTT(f, 0), NTT(g, 0);
  for (int i = 0; i < lim; i++) f[i] = (long long)f[i] * g[i] % MOD;
  NTT(f, 1);
  if (n & 1) {
    for (int i = n; i >= 1; i--) f[i] = ((n - 1ll) * f[i] + f[i - 1]) % MOD;
    f[0] = (n - 1ll) * f[0] % MOD;
  }
}
int main() {
  rt[0][23] = qpow(3, 119), rt[1][23] = qpow(rt[0][23], MOD - 2);
  for (int i = 22; i >= 0; i--) {
    rt[0][i] = (long long)rt[0][i + 1] * rt[0][i + 1] % MOD;
    rt[1][i] = (long long)rt[1][i + 1] * rt[1][i + 1] % MOD;
  }
  int n, a, b;
  scanf("%d%d%d", &n, &a, &b);
  --n, --a, --b;
  if (a < 0 || b < 0 || n < a + b) return puts("0"), 0;
  fac[0] = 1;
  for (int i = 1; i <= n; i++) fac[i] = (long long)fac[i - 1] * i % MOD;
  finv[n] = qpow(fac[n], MOD - 2);
  for (int i = n - 1; i >= 0; i--)
    finv[i] = (long long)finv[i + 1] * (i + 1) % MOD;
  solve(n);
  int ans =
      (long long)f[a + b] * fac[a + b] % MOD * finv[a] % MOD * finv[b] % MOD;
  cout << ans;
  return 0;
}
