#include <bits/stdc++.h>
using namespace std;
const long long int inf = 5 * (1e+8);
const long long int mod = 1e9 + 7;
vector<long long int> adj[500005];
vector<long long int> visited(500005, 0);
vector<long long int> t(500005, 0);
long long int flag = 1;
void nothing() {}
long long int powfn(long long int a, long long int b) {
  long long int ans = 1;
  for (long long int i = 1; i < b + 1; i++) {
    ans = (ans * a) % mod;
  }
  return ans;
}
void solve() {
  long long int n, m, k;
  cin >> n >> m >> k;
  long long int i, j;
  long long int res = 1;
  if (k == 1)
    res = powfn(m, n);
  else if (k % 2) {
    if (n > k)
      res = m * m;
    else if (k == n)
      res = powfn(m, (n + 1) / 2);
    else
      res = powfn(m, n);
  } else {
    if (n > k)
      res = m;
    else if (k == n)
      res = powfn(m, (n) / 2);
    else
      res = powfn(m, n);
  }
  cout << res << '\n';
  return;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  solve();
  return 0;
}
