#include <bits/stdc++.h>
using namespace std;
const long long N = 1 << 18 | 1, M = 998244353;
long long inv[N], fac[N], n, A, B, C[N], f1[N], f2[N];
inline long long ksm(long long x, long long y) {
  long long ans = 1;
  for (; y; y >>= 1, x = x * x % M)
    if (y & 1) (ans *= x) %= M;
  return ans;
}
inline void init(long long y[], long long len) {
  for (long long i = 1, j = len / 2; i < len - 1; i++) {
    if (i < j) swap(y[i], y[j]);
    long long k = len / 2;
    while (j >= k) {
      j -= k;
      k /= 2;
    }
    j += k;
  }
}
inline void ntt(long long y[], long long len, long long opt) {
  init(y, len);
  for (long long h = 2; h <= len; h <<= 1) {
    long long wn = ksm(3, (M - 1) / h);
    if (opt == -1) wn = ksm(wn, M - 2);
    for (long long j = 0; j < len; j += h) {
      long long w = 1;
      for (long long k = j; k < j + h / 2; k++) {
        long long u = y[k], v = y[k + h / 2] * w % M;
        y[k] = (u + v) % M;
        y[k + h / 2] = (M + u - v) % M;
        w = w * wn % M;
      }
    }
  }
  if (opt == 1) return;
  long long temp = ksm(len, M - 2);
  for (long long i = 0; i < len; i++) (y[i] *= temp) %= M;
}
inline void cf(long long A[], long long B[]) {
  long long len = 1;
  while (len < 2 * n) len <<= 1;
  for (long long i = 0; i < len; i++) C[i] = B[i];
  ntt(A, len, 1);
  ntt(C, len, 1);
  for (long long i = 0; i < len; i++) (A[i] *= C[i]) %= M;
  ntt(A, len, -1);
  for (long long i = n; i < len; i++) A[i] = 0;
}
inline void Ksm(long long f[], long long y) {
  long long Ans[N];
  memset(Ans, 0, sizeof Ans);
  Ans[0] = 1;
  for (; y; y >>= 1, cf(f, f))
    if (y & 1) cf(Ans, f);
  for (long long i = 0; i < n; i++) f[i] = Ans[i];
}
signed main() {
  scanf("%lld%lld%lld", &n, &A, &B);
  if (!A || !B) {
    puts("0");
    return 0;
  }
  fac[0] = inv[0] = 1;
  for (long long i = 1; i < N; i++)
    fac[i] = fac[i - 1] * i % M, inv[i] = ksm(fac[i], M - 2);
  for (long long i = 1; i < n; i++) f1[i] = f2[i] = ksm(i, M - 2);
  Ksm(f1, A - 1);
  Ksm(f2, B - 1);
  for (long long i = 0; i < n; i++)
    (f1[i] *= inv[A - 1] % M) %= M, (f2[i] *= inv[B - 1]) %= M;
  long long ans = 0;
  for (long long i = 0; i < n; i++) (ans += f1[i] * f2[n - 1 - i]) %= M;
  printf("%lld\n", ans * fac[n - 1] % M);
}
