3 3 1
 300 2 300
 4000 4000 1
 4000 4000 100
 4 2 3
 3 300 300
 4000 100 4000
 3 300 1
 300 300 1
 4000 1000 3000
 3 2 4000
 4 3 2
 3 2 300
 4000 3998 2
 100 200 300
 300 300 300
 3 3 3
 10 10 10
 10 4 9
 239 300 231
 4000 2 3998
 200 100 300
 4000 2000 2000
 4000 4000 4000
 10 7 5
 4000 100 3900
 3 4000 4000

12
 775907030
 63263244
 994443885
 24
 496527918
 908339579
 828107078
 775907030
 876839920
 938379934
 48
 196174631
 296557186
 316471646
 375912430
 72
 318389383
 135283173
 774612666
 686088712
 949581532
 310481606
 997463324
 130636800
 221262673
 680114446

#include <bits/stdc++.h>
using namespace std;
inline long long max(long long a, long long b) { return a > b ? a : b; }
inline long long min(long long a, long long b) { return a > b ? b : a; }
template <typename T>
inline int read(T& res) {
  long long x = 0, f = 1, flag = 0;
  char ch;
  flag = ch = getchar();
  if (flag == -1) return -1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    flag = ch = getchar();
    if (flag == -1) return -1;
  }
  while (ch >= '0' && ch <= '9' && flag != -1) {
    x = (x << 1) + (x << 3) + (ch ^ 48);
    flag = ch = getchar();
  }
  res = x * f;
  return flag;
}
template <typename T, typename... Args>
inline int read(T& t, Args&... a) {
  int res;
  res = read(t);
  if (res == -1) return -1;
  res = read(a...);
  return res;
}
const int maxn = 5511, mod = 998244353;
long long n, m, k;
long long qpow(long long x, long long y) {
  long long ans = 1;
  while (y) {
    if (y & 1) ans = (ans * x) % mod;
    y >>= 1;
    x = (x * x) % mod;
  }
  return ans % mod;
}
long long C(long long x, long long y) {
  long long ans = 1, inv = 1;
  while (y) {
    ans = (ans * x) % mod;
    inv = y * inv % mod;
    y--;
    x--;
  }
  return (ans * qpow(inv, mod - 2)) % mod;
}
long long A[maxn], A2[maxn], w, b;
inline void solve() {
  long long ans = 0;
  A[1] = w, A2[1] = 1;
  for (int i = 2; i <= w; i++)
    A[i] = (A[i - 1] * (w - i + 1)) % mod, A2[i] = A2[i - 1] * i % mod;
  int lim = max(2, n - b);
  for (int x = min(n - 1, w); x >= lim; x--) {
    ans = (ans + (A[x] * C(b, n - x) % mod) * A2[n - x]) % mod;
  }
  if (w >= n) ans = (ans + C(w, n) * A[n]) % mod;
  cout << ans << endl;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int t = 1;
  while (cin >> n >> w >> b) solve();
}
