import bisect import itertools import math import os import random import re import string import sys from heapq import * ################################################################################ getArray = lambda : map(int, raw_input().strip().split()) getInt = lambda : int(raw_input().strip()) ################################################################################ MOD = 1000000007 #sys.stdisn = open("In.txt", "r") ################################################################################ n, k, x = getArray() D = { 1: 0, 2: 1 } for i in xrange(2, n): d1 = (k - 1)*D[2] d2 = D[1] + (k - 2)*D[2] D[1] = d1 % MOD D[2] = d2 % MOD #print i, D print D[1] if x == 1 else D[2]