#include using namespace std; long long int a[100007]; long long int b[100007]; long countArray(int n, int k, int x) { if(n%2) { a[3]=k-2+(x==1); if(x==1) b[3]=1LL*(k-1)*(k-2); else b[3]=k-1+1LL*(k-2)*(k-2); int i; for(i=5;i<=n;i++) { a[i]=(a[i-2]*(k-1)+b[i-2]*(k-2))%1000000007; b[i]=((((a[i-2]*(k-1))%1000000007)*(k-2))%1000000007+b[i-2]*(k-1)+((b[i-2]*(k-2))%1000000007)*(k-2))%1000000007; } } else { a[2]=(x!=1); b[2]=k-2+(x==1); int i; for(i=4;i<=n;i++) { a[i]=(a[i-2]*(k-1)+b[i-2]*(k-2))%1000000007; b[i]=((((a[i-2]*(k-1))%1000000007)*(k-2))%1000000007+b[i-2]*(k-1)+((b[i-2]*(k-2))%1000000007)*(k-2))%1000000007; } } return a[n]; } int main() { int n; int k; int x; cin >> n >> k >> x; long answer = countArray(n, k, x); cout << answer << endl; return 0; }