func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename tp>   inline void read(tp &x) {     x = 0;     char c = getchar();     int f = 0;     for (; c <  0  || c >  9 ; f |= c ==  - , c = getchar())       ;     for (; c >=  0  && c <=  9 ; x = (x << 3) + (x << 1) + c -  0 , c = getchar())       ;     if (f) x = -x;   }   namespace {   const int mo = 1e9 + 7;   inline int add(int x, int y) {     x += y;     return x >= mo ? x - mo : x;   }   inline int sub(int x, int y) {     x -= y;     return x < 0 ? x + mo : x;   }   inline int mul(int x, int y) { return (long long)x * y % mo; }   inline int power(int a, int k = mo - 2) {     int ans = 1;     for (; k; k >>= 1, a = mul(a, a))       if (k & 1) ans = mul(ans, a);     return ans;   }   inline void U(int &x, int y) { x = add(x, y); }   }  // namespace   const int N = 1e5 + 233;   int n, m, coefa, coefb, P, T;   int fac[N], ifac[N], p[N], sump[N];   inline int C(int n, int m) {     return n < m ? 0 : mul(fac[n], mul(ifac[m], ifac[n - m]));   }   int main(void) {     read(n);     read(m);     read(coefa);     read(coefb);     P = mul(coefa, power(coefb));     fac[0] = 1;     for (register int i = 1; i <= (N - 1); i++) fac[i] = mul(fac[i - 1], i);     for (register int i = 0; i < (int)N; i++) ifac[i] = power(fac[i]);     read(T);     for (register int i = 0; i < (int)m + 1; i++) {       if (i <= T)         p[i + 1] = mul(C(T, i), mul(power(P, i), power(1 + mo - P, T - i)));     }     for (register int i = 0; i < (int)m + 1; i++)       sump[i] = add(i ? sump[i - 1] : 0, p[i]);     vector<int> h(m + 2, 0);     h[m] = 1;     for (register int i = 1; i <= (n); i++) {       vector<int> new_h(m + 2, 0);       vector<int> f(m + 2, 0), g(m + 2, 0);       for (int r = 1; r <= m; r++) {         f[r] = add(f[r - 1], h[r]);         g[r] = add(g[r - 1], mul(f[r - 1], p[r]));       }       for (int r = 1; r <= m; r++) {         int rr = m - r + 1;         new_h[r] = sub(mul(sump[r], mul(p[rr], f[m])),                        add(mul(p[rr], g[r]), mul(mul(p[rr], f[m - r]), sump[r])));       }       swap(h, new_h);     }     int ans = 0;     for (auto i : h) U(ans, i);     cout << ans <<   n ;   }   