#include <bits/stdc++.h>
const int mod = 998244353, g = 3, _g = 332748118, maxn = 1e6 + 9;
inline int Pow(int base, int b) {
  int ret(1);
  while (b) {
    if (b & 1) ret = 1ll * ret * base % mod;
    base = 1ll * base * base % mod;
    b >>= 1;
  }
  return ret;
}
int r[maxn], W[maxn];
inline int Fir(int n) {
  int limit(1), len(0), up(n << 1);
  while (limit < up) {
    limit <<= 1;
    ++len;
  }
  for (int i = 0; i < limit; ++i)
    r[i] = (r[i >> 1] >> 1) | ((i & 1) << len - 1);
  return limit;
}
inline void NTT(int *a, int n, int type) {
  for (int i = 0; i < n; ++i)
    if (i < r[i]) std::swap(a[i], a[r[i]]);
  for (int mid = 1; mid < n; mid <<= 1) {
    int wn(Pow(type ? g : _g, (mod - 1) / (mid << 1)));
    W[0] = 1;
    for (int i = 1; i < mid; ++i) W[i] = 1ll * W[i - 1] * wn % mod;
    for (int R = mid << 1, j = 0; j < n; j += R)
      for (int k = 0; k < mid; ++k) {
        int x(a[j + k]), y(1ll * W[k] * a[j + mid + k] % mod);
        a[j + k] = 1ll * (x + y) % mod;
        a[j + mid + k] = 1ll * (x - y + mod) % mod;
      }
  }
}
int T[maxn], F[maxn], H[maxn], G[maxn], fac[maxn], fav[maxn], tmp[maxn],
    sum[maxn], B[maxn];
inline int Mul(int n, int *a, int *b, int *ans) {
  int limit(Fir(n));
  NTT(a, limit, 1);
  NTT(b, limit, 1);
  for (int i = 0; i < limit; ++i) ans[i] = 1ll * a[i] * b[i] % mod;
  NTT(ans, limit, 0);
  for (int i = ((n - 1) << 1) + 1; i < limit; ++i) a[i] = b[i] = 0;
  return Pow(limit, mod - 2);
}
inline void Solve(int n, int *a) {
  if (!n) {
    a[0] = 1;
    return;
  }
  if (n == 1) {
    a[1] = 1;
    return;
  }
  int len(n / 2);
  Solve(len, a);
  for (int i = 0; i <= len; ++i) {
    F[i] = 1ll * Pow(len, i) * fav[i] % mod;
    H[i] = 1ll * fac[i] * a[i] % mod;
  }
  for (int i = 0; i <= (len >> 1); ++i) std::swap(H[i], H[len - i]);
  int limit(Fir(len + 1));
  for (int i = len + 1; i < limit; ++i) F[i] = H[i] = 0;
  NTT(F, limit, 1);
  NTT(H, limit, 1);
  for (int i = 0; i < limit; ++i) G[i] = 1ll * F[i] * H[i] % mod;
  NTT(G, limit, 0);
  int ty(Pow(limit, mod - 2));
  for (int i = 0; i <= len; ++i)
    tmp[i] = 1ll * G[len - i] * ty % mod * Pow(fac[i], mod - 2) % mod;
  int val(Mul(len + 1, a, tmp, B));
  for (int i = 0; i <= (len << 1); ++i) a[i] = 1ll * B[i] * val % mod;
  if (n & 1) {
    for (int i = 0; i < n; ++i) T[i] = a[i];
    for (int i = 1; i <= n; ++i)
      a[i] = 1ll * (T[i - 1] + 1ll * (n - 1) * T[i] % mod) % mod;
  }
}
inline int Get_c(int n, int m) {
  return 1ll * fac[n] * fav[m] % mod * fav[n - m] % mod;
}
int n, a, b;
int ans[maxn];
int main() {
  scanf("%d%d%d", &n, &a, &b);
  fac[0] = fac[1] = 1;
  for (int i = 2; i <= n; ++i) fac[i] = 1ll * fac[i - 1] * i % mod;
  fav[n] = Pow(fac[n], mod - 2);
  for (int i = n; i >= 1; --i) fav[i - 1] = 1ll * fav[i] * i % mod;
  Solve(n - 1, ans);
  printf("%d\n", 1ll * ans[a + b - 2] * Get_c(a + b - 2, a - 1) % mod);
}
