#include <bits/stdc++.h>
using namespace std;
const int maxn = 2010;
const int maxk = 100010;
const long long mo = (long long)1e9 + 7;
long long p[maxk], p2[maxk];
long long dp[maxn][maxn];
long long sum[maxn], sumr[maxn][maxn], suml[maxn][maxn], sumpl[maxn];
long long fac[maxk], inv[maxk];
long long pl[maxn], pr[maxn];
int n, m, k;
inline long long ksm(long long x, long long y) {
  long long res = 1;
  for (; y; y >>= 1, x = x * x % mo)
    if (y & 1) res = res * x % mo;
  return res;
}
long long C(int p, int q) { return fac[p] * inv[q] % mo * inv[p - q] % mo; }
int main() {
  long long a, b;
  scanf("%d%d", &n, &m);
  scanf("%lld%lld", &a, &b);
  scanf("%d", &k);
  p2[0] = 1;
  p2[1] = a * ksm(b, mo - 2) % mo;
  p[0] = 1;
  p[1] = (mo + 1 - p2[1]) % mo;
  for (int i = 2; i <= k; ++i)
    p[i] = p[i - 1] * p[1] % mo, p2[i] = p2[i - 1] * p2[1] % mo;
  fac[0] = 1;
  for (int i = 1; i <= k; ++i) fac[i] = fac[i - 1] * i % mo;
  inv[k] = ksm(fac[k], mo - 2);
  for (int i = k - 1; i >= 0; --i) inv[i] = inv[i + 1] * (i + 1) % mo;
  for (int i = 0; i <= m - 1; ++i) {
    if (i > k) {
      pl[i + 1] = 0;
    }
    pl[i + 1] = C(k, i) * p2[i] % mo * p[k - i] % mo;
    pr[m - i] = pl[i + 1];
  }
  for (int i = 1; i <= m; ++i) sumpl[i] = (sumpl[i - 1] + pl[i]) % mo;
  sumr[0][m] = 1;
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j)
      sum[j] = (sum[j - 1] + pl[j] * sumr[i - 1][j - 1] % mo) % mo;
    for (int j = 1; j <= m; ++j)
      dp[i][j] =
          ((pr[j] * (sumr[i - 1][m] - suml[i - 1][j + 1]) % mo * sumpl[j] -
            pr[j] * sum[j]) %
               mo +
           mo) %
          mo;
    for (int j = 1; j <= m; ++j) sumr[i][j] = (sumr[i][j - 1] + dp[i][j]) % mo;
    for (int j = 1; j <= m; ++j) suml[i][j] = sumr[i][m - j + 1];
  }
  sumr[n][m] = (sumr[n][m] + mo) % mo;
  printf("%lld", sumr[n][m]);
}
