#include using namespace std; typedef long long ll; const ll mod = 1000000007; ll qp(ll a, ll b, ll c) { a %= c; ll r = 1; while (b) { if (b & 1) r = r * a % c; a = a * a % c; b >>= 1; } return r; } int main() { ll n, m, d1, d2; cin >> n >> m >> d1 >> d2; if (n == 1) { cout << m % mod << endl; return 0; } if (m - 1 < (n - 1) * d1) { cout << 0 << endl; return 0; } if (d2 < d1) { cout << 0 << endl; return 0; } ll x = 2LL * m - (n - 1) * (d1 + d2); x %= mod; if (x < 0) x += mod; ll b = d2 - d1 + 1; ll p = qp(b, n - 1, mod); ll i2 = (mod + 1) / 2; ll a = x * p % mod; a = a * i2 % mod; cout << a << endl; return 0; }