#include using namespace std; const int mod = 1e9 + 7; int f[1010][1010], s[1010][1010]; int main() { int n, m, d1, d2; cin >> n >> m >> d1 >> d2; if (d1 > d2) { cout << 0 << endl; return 0; } for (int j = 1; j <= m; j++) f[1][j] = 1; for (int j = 1; j <= m; j++) s[1][j] = (s[1][j - 1] + f[1][j]) % mod; for (int i = 2; i <= n; i++) { for (int j = 1; j <= m; j++) { int l = max(1, j - d2); int r = j - d1; if (r < 1) { f[i][j] = 0; } else { r = min(r, m); f[i][j] = (s[i - 1][r] - s[i - 1][l - 1] + mod) % mod; } } for (int j = 1; j <= m; j++) s[i][j] = (s[i][j - 1] + f[i][j]) % mod; } cout << s[n][m] << endl; return 0; }