#include #include using namespace std; typedef long long LL; const int MOD = 1000000007; LL ans; int n, m, d1, d2; void DFS(int pos, int val) { if (pos == n) { ans = (ans + 1) % MOD; return; } int ed = min(val + d2, m); for (int nxt = val + d1; nxt <= ed; ++nxt) { DFS(pos + 1, nxt); } } /** * 暴力分: * 20分----D1=D2 * 4分-----DFS */ int main() { // freopen("ap.in", "r", stdin); // freopen("ap.out", "w", stdout); scanf("%d%d%d%d", &n, &m, &d1, &d2); if (d1 == d2) { LL x = m - 1LL * (n - 1) * d1; printf("%lld\n", x < 1 ? 0 : x % MOD); } else { for (int i = 1; i <= m; ++i) { DFS(1, i); } printf("%lld\n", ans); } return 0; }