#include <bits/stdc++.h>
using namespace std;
long long K(long long x, long long y = 998244353 - 2) {
  long long t = 1;
  x %= 998244353;
  for (; y; y >>= 1, x = x * x % 998244353)
    if (y & 1) t = t * x % 998244353;
  return t;
}
namespace FFT {
void fft(int *a, int n) {
  for (int i = 0, j; i < 1 << n; ++i) {
    for (int o = j = 0; o < n; ++o) j = j << 1 | i >> o & 1;
    if (i < j) swap(a[i], a[j]);
  }
  for (int o = 0, len, w0; o < n; ++o) {
    len = 1 << o;
    w0 = K(3, (998244353 - 1) / (len * 2));
    for (int i = 0; i < 1 << n; i += len * 2) {
      int *l = a + i, *r = a + i + len, w = 1, x, y;
      for (int j = 0; j < len; ++j) {
        x = l[j], y = 1ll * r[j] * w % 998244353;
        l[j] = x + y >= 998244353 ? x + y - 998244353 : x + y;
        r[j] = x - y < 0 ? x - y + 998244353 : x - y;
        w = (long long)w * w0 % 998244353;
      }
    }
  }
}
void realmain(int *a, int *b, int la, int lb) {
  int n = 0;
  for (; la + lb >= (1 << n);) ++n;
  for (register int i = la + 1; i < (1 << n); ++i) a[i] = 0;
  for (register int i = lb + 1; i < (1 << n); ++i) b[i] = 0;
  fft(a, n);
  fft(b, n);
  for (int i = 0; i < 1 << n; ++i) a[i] = 1ll * a[i] * b[i] % 998244353;
  reverse(a + 1, a + (1 << n));
  fft(a, n);
  long long inv = K(1 << n);
  for (int i = 0; i < 1 << n; ++i) a[i] = a[i] * inv % 998244353;
}
}  // namespace FFT
int n, A, B, a[271000], b[271000], la, lb;
vector<int> vec[404000];
void mg(vector<int> &res, vector<int> &x, vector<int> &y) {
  la = lb = -1;
  for (auto o : x) a[++la] = o;
  for (auto o : y) b[++lb] = o;
  FFT::realmain(a, b, la, lb);
  for (int i = 0; i <= la + lb; ++i) res.push_back(a[i]);
}
void que(int x, int l, int r) {
  if (l == r) return (void)(vec[x] = {l - 1, 1});
  int mid = l + r >> 1;
  que(x << 1, l, mid);
  que(x << 1 | 1, mid + 1, r);
  mg(vec[x], vec[x << 1], vec[x << 1 | 1]);
}
long long C(int x, int y) {
  long long res = 1;
  for (int i = 1; i <= y; ++i) {
    res = res * K(i) % 998244353;
    res = res * (x + 1 - i) % 998244353;
  }
  return res;
}
int main() {
  cin >> n >> A >> B;
  if (!A-- || !B--) return puts("0"), 0;
  if (A + B > n - 1) return puts("0"), 0;
  if (n > 1)
    que(1, 1, n - 1);
  else
    vec[1].push_back(1);
  cout << vec[1][A + B] * C(A + B, A) % 998244353 << endl;
}
