func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1.5e3 + 5;   const int T = 1e5 + 5;   const int mod = 1e9 + 7;   int n, m, a, b, p, t;   int fac[T], inv[T], res;   int P[N], F[N], SP[N], SPL[N], S[N][N], L[N][N];   namespace _ {   inline int mul(int x, int y) { return 1ll * x * y % mod; }   inline int dec(int x, int y) {     x -= y;     if (x < 0) x += mod;     return x;   }   inline int add(int x, int y) {     x += y;     if (x >= mod) x -= mod;     return x;   }   inline int modpow(int x, int y, int res = 1) {     for (; y; y >>= 1, x = mul(x, x))       if (y & 1) res = mul(res, x);     return res;   }   inline int C(int n, int m) {     if (m > n) return 0;     return mul(fac[n], mul(inv[m], inv[n - m]));   }   template <typename _Tp>   inline void IN(_Tp& x) {     char ch;     bool flag = 0;     x = 0;     while (ch = getchar(), !isdigit(ch))       if (ch ==  - ) flag = 1;     while (isdigit(ch)) x = x * 10 + ch -  0 , ch = getchar();     if (flag) x = -x;   }   }  // namespace _   using namespace _;   int main() {     fac[0] = inv[0] = 1;     IN(n), IN(m), IN(a), IN(b), IN(t), p = mul(a, modpow(b, mod - 2));     for (int i = 1; i <= t; ++i) fac[i] = mul(fac[i - 1], i);     for (int i = 1; i <= t; ++i) inv[i] = modpow(fac[i], mod - 2);     for (int i = 0; i <= m; ++i)       if (i <= t)         P[i] = mul(C(t, i), mul(modpow(p, i), modpow(dec(1, p), t - i)));     for (int i = 0; i <= m; ++i) SP[i] = i ? add(P[i], SP[i - 1]) : P[i];     S[0][m] = F[0] = 1;     for (int i = 1; i <= n; ++i) {       for (int r = 1; r <= m; ++r) {         res = dec(mul(SP[r - 1], dec(F[i - 1], L[i - 1][m - r + 1])), SPL[r]);         S[i][r] = mul(P[m - r], res), L[i][r + 1] = add(L[i][r], S[i][r]);         SPL[r] = add(SPL[r - 1], mul(P[r - 1], L[i][r]));       }       for (int r = 1; r <= m; ++r) F[i] = add(F[i], S[i][r]);     }     printf( %d n , F[n]);     return 0;   }   