#include using namespace std; #define mid (lf + rg >> 1) #define right (left | 1) #define left (v << 1) #define pb push_back #define mp make_pair #define nd second #define st first typedef long long ll; typedef pair < int, int > pii; const ll linf = 2e18 + 9; const int inf = 1e9 + 9; const int mod = 1e9 + 7; const int N = 2e6 + 9; const int kokn = 350; const int logN = 18; ll n, k, x; ll pw(ll a, ll b) { ll res = 1; while (b) { if (b & 1) res = res * a % mod; a = a * a % mod; b >>= 1; } return res; } ll f(int i) { if(i == 1) return 0LL; if(i == 2) return (ll) (x != 1); return (pw(k - 1, i - 2) - f(i - 1) + mod) % mod; } int main() { scanf("%lld %lld %lld", &n, &k, &x); printf("%lld\n", f(n)); return 0; }