#include <bits/stdc++.h>
int const mod = 998244353, g = 3, gi = (mod + 1) / g;
int pow(int x, int y) {
  int res = 1;
  while (y) {
    if (y & 1) res = 1ll * x * res % mod;
    x = 1ll * x * x % mod;
    y >>= 1;
  }
  return res;
}
struct NTT {
  int r[1000010], lim;
  void getr(int lm) {
    lim = lm;
    for (int i = 0; i < lim; i++)
      r[i] = (r[i >> 1] >> 1) | ((i & 1) * (lim >> 1));
  }
  void operator()(int *a, int type) {
    for (int i = 0; i < lim; i++)
      if (i < r[i]) std::swap(a[i], a[r[i]]);
    for (int mid = 1; mid < lim; mid <<= 1) {
      int rt = pow(type == 1 ? g : gi, (mod - 1) / (mid << 1));
      for (int r = mid << 1, j = 0; j < lim; j += r) {
        int p = 1;
        for (int k = 0; k < mid; k++, p = 1ll * p * rt % mod) {
          int x = a[j + k], y = 1ll * p * a[j + k + mid] % mod;
          a[j + k] = (x + y) % mod, a[j + mid + k] = (x - y + mod) % mod;
        }
      }
    }
    if (type == -1)
      for (int i = 0, p = pow(lim, mod - 2); i < lim; i++)
        a[i] = 1ll * a[i] * p % mod;
  }
} ntt;
void solve(int *ans, int n) {
  if (n == 1) return ans[1] = 1, void();
  solve(ans, n >> 1);
  static int tmp[1000010], g[1000010];
  for (int i = 0, fac = 1; i <= n >> 1; i++, fac = 1ll * fac * i % mod)
    g[i] = 1ll * ans[i] * fac % mod;
  for (int i = 0, fac = 1; i <= n >> 1; i++, fac = 1ll * fac * i % mod)
    tmp[(n >> 1) - i] = 1ll * pow(n >> 1, i) * pow(fac, mod - 2) % mod;
  int lim = 1;
  for (; lim <= n; lim <<= 1)
    ;
  for (int i = (n >> 1) + 1; i < lim; i++) g[i] = tmp[i] = 0;
  ntt.getr(lim);
  ntt(g, 1), ntt(tmp, 1);
  for (int i = 0; i < lim; i++) g[i] = 1ll * g[i] * tmp[i] % mod, tmp[i] = 0;
  ntt(g, -1);
  for (int i = 0, fac = 1; i <= n >> 1; i++, fac = 1ll * fac * i % mod)
    g[i] = 1ll * g[i + (n >> 1)] * pow(fac, mod - 2) % mod;
  for (int i = (n >> 1) + 1; i < lim; i++) g[i] = 0;
  ntt(g, 1), ntt(ans, 1);
  for (int i = 0; i < lim; i++) ans[i] = 1ll * ans[i] * g[i] % mod, g[i] = 0;
  ntt(ans, -1);
  if (n & 1) {
    for (int i = n; i; i--)
      ans[i] = (ans[i - 1] + 1ll * ans[i] * (n - 1)) % mod;
    ans[0] = 1ll * ans[0] * (n - 1) % mod;
  }
}
int n, a, b, fac[1000010], ans[1000010];
int main() {
  scanf("%d%d%d", &n, &a, &b);
  if (a + b - 2 < a - 1) {
    printf("0");
    return 0;
  }
  if (a + b - 2 > n) {
    puts("0");
    return 0;
  }
  if (n == 1 && a == 1 && b == 1)
    return puts("1"), 0;
  else if (n == 1)
    return puts("0"), 0;
  solve(ans, n - 1);
  int ans = ::ans[a + b - 2];
  fac[0] = 1;
  for (int i = 1; i <= a + b - 2; i++) fac[i] = 1ll * i * fac[i - 1] % mod;
  ans = 1ll * ans * fac[a + b - 2] % mod * pow(fac[a - 1], mod - 2) % mod *
        pow(fac[b - 1], mod - 2) % mod;
  printf("%d\n", ans);
  return 0;
}
