#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxN = 3e6 + 5;
const int MOD = 1e9 + 7;
int n, k, L, H;
int fact[maxN], inv[maxN];
int Pow(int a, int b) {
if (b == 0) return 1;
int res = Pow(a, b / 2); res = 1ll * res * res % MOD;
if (b & 1) res = 1ll * res * a % MOD;
return res;
}
int C(int k, int n) {
if(k>n) return 0;
if(k<0 or n<0) return 0;
return (1ll * fact[n] * inv[n - k] % MOD) * inv[k] % MOD;
}
signed main() {
cin >> n >> k>>L>>H;
fact[0] = 1;
for (int i = 1; i <= n+k; i++) {
fact[i] = 1ll * fact[i - 1] * i % MOD;
}
inv[n+k] = Pow(fact[n+k], MOD - 2);
for (int i = n+k - 1; i >= 0; i--) {
inv[i] = 1ll * (i + 1) * inv[i + 1] % MOD;
}
n-=k*L;
H=H-L;
int res= C(k-1, n+k-1);
for(int i=1;i<=k;i++){
int x = C(k-1, n+k-1-i*(H+1));
if(i%2!=0){
res = (res - x*C(i,k)%MOD + MOD) % MOD;
}
else{
res = (res + x*C(i,k)%MOD) % MOD;
}
}
cout<<res;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCmNvbnN0IGludCBtYXhOID0gM2U2ICsgNTsKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmludCBuLCBrLCBMLCBIOwogCmludCBmYWN0W21heE5dLCBpbnZbbWF4Tl07CiAKaW50IFBvdyhpbnQgYSwgaW50IGIpIHsKICAgIGlmIChiID09IDApIHJldHVybiAxOwogICAgaW50IHJlcyA9IFBvdyhhLCBiIC8gMik7IHJlcyA9IDFsbCAqIHJlcyAqIHJlcyAlIE1PRDsKICAgIGlmIChiICYgMSkgcmVzID0gMWxsICogcmVzICogYSAlIE1PRDsKICAgIHJldHVybiByZXM7Cn0KIAppbnQgQyhpbnQgaywgaW50IG4pIHsKICAgIGlmKGs+bikgcmV0dXJuIDA7CiAgICBpZihrPDAgb3IgbjwwKSByZXR1cm4gMDsKICAgIHJldHVybiAoMWxsICogZmFjdFtuXSAqIGludltuIC0ga10gJSBNT0QpICogaW52W2tdICUgTU9EOwp9CiAKc2lnbmVkIG1haW4oKSB7CiAgICBjaW4gPj4gbiA+PiBrPj5MPj5IOwogICAgCiAgICBmYWN0WzBdID0gMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG4razsgaSsrKSB7CiAgICAgICAgZmFjdFtpXSA9IDFsbCAqIGZhY3RbaSAtIDFdICogaSAlIE1PRDsKICAgIH0KIAogICAgaW52W24ra10gPSBQb3coZmFjdFtuK2tdLCBNT0QgLSAyKTsKICAgIGZvciAoaW50IGkgPSBuK2sgLSAxOyBpID49IDA7IGktLSkgewogICAgICAgIGludltpXSA9IDFsbCAqIChpICsgMSkgKiBpbnZbaSArIDFdICUgTU9EOwogICAgfQogICAgbi09aypMOwogICAgSD1ILUw7CiAKICAgIGludCByZXM9IEMoay0xLCBuK2stMSk7CgogICAgZm9yKGludCBpPTE7aTw9aztpKyspewogICAgICBpbnQgeCA9IEMoay0xLCBuK2stMS1pKihIKzEpKTsKICAgICAgaWYoaSUyIT0wKXsKICAgICAgICByZXMgPSAocmVzIC0geCpDKGksayklTU9EICsgTU9EKSAlIE1PRDsKICAgICAgfQogICAgICBlbHNlewogICAgICAgIHJlcyA9IChyZXMgKyB4KkMoaSxrKSVNT0QpICUgTU9EOwogICAgICB9CiAgICB9CiAgICBjb3V0PDxyZXM7CiAgICByZXR1cm4gMDsKfQo=