#include <bits/stdc++.h>
using namespace std;
const int maxn = 105;
const int maxm = 10005;
long long mod = 1000000009;
long long pow_mod(long long a, long long b, long long mod) {
  long long ret = 1, tmp = a;
  while (b) {
    if (b & 1) ret = ret * tmp % mod;
    tmp = tmp * tmp % mod;
    b >>= 1;
  }
  return ret;
}
int main() {
  long long n, m, k, x, ans;
  scanf("%I64d%I64d%I64d", &n, &m, &k);
  x = max(0ll, m - (n - n % k) * (k - 1) / k - n % k);
  ans = (pow_mod(2, x + 1, mod) - 2 + mod) * k % mod + m - x * k;
  ans %= mod;
  printf("%I64d\n", ans);
  return 0;
}
