MOD = 1000000007 def countArray(n, k, x): if x == 1: dp = [[0, 0] for _ in xrange(n)] # [#1, #other] dp[0][0] = 1 k1 = max(0, k - 1) k2 = max(0, k - 2) for i in xrange(n - 1): dp[i + 1][0] = dp[i][1] % MOD dp[i + 1][1] = (dp[i][0] * k1 + dp[i][1] * k2) % MOD return dp[n - 1][0] else: dp = [[0, 0, 0] for _ in xrange(n)] # [#1, #x, #other] dp[0][0] = 1 k2 = max(0, k - 2) k3 = max(0, k - 3) for i in xrange(n - 1): dp[i + 1][0] = (dp[i][1] + dp[i][2]) % MOD dp[i + 1][1] = (dp[i][0] + dp[i][2]) % MOD dp[i + 1][2] = ((dp[i][0] + dp[i][1]) * k2 + dp[i][2] * k3) % MOD return dp[n - 1][1] if __name__ == "__main__": n, k, x = raw_input().strip().split(' ') n, k, x = [int(n), int(k), int(x)] answer = countArray(n, k, x) print answer