#include <bits/stdc++.h>
using namespace std;
int n, W, B;
long long b[4005], f[4005][4005], ans = 0;
long long mo(long long a) {
  if (a >= 0 && a < 1000000009) return a;
  a %= 1000000009;
  if (a < 0) a += 1000000009;
  return a;
}
long long cal(int n, int m) { return f[m][n]; }
int main() {
  scanf("%d%d%d", &n, &W, &B);
  b[0] = 1;
  for (int i = 1; i <= max(W, B); i++) b[i] = mo(b[i - 1] * i);
  for (int i = 1; i <= max(W, B); i++) {
    f[i][1] = b[i];
    for (int j = 2; j <= n; j++)
      f[i][j] = mo(f[i - 1][j] * (i - 1 + j) + f[i - 1][j - 1] * j);
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j + i < n; j++)
      if (W >= i + j && B >= n - i - j)
        ans = mo(ans + cal(i + j, W) * cal(n - i - j, B));
  cout << ans << endl;
  return 0;
}
