#include <bits/stdc++.h>
using namespace std;
template <typename T>
void chkmax(T &x, T y) {
  x = x > y ? x : y;
}
template <typename T>
void chkmin(T &x, T y) {
  x = x < y ? x : y;
}
template <typename T>
void read(T &x) {
  x = 0;
  int f = 1;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) x = x * 10 + c - '0', c = getchar();
  x *= f;
}
const int N = 1 << 19, mod = 998244353;
namespace poly {
int cnt, rev[N], val[40][N];
int Pow(int x, int y) {
  int ret = 1;
  for (; y; y >>= 1, x = 1ll * x * x % mod)
    if (y & 1) ret = 1ll * ret * x % mod;
  return ret;
}
int getl(int n) {
  int tn = 1, l = 0;
  while (tn < (n << 1)) tn <<= 1, l++;
  for (int i = 0; i < tn; i++) rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << l - 1);
  return tn;
}
void NTT(int *a, int n, int fl) {
  for (int i = 0; i < n; i++)
    if (i < rev[i]) swap(a[i], a[rev[i]]);
  for (int i = 1; i < n; i <<= 1) {
    int wn =
        Pow(3, ~fl ? (mod - 1) / (i << 1) : mod - 1 - (mod - 1) / (i << 1));
    for (int j = 0; j < n; j += i << 1)
      for (int k = 0, w = 1; k < i; k++, w = 1ll * w * wn % mod) {
        int tx = a[j + k], ty = 1ll * w * a[i + j + k] % mod;
        a[j + k] = (tx + ty) % mod, a[i + j + k] = (tx - ty + mod) % mod;
      }
  }
  if (fl == -1) {
    int t = Pow(n, mod - 2);
    for (int i = 0; i < n; i++) a[i] = 1ll * a[i] * t % mod;
  }
}
void solve(int *a, int *b, int l, int r) {
  if (l == r) return b[0] = a[l], b[1] = 1, void();
  int mid = (l + r) >> 1, *tx = val[++cnt], *ty = val[++cnt];
  solve(a, tx, l, mid), solve(a, ty, mid + 1, r);
  int tn = getl(r - l + 1);
  NTT(tx, tn, 1), NTT(ty, tn, 1);
  for (int i = 0; i < tn; i++)
    b[i] = 1ll * tx[i] * ty[i] % mod, tx[i] = ty[i] = 0;
  NTT(b, tn, -1), cnt -= 2;
}
}  // namespace poly
int main() {
  int n, A, B;
  cin >> n >> A >> B;
  if (A + B - 2 > n - 1 || !A || !B) return cout << "0\n", 0;
  if (n == 1) return cout << "1\n", 0;
  static int a[N], b[N], fac[N], inv[N], Inv[N];
  for (int i = 1; i <= n - 2; i++) a[i] = i;
  poly::solve(a, b, 0, n - 2);
  fac[0] = fac[1] = Inv[0] = Inv[1] = inv[1] = 1;
  for (int i = 2; i <= A + B; i++) {
    inv[i] = 1ll * (mod - mod / i) * inv[mod % i] % mod;
    Inv[i] = 1ll * Inv[i - 1] * inv[i] % mod;
    fac[i] = 1ll * fac[i - 1] * i % mod;
  }
  cout << 1ll * b[A + B - 2] * fac[A + B - 2] % mod * Inv[A - 1] % mod *
              Inv[B - 1] % mod
       << '\n';
  return 0;
}
