#include <bits/stdc++.h>
const int YL = 1e9 + 7;
int ksm(int a, int b) {
  int res = 1;
  while (b) {
    if (b & 1) res = 1ll * res * a % YL;
    a = 1ll * a * a % YL;
    b >>= 1;
  }
  return res;
}
inline int in() {
  int k = 0;
  char ch = getchar();
  while (ch < '-') ch = getchar();
  while (ch > '-') k = k * 10 + ch - '0', ch = getchar();
  return k;
}
void QAQ(int &a, int &b, int aa, int bb, int qq) {
  a = 1ll * aa * ksm(qq, YL - 2) % YL;
  b = 1ll * bb * ksm(qq, YL - 2) % YL;
}
const int N = 2005;
int ppl[N], pre[N];
int f[N][N], sum[N][N], sum2[N][N];
inline int MO(const int &a) { return a >= YL ? a - YL : a; }
inline int OD(const int &a) { return a < 0 ? a + YL : a; }
inline int min(const int &a, const int &b) { return a < b ? a : b; }
int main() {
  int n = in(), m = in(), p = in(), q = in(), t = in();
  if (p == q) {
    puts(t * 2 >= m ? "0" : "1");
    return 0;
  }
  QAQ(p, q, p, q - p, q);
  int invq = ksm(q, YL - 2);
  for (int i = 0, qaq = ksm(q, t), dd = 1; i <= min(t, m); ++i,
           qaq = 1ll * qaq * p % YL * invq % YL,
           dd = 1ll * dd * (t - i + 1) % YL * ksm(i, YL - 2) % YL)
    ppl[i] = 1ll * dd * qaq % YL, pre[i] = MO(pre[i - 1] + ppl[i]);
  for (int i = min(t, m) + 1; i <= m; ++i) pre[i] = pre[i - 1];
  f[0][m] = sum[0][m] = 1;
  sum2[0][m] = ppl[m];
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      f[i][j] = OD(1ll * pre[j - 1] * (sum[i - 1][m] - sum[i - 1][m - j]) % YL);
      f[i][j] = 1ll * OD(f[i][j] - sum2[i - 1][j - 1]) * ppl[m - j] % YL;
    }
    for (int j = 1; j <= m; ++j) sum[i][j] = MO(sum[i][j - 1] + f[i][j]);
    for (int j = 1; j <= m; ++j)
      sum2[i][j] = MO(sum2[i][j - 1] + 1ll * ppl[j] * sum[i][j] % YL);
  }
  printf("%d\n", sum[n][m]);
  return 0;
}
