#include <bits/stdc++.h>
using namespace std;
int gi() {
  int x = 0, w = 1;
  char ch = getchar();
  while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
  if (ch == '-') w = 0, ch = getchar();
  while (ch >= '0' && ch <= '9')
    x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
  return w ? x : -x;
}
const int N = 1505;
const int mod = 1e9 + 7;
int n, m, p, t, K[N], pr[N], f[N][N], g[N][N];
int fastpow(int a, int b) {
  int res = 1;
  while (b) {
    if (b & 1) res = 1ll * res * a % mod;
    a = 1ll * a * a % mod;
    b >>= 1;
  }
  return res;
}
int main() {
  n = gi();
  m = gi();
  p = 1ll * gi() * fastpow(gi(), mod - 2) % mod;
  t = gi();
  for (int i = 0, C = 1; i <= m && i <= t;
       ++i, C = 1ll * C * (t - i + 1) % mod * fastpow(i, mod - 2) % mod)
    K[i] = 1ll * C * fastpow(p, i) % mod * fastpow(mod + 1 - p, t - i) % mod;
  pr[0] = K[0];
  for (int i = 1; i <= m; ++i) pr[i] = (pr[i - 1] + K[i]) % mod;
  for (int l = 1; l <= m; ++l) f[1][l] = 1ll * K[l - 1] * pr[m - l] % mod;
  for (int r = m; r >= 1; --r) g[1][r] = 1ll * K[m - r] * pr[r - 1] % mod;
  for (int l = 1; l <= m; ++l) f[1][l] = (f[1][l] + f[1][l - 1]) % mod;
  for (int r = m; r >= 1; --r) g[1][r] = (g[1][r] + g[1][r + 1]) % mod;
  for (int i = 1; i < n; ++i) {
    int all = f[i][m];
    for (int l = m, s = 0; l >= 1; --l) {
      s = (s + 1ll * f[i][l] * K[m - l]) % mod;
      f[i + 1][l] = 1ll * (s + 1ll * (g[i][l] - all + mod) * pr[m - l]) % mod *
                    K[l - 1] % mod;
    }
    for (int r = 1, s = 0; r <= m; ++r) {
      s = (s + 1ll * g[i][r] * K[r - 1]) % mod;
      g[i + 1][r] = 1ll * (s + 1ll * (f[i][r] - all + mod) * pr[r - 1]) % mod *
                    K[m - r] % mod;
    }
    for (int l = 1; l <= m; ++l)
      f[i + 1][l] = (f[i + 1][l] + f[i + 1][l - 1]) % mod;
    for (int r = m; r >= 1; --r)
      g[i + 1][r] = (g[i + 1][r] + g[i + 1][r + 1]) % mod;
  }
  printf("%d\n", f[n][m]);
  return 0;
}
