#include using namespace std; #define mod 1000000007 #define inf 1e15 #define pb push_back #define mp make_pair #define Int long long #define fs first #define sc second #define pll pair #define pii pair #define piiii pair #define MAX 100005 #define LOGN 20 #define gcd __gcd #define swap(x,y) x^=y^=x^=y #define optimise_stuff ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0) Int modpow(Int a,Int b,Int m){Int c=1;while(b){if(b&1)c=(c*a)%m;b/=2;a=(a*a)%m;}return c;} Int n, k, x, dp[MAX][2]; Int solve(Int N, Int isOne){ if(N == 2){ if(isOne) return 0; return 1; } if(N == 3){ if(isOne) return (k-1); return (k-2); } if(dp[N][isOne] != -1) return dp[N][isOne]; Int sol = 0; if(isOne){ sol = (((k-1) * solve(N-2, 1))%mod + ( (((k-2)*(k-1))%mod) * solve(N-2, 0))%mod)%mod; }else{ sol = ((k-2) * solve(N-2, 1))%mod; sol = (sol + (solve(N-2, 0)*(k-1))%mod)%mod; sol = (sol + (((k-2)*(k-2))%mod * solve(N-2, 0))%mod)%mod; } return (dp[N][isOne] = sol); } int main(){ scanf("%lld %lld %lld", &n, &k, &x); memset(dp, -1, sizeof(dp)); cout<