#include<iostream>
using namespace std;
#define mod 1000000007
long long a,b,c;
long long fact[300000],inv[300000],factinv[300000],power[300000];
int ncr(int n,int r){
if(n-r==0 && r==-1){return 1;}
if(n-r<0 || r<0){return 0;}
return 1LL*fact[n]*factinv[r]%mod*factinv[n-r]%mod;
}
void equip(){
fact[0]=1;
for(int i=1;i<300000;i++){
fact[i]=(1LL*fact[i-1]*i)%mod;
}
inv[1]=1;
for(int i=2;i<300000;i++){
inv[i]=1LL*inv[mod%i]*(mod-mod/i)%mod;
}
factinv[0]=1;
for(int i=1;i<300000;i++){
factinv[i]=1LL*factinv[i-1]*inv[i]%mod;
}
power[0]=1;
for(int i=1;i<300000;i++){
power[i]=(1LL*power[i-1]*b)%mod;
}
}
int main(){
cin>>a>>b>>c;
long long sum=0;equip();
for(int i=0;i<a;i++){
int C=c-1,N=C+i;
sum+=(1LL*ncr(N,C)*power[a-1-i])%mod;
sum%=mod;
}
cout<<sum<<endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKbG9uZyBsb25nIGEsYixjOwpsb25nIGxvbmcgZmFjdFszMDAwMDBdLGludlszMDAwMDBdLGZhY3RpbnZbMzAwMDAwXSxwb3dlclszMDAwMDBdOwppbnQgbmNyKGludCBuLGludCByKXsKCWlmKG4tcj09MCAmJiByPT0tMSl7cmV0dXJuIDE7fQoJaWYobi1yPDAgfHwgcjwwKXtyZXR1cm4gMDt9CglyZXR1cm4gMUxMKmZhY3Rbbl0qZmFjdGludltyXSVtb2QqZmFjdGludltuLXJdJW1vZDsKfQp2b2lkIGVxdWlwKCl7CglmYWN0WzBdPTE7Cglmb3IoaW50IGk9MTtpPDMwMDAwMDtpKyspewoJCWZhY3RbaV09KDFMTCpmYWN0W2ktMV0qaSklbW9kOwoJfQoJaW52WzFdPTE7Cglmb3IoaW50IGk9MjtpPDMwMDAwMDtpKyspewoJCWludltpXT0xTEwqaW52W21vZCVpXSoobW9kLW1vZC9pKSVtb2Q7Cgl9CglmYWN0aW52WzBdPTE7Cglmb3IoaW50IGk9MTtpPDMwMDAwMDtpKyspewoJCWZhY3RpbnZbaV09MUxMKmZhY3RpbnZbaS0xXSppbnZbaV0lbW9kOwoJfQoJcG93ZXJbMF09MTsKCWZvcihpbnQgaT0xO2k8MzAwMDAwO2krKyl7CgkJcG93ZXJbaV09KDFMTCpwb3dlcltpLTFdKmIpJW1vZDsKCX0KfQppbnQgbWFpbigpewoJY2luPj5hPj5iPj5jOwoJbG9uZyBsb25nIHN1bT0wO2VxdWlwKCk7Cglmb3IoaW50IGk9MDtpPGE7aSsrKXsKCQlpbnQgQz1jLTEsTj1DK2k7CgkJc3VtKz0oMUxMKm5jcihOLEMpKnBvd2VyW2EtMS1pXSklbW9kOwoJCXN1bSU9bW9kOwoJfQoJY291dDw8c3VtPDxlbmRsOwoJcmV0dXJuIDA7Cn0=