#include #define int long long int read(){ char c=getchar();while (c!='-'&&(c<'0'||c>'9'))c=getchar(); int k=1,kk=0;if (c=='-')c=getchar(),k=-1; while (c>='0'&&c<='9')kk=kk*10+c-'0',c=getchar();return kk*k; }using namespace std; int n,m,k,f[1000000],g[1000000],lsg; signed main(){ n=read();m=read();k=read();lsg=1e9+7; if (k!=1)f[1]=1,g[1]=0;else f[1]=0,g[1]=1; for (int i=2;i<=n;i++)f[i]=(f[i-1]*(m-2)%lsg+g[i-1]*(m-1)%lsg)%lsg,g[i]=f[i-1]; cout<