#include using namespace std; long countArray(int n, int k,vector& differentSE,vector& sameSE, bool same) { if(n==2){ if(same)return 0; return 1; } if(same&&sameSE[n-1]!=-1)return sameSE[n-1]; if(!same&&differentSE[n-1]!=-1)return differentSE[n-1]; long result; if(same){ result = (k-1)*countArray(n-1,k,differentSE,sameSE,false); result%=1000000007; sameSE[n-1]=result; }else{ result = (k-2)*countArray(n-1,k,differentSE,sameSE,false)+countArray(n-1,k,differentSE,sameSE,true); result%=1000000007; differentSE[n-1]=result; } return result; } int main() { int n; int k; int x; cin >> n >> k >> x; vector differentSE(n,-1); vector sameSE(n,-1); long answer = countArray(n, k,differentSE, sameSE, (x==1)); cout << answer << endl; return 0; }