#!/bin/python import sys from itertools import product def no_repeats(ar, x): ar_len = len(ar) ar = ar+(x,) #print ar, for i in range(ar_len): if ar[i] == ar[i+1]: return False return True def countArrayHard(n, k, x): # Return the number of ways to fill in the array. #if k == 2: # if n%2 == 1: # return 0 # else: # return 1 count=0 for ar in product(range(1,k+1), repeat=n-2): if ar[0] != 1: ar = (1,)+ar if no_repeats(ar,x): count+=1 #print count return count%(10**9+7) def countArray(n, k, x): #if k == 2: # if n%2 == 1: # return 0 # else: # return 1 start = k-2 for i in range(n-3): start = start*(k-1) if i%2==0: start += 1 else: start += -1 if x==1: if n%2 == 1: start = start+1 else: start = start-1 return start%(10**9+7) if __name__ == "__main__": n, k, x = raw_input().strip().split(' ') n, k, x = [int(n), int(k), int(x)] #answer_hard = countArrayHard(n, k, x) answer = countArray(n, k, x) #print answer_hard, answer print answer