#include <bits/stdc++.h>
using namespace std;
int N, a, b, tot, s, rev[400005];
long long fac[200005] = {1}, inv[200005], F[400005], G[400005];
const long long mod = 998244353;
vector<long long> ve[400005];
inline int read() {
  int w = 0, f = 1;
  char ch = 0;
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9')
    w = (w << 1) + (w << 3) + ch - '0', ch = getchar();
  return w * f;
}
long long ksm(long long a, long long p) {
  long long ret = 1;
  while (p) {
    if (p & 1) (ret *= a) %= mod;
    (a *= a) %= mod, p >>= 1;
  }
  return ret;
}
void ntt(long long *a, int n, int INV) {
  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) {
    long long wn = ksm(3, (mod - 1) / i / 2);
    if (INV == -1) wn = ksm(wn, mod - 2);
    for (int j = 0; j < n; j += i * 2) {
      long long w = 1;
      for (int k = j; k < i + j; k++) {
        long long x = a[k], y = w * a[k + i] % mod;
        a[k] = (x + y) % mod, a[k + i] = (x - y + mod) % mod, (w *= wn) %= mod;
      }
    }
  }
  if (INV == -1) {
    long long temp = ksm(n, mod - 2);
    for (int i = 0; i < n; i++) (a[i] *= temp) %= mod;
  }
}
void solve(int k, int l, int r) {
  if (l == r) {
    ve[k].push_back(l), ve[k].push_back(1);
    return;
  }
  int mid = l + r >> 1;
  solve(k << 1, l, mid), solve(k << 1 | 1, mid + 1, r), s = 2, tot = 1;
  while (s <= r - l + 3) s <<= 1, tot++;
  for (int i = 0; i < s; i++)
    rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (tot - 1));
  for (int i = 0; i < ve[k << 1].size(); i++) F[i] = ve[k << 1][i];
  for (int i = ve[k << 1].size(); i < s; i++) F[i] = 0;
  for (int i = 0; i < ve[k << 1 | 1].size(); i++) G[i] = ve[k << 1 | 1][i];
  for (int i = ve[k << 1 | 1].size(); i < s; i++) G[i] = 0;
  ntt(F, s, 1), ntt(G, s, 1);
  for (int i = 0; i < s; i++) (F[i] *= G[i]) %= mod;
  ntt(F, s, -1);
  for (int i = 0; i <= r - l + 1; i++) ve[k].push_back(F[i]);
}
int main() {
  for (int i = 1; i <= 200000; i++) fac[i] = fac[i - 1] * i % mod;
  inv[200000] = ksm(fac[200000], mod - 2);
  for (int i = 199999; ~i; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
  N = read(), a = read(), b = read();
  if (!a || !b || a + b - 1 > N) return puts("0"), 0;
  if (N == 1) return puts("1"), 0;
  solve(1, 0, N - 2), printf("%lld\n", ve[1][a + b - 2] * fac[a + b - 2] % mod *
                                           inv[a - 1] % mod * inv[b - 1] % mod);
  return 0;
}
