#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll M = 1e9+7;
int main(){
ll n,m,k; cin>>n>>m>>k;
ll ans =1;
if(k==1 or k>n){
for(ll i=0;i<n;i++){
ans = (ans%M * m%M)%M;
}
}
else if(k==n){
for(ll i=0;i<(n+1)/2;i++){
ans = (ans%M * m%M)%M;
}
}
else if(k%2==1){
ans = (m*m)%M;
}
else{
ans = m;
}
cout<<ans;
return 0;
}
Divisible | Three primes |
Coprimes | Cost of balloons |
One String No Trouble | Help Jarvis! |
Lift queries | Goki and his breakup |
Ali and Helping innocent people | Book of Potion making |
Duration | Birthday Party |
e-maze-in | Bricks Game |
Char Sum | Two Strings |
Anagrams | Prime Number |
Lexical Sorting Reloaded | 1514A - Perfectly Imperfect Array |
580A- Kefa and First Steps | 1472B- Fair Division |
996A - Hit the Lottery | MSNSADM1 Football |
MATCHES Playing with Matches | HRDSEQ Hard Sequence |
DRCHEF Doctor Chef | 559. Maximum Depth of N-ary Tree |
821. Shortest Distance to a Character | 1441. Build an Array With Stack Operations |