#include <bits/stdc++.h>
inline void swap(int& x, int& y) {
  int z = x;
  x = y, y = z;
}
inline int mod(int x) { return x < 998244353 ? x : x - 998244353; }
inline int calc(int x, int y) {
  int z = 1;
  for (; y; x = (long long)x * x % 998244353, y >>= 1)
    if (y & 1) z = (long long)x * z % 998244353;
  return z;
}
int I, J, f[131072], i, m, u[18], v, w[131072 | 1], x, y, z;
inline void NTT(int* a, int n, int s) {
  for (I = J = 0, i = f[n >> 1]; J < n; I += i, J++)
    if (f[I] < J) swap(a[f[I]], a[J]);
  for (i = 1, z = 0; i < n; i <<= 1, z++)
    for (I = 0, J = i, s >>= 1; J < n; I += i, J += i)
      for (v = m & s; J & i; v += s)
        x = a[I], y = (long long)a[J] * w[v] % 998244353, a[I++] = mod(x + y),
        a[J++] = mod(998244353 + x - y);
  if (s < 0)
    for (i = 0, z = u[z]; i < n; i++) a[i] = (long long)a[i] * z % 998244353;
}
int A[131072], B[131072], C[131072], a[131072], b[131072], c[131072], j, k;
void solve(int n) {
  if (!n)
    *A = 1;
  else if (n == 1)
    *A = 0, A[1] = 1;
  else if (n & 1)
    for (solve(n - 1), i = n; i; i--)
      A[i] = (A[i - 1] + A[i] * (n - 1ll)) % 998244353;
  else {
    for (solve(n >> 1), j = n >> 1, k = 1; k < n; k <<= 1)
      ;
    for (i = 0; i < j; i++) B[i] = (long long)A[j - i] * a[j - i] % 998244353;
    for (i = 0, x = 1; i <= j; x = (long long)x * j % 998244353, i++)
      C[i] = (long long)b[i] * x % 998244353;
    for (NTT(B, k, m), NTT(C, k, m), i = 0; i < k; i++)
      C[i] = (long long)B[i] * C[i] % 998244353;
    for (NTT(C, k, -m), memset(B + j, 0, k - j << 2), i = 0; i <= j; i++)
      B[i] = (long long)C[j - i] * b[i] % 998244353;
    for (NTT(A, k, m), NTT(B, k, m), i = 0; i < k; i++)
      A[i] = (long long)A[i] * B[i] % 998244353;
    if (NTT(A, k, -m), memset(B, 0, k << 2), k == n) A[n] = *A, *A = 0;
  }
}
int n, s, t;
int main() {
  if (scanf("%d%d%d", &n, &s, &t), !s || !t || n < s + t - 1)
    return 0 & puts("0");
  for (m = *u = 1; m < n; m <<= 1)
    u[z + 1] = 499122177ll * u[z] % 998244353, z++;
  for (*a = a[1] = *b = b[1] = 1, i = 2; i < m; i++)
    a[i] = (long long)a[i - 1] * i % 998244353,
    b[i] =
        (long long)(998244353 - 998244353 / i) * b[998244353 % i] % 998244353;
  for (i = *w = w[m] = 1, x = calc(3, 998244353 >> z--); i < m; i++)
    b[i] = (long long)b[i - 1] * b[i] % 998244353,
    f[i] = f[i >> 1] >> 1 | (i & 1) << z,
    w[i] = (long long)w[i - 1] * x % 998244353;
  return 0 &
         (solve(n - 1),
          printf("%lld\n", (long long)A[s + t - 2] * a[s + t - 2] % 998244353 *
                               b[s - 1] % 998244353 * b[t - 1] % 998244353));
}
