#include <bits/stdc++.h>
using namespace std;
#define fast_io ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
typedef long long ll;
ll mod(ll a, ll m) { // returns a (mod m)
return ((a%m) + m) % m; // ensure positive answer
}
ll modPow(ll b, ll p, ll m) { // assume 0 <= b < m
if (p == 0) return 1;
ll ans = modPow(b, p/2, m); // this is O(log p)
ans = mod(ans*ans, m); // double it first
if (p&1) ans = mod(ans*b, m); // *b if p is odd
return ans; // ans always in [0..m-1]
}
#define mo int(1000000009)
int main(){
ll n,m,k;
cin >> n >> m >> k;
if(n >= 2*m){
cout << m ;
}else{
ll sol = k;
ll x = max(0ll, m - (n - n % k) / k * (k-1) - n % k);
ll dble = modPow(2,x + 1,mo);
sol = (sol * (dble-2) )%mo;
sol += m - x*k;
cout << mod(sol, mo);
}
}
1335A - Candies and Two Sisters | 96B - Lucky Numbers (easy) |
1151B - Dima and a Bad XOR | 1435B - A New Technique |
1633A - Div 7 | 268A - Games |
1062B - Math | 1294C - Product of Three Numbers |
749A - Bachgold Problem | 1486B - Eastern Exhibition |
1363A - Odd Selection | 131B - Opposites Attract |
490C - Hacking Cypher | 158B - Taxi |
41C - Email address | 1373D - Maximum Sum on Even Positions |
1574C - Slay the Dragon | 621A - Wet Shark and Odd and Even |
1395A - Boboniu Likes to Color Balls | 1637C - Andrew and Stones |
1334B - Middle Class | 260C - Balls and Boxes |
1554A - Cherry | 11B - Jumping Jack |
716A - Crazy Computer | 644A - Parliament of Berland |
1657C - Bracket Sequence Deletion | 1657B - XY Sequence |
1009A - Game Shopping | 1657A - Integer Moves |