#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int N = 132007;
int n, a, b;
int rev[N], fac[N], finv[N], f[N], g[N], h[N];
inline int qpow(int x, int k, int r = 1) {
  for (; k; k >>= 1, x = 1ll * x * x % mod)
    if (k & 1) r = 1ll * r * x % mod;
  return r;
}
inline void ntt(int *a, int len, int opt) {
  for (int i = 0; i < len; ++i)
    if (i < rev[i]) swap(a[i], a[rev[i]]);
  for (int i = 1; i < len; i <<= 1) {
    int wn = qpow(3, (mod - 1) / (i << 1));
    for (int j = 0; j < len; j += i << 1) {
      int w = 1;
      for (int k = 0; k < i; ++k, w = 1ll * w * wn % mod) {
        int x = a[j + k], y = 1ll * a[j + k + i] * w % mod;
        a[j + k] = (x + y) % mod;
        a[j + k + i] = (x - y + mod) % mod;
      }
    }
  }
  if (~opt) return;
  reverse(a + 1, a + len);
  const int inv = qpow(len, mod - 2);
  for (int i = 0; i < len; ++i) a[i] = 1ll * a[i] * inv % mod;
}
void solve(int n) {
  if (!n) return g[1] = 1, void();
  int t = n - 1 >> 1, mid = n + 1 >> 1, len = 1, bit = 0;
  for (; len <= n + 2; len <<= 1, ++bit)
    ;
  solve(t);
  for (int i = 0; i < len; ++i) rev[i] = rev[i >> 1] >> 1 | (i & 1) << bit - 1;
  for (int i = f[0] = 1; i <= mid; ++i) f[i] = 1ll * f[i - 1] * mid % mod;
  for (int i = 0; i <= mid; ++i)
    f[i] = 1ll * f[i] * finv[i] % mod, h[i] = 1ll * g[i] * fac[i] % mod;
  for (int i = mid + 1; i < len; ++i) f[i] = h[i] = 0;
  reverse(f, f + mid + 2);
  ntt(f, len, 1);
  ntt(h, len, 1);
  for (int i = 0; i < len; ++i) h[i] = 1ll * f[i] * h[i] % mod;
  ntt(h, len, -1);
  for (int i = 0; i <= mid; ++i) h[i] = 1ll * h[i + mid + 1] * finv[i] % mod;
  for (int i = mid + 1; i < len; ++i) h[i] = 0;
  ntt(g, len, 1);
  ntt(h, len, 1);
  for (int i = 0; i < len; ++i) g[i] = 1ll * g[i] * h[i] % mod;
  ntt(g, len, -1);
  if (n & 1) return;
  for (int i = mid + mid + 1; i < len; ++i) g[i] = 0;
  for (int i = len - 1; i; --i) g[i] = (g[i - 1] + 1ll * g[i] * n) % mod;
}
inline int C(int n, int m) {
  return 1ll * fac[n] * finv[m] % mod * finv[n - m] % mod;
}
int main() {
  scanf("%d%d%d", &n, &a, &b);
  long long ans = 0;
  if (a == b && a == 1) return printf("%d\n", n == 1) & 0;
  if (a + b > n + 1 || !a || !b) return printf("%d\n", 0) & 0;
  for (int i = fac[0] = 1; i <= n; ++i) fac[i] = 1ll * fac[i - 1] * i % mod;
  finv[n] = qpow(fac[n], mod - 2);
  for (int i = n; i; --i) finv[i - 1] = 1ll * finv[i] * i % mod;
  solve(n - 2);
  return printf("%lld\n", 1ll * g[a + b - 2] * C(a + b - 2, a - 1) % mod) & 0;
}
