#include using namespace std; const int mod = 1000000007; int dp[100005][5]; int main(){ int n, k, x; scanf("%d %d %d", &n, &k, &x); dp[1][0] = 1; if ( x == 1 ) { for(int i = 2; i <= n; i ++ ){ dp[i][0] = dp[i-1][1]; dp[i][1] = (1LL * (k-1) * dp[i-1][0] + 1LL*(k-2) * dp[i-1][1]) % mod; } printf("%d\n", dp[n][0]); } else{ for(int i = 2; i <= n; i ++ ){ dp[i][0] = ( dp[i-1][1] + dp[i-1][2] ) % mod; //1 dp[i][1] = ( dp[i-1][0] + dp[i-1][2] ) % mod;//x dp[i][2] = (1LL * (k-2) * dp[i-1][0] + 1LL * (k-2) * dp[i-1][1] + 1LL * (k-3) * dp[i-1][2] ) % mod; } printf("%d\n", dp[n][1]); } return 0; }