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