#include <bits/stdc++.h>
using namespace std;
long long mpow(long long n, long long b) {
  long long res = 1;
  for (int i = 1; i <= b; i++) res = (res * n) % 1000000007;
  return res;
}
int main() {
  long long n, m, k, ans = 0;
  scanf("%I64d%I64d%I64d", &n, &m, &k);
  if (k == 1 || k > n)
    ans = mpow(m, n);
  else if (k == n)
    ans = mpow(m, k % 2 + k / 2);
  else if (k % 2)
    ans = m * m;
  else
    ans = m;
  printf("%I64d", ans);
  return 0;
}
