#include using namespace std; #define ll long long ll dp[100100][2],M=1e9+7; int main() { ll n,k,x,i; cin >> n >> k >> x; dp[3][0]=(k-1); dp[3][1]=(k-2); dp[2][0]=0; dp[2][1]=1; for (i=4;i<=n;i++) { dp[i][0]=(dp[i-2][0]*(k-1))%M; dp[i][0]+=(((dp[i-2][1]*(k-1))%M)*(k-2))%M; dp[i][0]%=M; dp[i][1]=(dp[i-2][0]*(k-2))%M; dp[i][1]+=(dp[i-2][1]*(k-1))%M; dp[i][1]+=(((dp[i-2][1]*(k-2))%M)*(k-2))%M; dp[i][1]%=M; } if (x==1) cout << dp[n][0] << endl; else cout<