#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define pii pair #define ll long long #define N (int)(2e5+10) #define mod 1000000007 #define mp make_pair #define pb push_back #define nd second #define st first #define inf mod #define endl '\n' #define sag (sol+1) #define sol (root*2) #define ort (bas+son)/2 #define bit(x,y) ((x>>y)&1) int i,j,k,n,m,x,y,z,arr[N]; int ata[N],mx[N],L[N],R[N],wh[N],ans,H[N]; ll fe(int x,int k){ if(k == 1) return x; ll t = fe(x,k/2); if(k%2) return t*t%mod*x%mod; return t*t%mod; } int main(){ cin >> n >> k >> x; if(n>=3){ ll t = fe(k-1,n-2),t2; if(n%2==0) t = (t+mod-1)%mod; else t = (t+mod+1)%mod; t = t*fe(k,mod-2)%mod; if(n%2==0) t2 = t+1; else{ t2 = t-1; t = t; } if(x != 1) cout << (((ll)k-2)*(t)%mod + t2)%mod << endl; else cout << (((ll)k-1)*(t)%mod )%mod << endl; } else if(n==4){ assert(0); if(x != 1) cout << (ll)((k-2)*(k-2)%mod + (k-1))%mod << endl; else cout << (ll)((k-1)*(k-2)%mod)%mod << endl; } else{ if(x == 1) cout << k-1 << endl; else cout << k-2 << endl; } }