#include using namespace std; #define MOD 1000000007 #define pb push_back #define xx first #define yy second #define sz(x) ((int)x.size()) #define all(x) x.begin(),x.end() #define rep(i,n) for(int i=0;i iv; typedef pair iip; typedef map mii; template void dbg(T t){cerr< void dbg(T t, Args... args) {cerr << t <<" ";dbg(args...) ;} /*int nCrModpDP(int n, int r, int p) { int C[r+1]; memset(C, 0, sizeof(C)); C[0] = 1; for (int i = 1; i <= n; i++) { for (int j = min(i, r); j > 0; j--) C[j] = (C[j] + C[j-1])%p; } return C[r]; } int nCrModpLucas(int n, int r, int p) { if (r==0) return 1; int ni = n%p, ri = r%p; return (nCrModpLucas(n/p, r/p, p) * nCrModpDP(ni, ri, p)) % p; }*/ ll expo(ll a,ll b,ll p){ ll res = 1; while(b){ if(b & 1) res = (res * a) % p; a = (a * a) % p; b >>= 1; } return res; } int main() { ios::sync_with_stdio(0);cin.tie(0); int n,k,x; cin >> n >> k >> x; cout << expo(k - 1,(n - 2),MOD) - (k - 2) << endl; return 0; }