#include <bits/stdc++.h>
using namespace std;
const int maxn = 1505, p = 1e9 + 7;
struct Int {
  int a;
  int operator=(int x) { return a = x; }
  Int operator+(Int x) {
    Int y;
    y = a + x.a;
    if (y.a >= p) y.a -= p;
    return y;
  }
  Int operator-(Int x) {
    Int y;
    y = a - x.a;
    if (y.a < 0) y.a += p;
    return y;
  }
  Int operator*(Int x) {
    Int y;
    y = 1LL * a * x.a % p;
    return y;
  }
  Int operator*(int x) {
    Int y;
    y = 1LL * a * x % p;
    return y;
  }
  Int operator/(Int x) {
    Int y;
    y = a;
    return y * x.inv();
  }
  Int pow(long long b) {
    Int x, y;
    x = a;
    y = 1;
    for (; b; b >>= 1, x = x * x)
      if (b & 1) y = y * x;
    return y;
  }
  Int inv() { return pow(p - 2); }
};
int n, m, i, j;
Int f[maxn], g, gs[2][maxn], fac[100005], _fac[100005], sum1, sum2;
void Input() {
  int K;
  Int u, v;
  scanf("%d%d%d%d%d", &n, &m, &u.a, &v.a, &K);
  u = u * v.inv();
  v = (1 - u.a + p) % p;
  for (fac[0] = i = 1; i <= K; i++) fac[i] = fac[i - 1] * i;
  for (_fac[K] = fac[K].inv(), i = K; i; i--) _fac[i - 1] = _fac[i] * i;
  for (i = 0; i <= K && i <= m; i++)
    f[i] = fac[K] * _fac[i] * _fac[K - i] * u.pow(i) * v.pow(K - i);
}
int main() {
  Input();
  int prv = 0, nxt = 1;
  gs[prv][m] = 1;
  for (i = 1; i <= n; i++, swap(prv, nxt))
    for (sum1 = sum2 = 0, j = 1; j <= m; j++) {
      sum1 = sum1 + f[j - 1];
      sum2 = sum2 + f[j - 1] * gs[prv][j - 1];
      g = (sum1 * (gs[prv][m] - gs[prv][m - j]) - sum2) * f[m - j];
      gs[nxt][j] = gs[nxt][j - 1] + g;
    }
  printf("%d\n", gs[prv][m].a);
  return 0;
}
