#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7, maxn = 1510;
long long n, m, P, p[maxn], pre[maxn], jie[100010], nijie[100010], ni[100010],
    k, f[maxn][maxn], sum[maxn][maxn];
long long qpow(long long a, long long b) {
  if (b < 0) return 0;
  long long res = 1;
  while (b) {
    if (b & 1) res = 1LL * res * a % mod;
    a = 1LL * a * a % mod;
    b >>= 1;
  }
  return res;
}
long long C(long long n, long long m) {
  if (n < m) return 0;
  return 1LL * jie[n] * nijie[m] % mod * nijie[n - m] % mod;
}
int main() {
  scanf("%lld%lld", &n, &m);
  long long a, b;
  scanf("%lld%lld", &a, &b);
  P = 1LL * a * qpow(b, mod - 2) % mod;
  scanf("%lld", &k);
  jie[0] = jie[1] = ni[0] = ni[1] = nijie[0] = nijie[1] = 1;
  for (long long i = 2; i <= k; i++) {
    jie[i] = 1LL * jie[i - 1] * i % mod;
    ni[i] = 1LL * (mod - mod / i) * ni[mod % i] % mod;
    nijie[i] = 1LL * nijie[i - 1] * ni[i] % mod;
  }
  for (long long i = 1; i <= m; i++) {
    p[i] = 1LL * qpow(P, i - 1) * qpow(1 - P + mod, k - i + 1) % mod *
           C(k, i - 1) % mod;
    pre[i] = (pre[i - 1] + p[i]) % mod;
  }
  f[0][m] = sum[0][m] = 1;
  for (long long i = 1; i <= n; i++) {
    long long res = 0;
    for (long long j = 1; j <= m; j++) {
      res = (res + 1LL * p[j] * sum[i - 1][m] % mod) % mod;
      res = (res - 1LL * p[j] * sum[i - 1][j - 1] % mod + mod) % mod;
      f[i][j] = 1LL * (res - 1LL * pre[j] * sum[i - 1][m - j] % mod + mod) %
                mod * p[m - j + 1] % mod;
      sum[i][j] = (sum[i][j - 1] + f[i][j]) % mod;
    }
  }
  printf("%lld\n", sum[n][m]);
  return 0;
}
