import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static long countArray(int n, int k, int x,long arr1[],long arr2[]) { // Return the number of ways to fill in the array. if(n<2) return 0l; if(n==3&&x==1) return k-1; if(n==3&&x!=1) return k-2; if(n==2&&x==1) return 0; if(n==2&&x!=1) return 1; return (k*arr2[n-3]-2*arr2[n-3]+countArray(n-2,k,x,arr1,arr2)+(long)(Math.pow(10,9)+7))%(long)(Math.pow(10,9)+7); } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int k = in.nextInt(); int x = in.nextInt(); long arr1[]=new long[100009]; long arr2[]=new long[100009]; arr1[0]=1l; arr2[0]=1l; for(int i=1;i<=n;i++) { arr1[i]=arr1[i-1]*k; arr2[i]=arr2[i-1]*(k-1); arr1[i]%=(long)(Math.pow(10,9)+7); arr2[i]%=(long)(Math.pow(10,9)+7); } long answer = countArray(n, k, x,arr1,arr2); System.out.println(answer); in.close(); } }