#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;
}
