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<cstdio>
#include<iostream>
using namespace std;
const int mod=1e9+9;
const int N=4000+10;
typedef __int64 LL;
LL _pow(LL a,int b){
    LL c=1;
    while(b){
        if(b&1){
            c*=a;c%=mod;
        }
        a*=a;a%=mod;b/=2;
    }
    return c;
}
LL jie[N],inv[N];
void init(){
    jie[0]=inv[0]=1;
    int n=4000;
    for(int i=1;i<=n;i++){
        jie[i]=jie[i-1]*i%mod;
        inv[i]=_pow(jie[i],mod-2);
    }
}
LL C(int a,int b){
    if(a<b)return 0;
    return jie[a]*inv[a-b]%mod*inv[b]%mod;
}
LL fun(int x,int y){
    return C(x-y+y-1,y-1);
}
int main(){
    #ifdef DouBi
    freopen("in.cpp","r",stdin);
    #endif // DouBi
    init();
    int n,w,b;//////////
    while(scanf("%d%d%d",&n,&w,&b)!=EOF){
        LL ans=0;
        for(int i=max(1,n-w);i<=min(n-2,b);i++){
            //printf("%d",i);
            ans+=fun(w,i)*fun(w,n-i)%mod*jie[w]%mod*jie[b]%mod*(n-(i+1))%mod;ans%=mod;
        }
        printf("%I64d\n",ans);
    }
    return 0;
}
