#include <bits/stdc++.h>
using namespace std;
const int oo = 2139063143;
const int N = 3010;
const int P = 1000000007;
const double eps = 1e-7;
template <typename T>
inline void sc(T &x) {
  x = 0;
  static int p;
  p = 1;
  static char c;
  c = getchar();
  while (!isdigit(c)) {
    if (c == '-') p = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 1) + (x << 3) + (c - 48);
    c = getchar();
  }
  x *= p;
}
template <typename T>
inline void print(T x) {
  if (x < 0) putchar('-'), x = -x;
  if (x >= 10) print(x / 10);
  putchar(x % 10 + '0');
}
template <typename T>
inline void pr(T x) {
  print(x), putchar('\n');
}
template <typename T1, typename T2>
void chkmax(T1 &A, T2 B) {
  A = A >= B ? A : B;
}
template <typename T1, typename T2>
void chkmin(T1 &A, T2 B) {
  A = A <= B ? A : B;
}
int del(int x) { return x >= P ? x - P : x; }
void add(int &x, int y) { x = del(x + y); }
int ksm(int a, int b) {
  int ans = 1;
  while (b) {
    if (b & 1) ans = (long long)ans * a % P;
    a = (long long)a * a % P, b >>= 1;
  }
  return ans;
}
int jc[100100], inv[100100];
void init(int n) {
  jc[0] = jc[1] = inv[0] = inv[1] = 1;
  for (int i = 2; i <= n; i++)
    jc[i] = (long long)i * jc[i - 1] % P,
    inv[i] = (long long)(P - P / i) * inv[P % i] % P;
  for (int i = 2; i <= n; i++) inv[i] = (long long)inv[i] * inv[i - 1] % P;
}
int C(int n, int m) { return (long long)jc[n] * inv[m] % P * inv[n - m] % P; }
int q[N], s1[N], s2[N], f[N][N], g[N][N];
int main() {
  int n, m, a, b, k;
  sc(n), sc(m), sc(a), sc(b), sc(k);
  int p = (long long)a * ksm(b, P - 2) % P;
  init(k);
  for (int i = 0; i <= k; i++)
    q[i] = (long long)C(k, i) * ksm(p, i) % P * ksm(1 - p + P, k - i) % P;
  for (int i = 1; i <= m; i++) s2[i] = del(s2[i - 1] + q[i - 1]);
  f[0][m] = 1;
  for (int i = 0; i <= n; i++) {
    for (int r = 1; r <= m; r++) g[i][r] = del(g[i][r - 1] + f[i][r]);
    for (int r = 1; r <= m; r++)
      s1[r] = del(s1[r - 1] +
                  (long long)q[r - 1] * del(g[i][m] - g[i][r - 1] + P) % P);
    if (i == n) break;
    for (int r = 1; r <= m; r++)
      f[i + 1][r] = (long long)q[m - r] *
                    del(s1[r] - (long long)g[i][m - r] * s2[r] % P + P) % P;
  }
  pr(g[n][m]);
  return 0;
}
