#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
const int M = 1e9 + 7;

int n, k, x, f[N];

int main() {
    scanf("%d%d%d", &n, &k, &x);
    f[3] = x == 1 ? k - 1 : k - 2;
    long long b = (k - 1);
    for (int i = 4; i <= n; ++i) {
        b *= (k - 1);
        b %= M;
        f[i] = (b - f[i - 1]) % M;
    }
    int ans = f[n];
    if (ans < 0) ans += M;
    cout << ans << endl;
}