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