#include <bits/stdc++.h>
using namespace std;
inline int Read() {
  int X = 0, flag = 1;
  char ch = 0;
  while (ch < '0' || ch > '9') {
    if (ch == '-') flag = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9')
    X = (X << 3) + (X << 1) + ch - 48, ch = getchar();
  return X * flag;
}
inline void Write(int x) {
  if (x < 0) x = -x, putchar('-');
  if (x > 9) Write(x / 10);
  putchar(x % 10 + 48);
}
int f[100005], invf[100005];
inline int qp(int x, int y) {
  if (y < 0) return 0;
  int tans = 1;
  while (y) {
    if (y & 1) tans = (long long)tans * x % 1000000007;
    x = (long long)x * x % 1000000007;
    y >>= 1;
  }
  return tans;
}
inline int C(int x, int y) {
  if (x < y) return 0;
  if (y == 0) return 1;
  if (x == y) return 1;
  return (long long)f[x] * invf[y] % 1000000007 * invf[x - y] % 1000000007;
}
int pr[1505], qzpr[1505];
int dpr[2][1505], sum_dpr[2][1505], P[2][1505];
int main() {
  int n = Read(), m = Read();
  int a = Read(), b = Read();
  int p = (long long)a * qp(b, 1000000007 - 2) % 1000000007,
      _p = (1 - p + 1000000007) % 1000000007;
  int t = Read();
  for (int i = f[0] = 1; i <= t; i++)
    f[i] = (long long)f[i - 1] * i % 1000000007;
  invf[t] = qp(f[t], 1000000007 - 2);
  for (int i = t - 1; i > 0; i--)
    invf[i] = (long long)invf[i + 1] * (i + 1) % 1000000007;
  for (int i = 0; i <= m; i++)
    pr[i] =
        (long long)qp(p, i) * qp(_p, t - i) % 1000000007 * C(t, i) % 1000000007,
    qzpr[i] = (qzpr[i - 1] + pr[i]) % 1000000007;
  dpr[0][m] = sum_dpr[0][m] = 1;
  for (int i = 1; i <= m; i++)
    P[0][i] =
        (P[0][i - 1] + (long long)pr[i - 1] * sum_dpr[0][i - 1] % 1000000007) %
        1000000007;
  for (int i = 1; i <= n; i++) {
    int now = i & 1, pre = now ^ 1;
    for (int j = 1; j <= m; j++)
      dpr[now][j] =
          ((long long)(sum_dpr[pre][m] - sum_dpr[pre][m - j] + 1000000007) %
               1000000007 * qzpr[j - 1] % 1000000007 -
           P[pre][j] + 1000000007) %
          1000000007 * pr[m - j] % 1000000007;
    for (int j = 1; j <= m; j++)
      sum_dpr[now][j] = (sum_dpr[now][j - 1] + dpr[now][j]) % 1000000007;
    for (int j = 1; j <= m; j++)
      P[now][j] = (P[now][j - 1] +
                   (long long)pr[j - 1] * sum_dpr[now][j - 1] % 1000000007) %
                  1000000007;
  }
  Write(sum_dpr[n & 1][m]);
  (putchar('\n'));
  fclose(stdin);
  fclose(stdout);
  return 0;
}
