#include using namespace std; typedef long long ll; #define sc(x) scanf("%d",&x); #define sc2(x,y) scanf("%d%d",&x,&y); #define sc3(x,y,z) scanf("%d%d%d",&x,&y,&z); #define scl(x) scanf("%lld",&x); #define scl2(x,y) scanf("%lld%lld",&x,&y); #define scl3(x,y,z) scanf("%lld%lld%lld",&x,&y,&z); #define pb push_back #define mp make_pair #define fi first #define se second #define M 1000000007 #define inf 99999999999999999LL //long long inf #define debug(x) cerr<<#x<<" :: "<0) { if(exp&1) res=(res*base)%mod; base=(base*base)%mod; exp/=2; } return res%mod; } int main() { int i,j,t; scl3(n,k,x); ll answer = powd( k-1,n-2,M ) ; //debug(answer); ll cc = -1 ; for( i = n-3 ; i>=0;i--) { if( x==1 && i==0 ) continue ; answer = (answer + cc*powd( k-1,i,M )+M)%M; cc *= -1 ; } cout<