#include using namespace std; #define all(v) v.begin(),v.end() using ll = long long; using ull = unsigned long long; using vll=vector; ll mod=1e9+7; vector fact,invfact,inv; void init(ll N){ fact.resize(N+5); inv.resize(N+5); invfact.resize(N+5); fact[0]=1;fact[1]=1; invfact[0]=1;invfact[1]=1; inv[0]=1;inv[1]=1; for(int i=2;i0){ if(n&1) res*=x; x*=x; res%=m; x%=m; n>>=1; } return res; } int main(){ ll N,K,M; cin>>N>>K>>M; init(N); ll ans=0; for(int i=1;i<=min(K,N);i++){ if(K%i==0){ ans+=nCk(N-1,i-1)*fact[i-1]%mod*powmod(N,N-i,mod); } ans%=mod; } if(M==1) cout<