#include <bits/stdc++.h>
using namespace std;
const int N = 1000500, mo = 998244353;
int gi() {
  char ch = getchar();
  int x = 0, q = 0;
  while (ch < '0' || ch > '9') q = ch == '-' ? 1 : q, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return q ? -x : x;
}
int siz[N], st[N * 20], *p[N], A[N], B[N], rev[N], ml[N], np[N], gn[N], tot,
    top, m;
int fap(int a, int b) {
  int s = 1;
  for (; b; b >>= 1, a = 1ll * a * a % mo)
    if (b & 1) s = 1ll * s * a % mo;
  return s;
}
void ntt(int *f, int p) {
  for (int i = 1; i < m; ++i)
    if (i < rev[i]) swap(f[i], f[rev[i]]);
  int x, y;
  for (int i = 1; i < m; i <<= 1)
    for (int j = 0; j < m; j += i << 1)
      for (int k = 0, g = 1; k < i; ++k, g = 1ll * g * gn[i] % mo) {
        x = f[j + k], y = 1ll * f[j + k + i] * g % mo;
        f[j + k] = (x + y) % mo, f[j + k + i] = (mo + x - y) % mo;
      }
  if (p == 1) return;
  reverse(f + 1, f + m);
  int ni = fap(m, mo - 2);
  for (int i = 0; i < m; ++i) f[i] = 1ll * f[i] * ni % mo;
  return;
}
int solve(int l, int r) {
  int x = ++tot;
  if (l == r)
    siz[x] = 1, p[x] = st + top, top += siz[x] + 1, p[x][1] = 1, p[x][0] = l;
  else {
    int mid = (l + r) >> 1, L = 0;
    int ls = solve(l, mid), rs = solve(mid + 1, r);
    siz[x] = siz[ls] + siz[rs], p[x] = st + top, top += siz[x] + 1;
    for (m = 1, L = 0; m <= siz[x]; m <<= 1, ++L)
      ;
    for (int i = 1; i < m; ++i)
      rev[i] = rev[i >> 1] >> 1 | ((i & 1) << (L - 1));
    for (int i = 0; i < m; ++i) A[i] = B[i] = 0;
    for (int i = 0; i <= siz[ls]; ++i) A[i] = p[ls][i];
    for (int i = 0; i <= siz[rs]; ++i) B[i] = p[rs][i];
    ntt(A, 1), ntt(B, 1);
    for (int i = 0; i < m; ++i) A[i] = 1ll * A[i] * B[i] % mo;
    ntt(A, -1);
    for (int i = 0; i <= siz[x]; ++i) p[x][i] = A[i];
  }
  return x;
}
int main() {
  int n = gi(), A = gi(), B = gi();
  if (A + B > n + 1 || A <= 0 || B <= 0) return cout << "0", 0;
  if (n == 1) return cout << 1, 0;
  for (int i = 1; i <= n; i <<= 1) gn[i] = fap(3, (mo - 1) / (i << 1));
  solve(0, n - 2);
  ml[0] = np[0] = 1;
  for (int i = 1; i <= n; ++i) ml[i] = 1ll * i * ml[i - 1] % mo;
  np[n] = fap(ml[n], mo - 2);
  for (int i = n - 1; i >= 1; --i) np[i] = 1ll * np[i + 1] * (i + 1) % mo;
  printf("%d", (int)(1ll * p[1][A + B - 2] * ml[A + B - 2] % mo * np[A - 1] %
                     mo * np[B - 1] % mo));
  return 0;
}
