#include using namespace std; #define endl '\n' typedef long long ll; typedef pair pii; const int N = 1e6+100; const int MOD = 1e9 + 7; void add(int &a , int b){ a += b; if(a >= MOD) a -= MOD; } int mul(int a , int b){ return (long long )a * b % MOD; } int mpow(int a , int n){ int res = 1; for(; n > 0 ; n >>= 1){ if(n & 1) res = mul(res , a); a = mul(a , a); } return res; } int x , k; int go(int n){ if(n == 1){ return x == 1 ? 0 : 1; } int ans = mpow(k - 1 , n - 1); add(ans , MOD - go(n - 1)); return ans; } int n; int main() { ios::sync_with_stdio( 0 ); cin.tie( 0 ); cin >> n >> k >> x; int tot = mpow(k - 1 , n - 2); // cerr << tot << endl; int bad = go(n - 2); add(tot , MOD - bad); cout << tot << endl; return 0; }