#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const int p=1000000007;
int n,m,x,y,q,K,a[1505],s[1505],*f,*F,*g,*G,*h,*H,sum,ans;
int f1[1505],f2[1505],g1[1505],g2[1505],h1[1505],h2[1505];
inline int qpow(int a,int b){
int res=1;
while(b){
if(b&1)res=(ll)res*a%p;
b>>=1,a=(ll)a*a%p;
}
return res;
}
int main(){
scanf("%d%d%d%d%d",&n,&m,&x,&y,&K);
q=(ll)x*qpow(y,p-2)%p;
for(int i=0,C=1;i<=m;++i){
if(i<=K)a[i]=(ll)C*qpow(q,i)%p*qpow(p+1-q,K-i)%p;
else a[i]=0;
s[i]=((i?s[i-1]:0)+a[i])%p;
C=(ll)C*(K-i)%p*qpow(i+1,p-2)%p;
}
f=f1,F=f2,g=g1,G=g2,h=h1,H=h2;
for(int j=1;j<=m;++j)f[j]=1;
for(int i=2;i<=n;++i){
sum=0;
for(int j=1;j<=m;++j){
F[j]=(ll)sum*s[m-j]%p;
sum=(sum+(ll)f[j]*a[j-1]+(ll)h[j]*s[j-1])%p;
H[j]=((ll)f[j]*a[j-1]%p*s[m-j]+(ll)g[j]*a[m-j]%p*s[j-1]+(ll)h[j]*s[j-1]%p*s[m-j])%p;
}
sum=0;
for(int j=m;j>=1;--j){
G[j]=(ll)sum*s[j-1]%p;
sum=(sum+(ll)g[j]*a[m-j]+(ll)h[j]*s[m-j])%p;
}
swap(f,F),swap(g,G),swap(h,H);
}
for(int j=1;j<=m;++j)
ans=(ans+(ll)f[j]*a[j-1]%p*s[m-j]+(ll)g[j]*a[m-j]%p*s[j-1]+(ll)h[j]*s[j-1]%p*s[m-j])%p;
printf("%d\n",ans);
return 0;
}
@AC_bee 大佬求解!!!