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;
int const maxn = 4050;
int const maxlen = int(2e6 + 12);
int const inf = int(1e9 + 7);
long long const linf = long long(1e18 + 12);
long double const eps = 1e-7;
long double const pi = 3.1415926535897932384626433832795l;
template <typename T>
bool umax(T& a, T b) {
  return a < b ? (a = b, 1) : 0;
}
template <typename T>
bool umin(T& a, T b) {
  return a > b ? (a = b, 1) : 0;
}
int n, w, b;
int dp[maxn][maxn];
int C[maxn][maxn];
int f[maxn];
int const mod = int(1e9) + 9;
int A(int n, int k) { return (C[n][k] * 1ll * f[k]) % mod; }
void add(int& a, int b) { a = (a + 0ll + b) % mod; }
int main() {
  scanf("%d%d%d", &n, &w, &b);
  int N = maxn - 1;
  f[0] = 1;
  for (int i = 1; i < N; i++) f[i] = (f[i - 1] * 1ll * i) % mod;
  for (int n = 1; n < N; n++) {
    C[n][0] = C[n][n] = 1;
    for (int k = 1; k < n; k++) add(C[n][k], C[n - 1][k - 1] + C[n - 1][k]);
  }
  int ans = 0;
  for (int cnt1 = 1; cnt1 + 2 <= n && cnt1 + 1 <= w; cnt1++)
    for (int cnt2 = 1; cnt1 + cnt2 + 1 <= n && cnt2 <= b; cnt2++) {
      int cnt3 = n - cnt1 - cnt2;
      if (cnt3 < 1 || cnt1 + cnt3 > w) continue;
      printf("%d %d %d =%d\n", cnt1, cnt2, cnt3,
             int((A(w, cnt1) * 1ll * A(b, cnt2) * A(w - cnt1, cnt3)) % mod));
      add(ans, (A(w, cnt1) * 1ll * A(b, cnt2) * A(w - cnt1, cnt3)) % mod);
    }
  printf("%d", ans);
}
