#!/bin/python from sys import stdin, stderr def powmod(x, n, m): if n == 0: return 1 % m if (n & 1) != 0: return (powmod((x*x) % m, n/2, m) * x) % m else: return powmod((x*x) % m, n/2, m) def mod_inverse(a, m): return powmod(a, m-2, m) MOD = 1000000007 def countArray(n, k, x): if k == 2: if x == 1: return 1 if (n & 1) != 0 else 0 else: return 1 if (n & 1) == 0 else 0 total = powmod(k-1, n-1, MOD) if (n & 1) == 0: total += 1 else: total += MOD - 1 if total >= MOD: total -= MOD inv = mod_inverse(k, MOD) #print total, inv res = (total * inv) % MOD if x == 1: if (n & 1) == 0: res += MOD - 1 else: res += 1 if res >= MOD: res -= MOD return res if __name__ == "__main__": n, k, x = map(int, stdin.readline().split()) answer = countArray(n, k, x) print answer