#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef long double ld; const int N = 100005; const int inf = 1e9; const ll mod = 1e9 + 7; ll n, m, i, j, k, q, s, w, ans, x; int ind[N + 1]; int main() { cin >> n >> m >> x; m--; if (x == 1) { ans = m; for (int i = 4; i <= n; i++) { if (i % 2) { ans = ((ans + 1)*m) % mod; } else { if (!ans) { ans = ((mod - 1)*m) % mod; } else { ans = ((ans - 1)*m) % mod; } } } } else { ans = m-1; for (int i = 4; i <= n; i++) { if (!(i % 2)) { ans = (ans*m + 1) % mod; } else { ans = (ans*m) % mod; ans--; if (ans < 0) ans += mod; } } } cout << ans << endl; return 0; }