using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { static long countArray(int n, int k, int x) { var m = 1000000007L; var r = x == 1 ? 0L : 1; var s = r ^ 1; for (var i = 2; i < n; ++i) { var t = r; r = (s * (k - 1) + r * (k - 2)) % m; s = t; } return r; } static void Main(String[] args) { string[] tokens_n = Console.ReadLine().Split(' '); int n = Convert.ToInt32(tokens_n[0]); int k = Convert.ToInt32(tokens_n[1]); int x = Convert.ToInt32(tokens_n[2]); long answer = countArray(n, k, x); Console.WriteLine(answer); } }