#include #define MOD 1000000007 //#define MAX 1000005 using namespace std; /*int fact[MAX]; int ifact[MAX]; int mod (int x) { x%=MOD; if (x<0) x+=MOD; return x; } int inverse(x) { x = mod(x); if (x == 1) return x; return mod(1LL * (MOD/x) * inverse(MOD%x)); } int fact() { fact[0] = 1; for (int i=1;i0) { if (b&1) res = (res * a ) % MOD; a = (a * a) % MOD; b/=2; } return res; } long long countArray(int n, int k, int x) { long long ret = mypower((long long)k-1,(long long)n-2); long long b = 0; if (x!=1) { b = (2 * (n-3) ) % MOD - 1; return ret -= b; } return ret + 2; } int main() { int n; int k; int x; cin >> n >> k >> x; long answer = countArray(n, k, x); cout << answer << endl; return 0; }