#include <bits/stdc++.h>
using namespace std;
const long long mo = 1e9 + 7, maxn = 2001, maxm = 1e5 + 10;
long long c[maxn], inv[maxm], fac[maxm];
long long qpow(long long a, long long b) {
  long long res = 1;
  for (; b; b >>= 1, a = a * a % mo)
    if (b & 1) res = res * a % mo;
  return res;
}
long long p, a, b, t, n, m, dp[maxn][maxn], s[maxn][maxn], r[maxn][maxn],
    l[maxn][maxn];
long long cal(long long n, long long m) {
  return fac[n] * inv[m] % mo * inv[n - m] % mo;
}
void prep() {
  inv[0] = fac[0] = 1;
  for (long long i = 1; i <= 100000; i++)
    fac[i] = fac[i - 1] * i % mo, inv[i] = qpow(fac[i], mo - 2);
  p = a * qpow(b, mo - 2) % mo;
  for (long long i = 0; i <= min(t, m); i++)
    c[i] = cal(t, i) * qpow(p, i) % mo * qpow((1 - p + mo) % mo, t - i) % mo;
}
signed main() {
  scanf("%lld%lld%lld%lld%lld", &n, &m, &a, &b, &t);
  prep();
  dp[0][m] = s[0][m] = 1;
  for (long long i = 1; i <= n; i++) {
    for (long long j = 1; j <= m; j++) {
      l[i][j] = (l[i][j - 1] + c[j - 1]) % mo;
      r[i][j] = (r[i][j - 1] +
                 (s[i - 1][m] - s[i - 1][j - 1] + mo) % mo * c[j - 1] % mo) %
                mo;
    }
    for (long long j = 1; j <= m; j++) {
      dp[i][j] =
          (r[i][j] - s[i - 1][m - j] * l[i][j] % mo + mo) % mo * c[m - j] % mo;
      s[i][j] = (s[i][j - 1] + dp[i][j]) % mo;
    }
  }
  cout << s[n][m];
}
