#include using lint=long long; lint inverse(lint a, lint m){ lint u=0,v=1; while(a!=0){ lint t=m/a; m-=t*a;std::swap(a,m); u-=t*v;std::swap(u,v); } assert(m==1); return u; } lint mod=1'000'000'007; int main(){ std::cin.tie(nullptr);std::ios_base::sync_with_stdio(false); std::cout.setf(std::ios_base::fixed);std::cout.precision(15); lint n,m,K,p,q;std::cin>>n>>m>>K>>p>>q; p=p*inverse(q,mod)%mod; lint A=0,B=0; for(lint i=0;i>x; (i>zero(2,std::vector(2)); auto a=zero; for(lint i=0;i<2;i++)for(lint j=0;j<2;j++){ a.at(i).at(j)=i==j?(mod+1-p)%mod:p; } auto mul=[zero](auto&&a,auto&&b){ auto c=zero; for(lint i=0;i<2;i++)for(lint j=0;j<2;j++)for(lint k=0;k<2;k++){ c.at(i).at(k)+=a.at(i).at(j)*b.at(j).at(k); } for(lint i=0;i<2;i++)for(lint j=0;j<2;j++)c.at(i).at(j)%=mod; return c; }; auto b=zero; for(lint i=0;i<2;i++)for(lint j=0;j<2;j++){ b.at(i).at(j)=i==j; } for(;K;K/=2){ if(K%2)b=mul(b,a); a=mul(a,a); } std::cout<<(b.at(0).at(0)*A+b.at(0).at(1)*B)%mod<<'\n'; }