#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
long long BigMod(long long a, long long p, long long m) {
  if (!p) return 1;
  if (p % 2) return (a % m * BigMod(a, p - 1, m) % m) % m;
  long long ta = BigMod(a, p / 2, m);
  return ((ta % m) * (ta % m)) % m;
}
int main() {
  long long n, m, k, ans;
  cin >> n >> m >> k;
  if (k > n) {
    ans = BigMod(m, n, mod);
    cout << ans % mod << endl;
    return 0;
  }
  if (k == n) {
    ans = BigMod(m, (n + 1) / 2, mod);
    cout << ans % mod << endl;
    return 0;
  }
  if (k == 1) {
    ans = BigMod(m, n, mod);
    cout << ans % mod << endl;
    return 0;
  }
  if (k % 2)
    cout << (m * m) % mod << endl;
  else
    cout << m % mod << endl;
  return 0;
}
