#include <bits/stdc++.h>
using namespace std;
using INT = long long;
using pii = pair<int, int>;
using VI = vector<int>;
const int mod = 998244353;
int power(int a, int b, int m, int ans = 1) {
  for (; b; b >>= 1, a = 1LL * a * a % m)
    if (b & 1) ans = 1LL * ans * a % m;
  return ans;
}
int fac[200100], rev[200100];
void pre() {
  fac[0] = rev[0] = 1;
  for (int i = 1; i < 200100; i++) fac[i] = (INT)fac[i - 1] * i % mod;
  rev[200100 - 1] = power(fac[200100 - 1], mod - 2, mod);
  for (int i = 200100 - 2; i >= 1; i--)
    rev[i] = (INT)rev[i + 1] * (i + 1) % mod;
}
namespace fft {
const int root = 31;
const int root_1 = power(root, mod - 2, mod);
int mPow(int a, int x) { return power(a, x, mod); }
void fft(VI& a, bool invert) {
  int n = a.size();
  int PW = mPow(invert ? root_1 : root, (mod - 1) / n);
  for (int m = n, h; h = m / 2, m >= 2; PW = 1LL * PW * PW % mod, m = h) {
    for (int i = 0, w = 1; i < h; ++i, w = 1LL * w * PW % mod)
      for (int j = i; j < n; j += m) {
        int k = j + h, x = (a[j] - a[k] + mod) % mod;
        a[j] += a[k];
        a[j] %= mod;
        a[k] = 1LL * w * x % mod;
      }
  }
  for (int i = 0, j = 1; j < n - 1; ++j) {
    for (int k = n / 2; k > (i ^= k); k /= 2)
      ;
    if (j < i) swap(a[i], a[j]);
  }
  if (invert) {
    int rev = mPow(n, mod - 2);
    for (int i = 0; i < n; ++i) a[i] = 1LL * a[i] * rev % mod;
  }
}
VI multiply(VI& a, VI& b) {
  int sa = 0;
  while ((1 << sa) < a.size()) sa++;
  a.resize(1 << sa);
  sa = 0;
  while ((1 << sa) < b.size()) sa++;
  b.resize(1 << sa);
  int n = max(a.size(), b.size());
  VI na = a, nb = b;
  na.resize(2 * n);
  nb.resize(2 * n);
  fft(na, false);
  fft(nb, false);
  for (int i = 0; i < 2 * n; ++i) na[i] = 1LL * na[i] * nb[i] % mod;
  fft(na, true);
  return na;
}
};  // namespace fft
int calc(int n, int m) {
  if (n == 0) {
    if (m == 0) return 1;
    return 0;
  }
  if (n == 1) {
    if (m == 1) return 1;
    return 0;
  }
}
int _C(int n, int k) {
  if (n < k) return 0;
  return (INT)fac[n] * rev[k] % mod * rev[n - k] % mod;
}
vector<int> solve(int st, int ed) {
  if (st == ed) {
    vector<int> ans(2, 0);
    ans[0] = st;
    ans[1] = 1;
    return ans;
  }
  int md = (st + ed) >> 1;
  vector<int> a, b;
  a = solve(st, md);
  b = solve(md + 1, ed);
  vector<int> ans;
  ans = fft ::multiply(a, b);
  return ans;
}
int main() {
  int N, A, B;
  cin >> N >> A >> B;
  if (A == 0 or B == 0) {
    puts("0");
    return 0;
  }
  pre();
  int ans = 0;
  if (N <= 2) {
    for (int i = 1; i <= N; i++)
      ans = (ans + calc(i - 1, A - 1) * calc(N - i, B - 1));
    ans = ans * fac[N - 1];
    cout << ans << endl;
    return 0;
  }
  vector<int> vec;
  vec = solve(0, N - 2);
  ans = (INT)vec[A + B - 2] * _C(A + B - 2, A - 1) % mod;
  ans = (ans + mod) % mod;
  cout << ans << endl;
  return 0;
}
