#include using namespace std; using Int = int_fast64_t; using Word = uint_fast64_t; using VInt = vector; using VVI = vector; using VWord = vector; using VVW = vector; using VS = vector; using VVS = vector; using VB = vector; using VVB = vector; using PII = pair; using PWW = pair; using VPII = vector; using VPWW = vector; #define SZ(x) ((Int)(x).size()) #define UNIQUE(v) v.erase(unique(v.begin(), v.end()), v.end()) #define rep(i,n) for(Int i=0, i##_len=(n); i Int { Int x = 1; while (b != 0) { if (b & 1) { x = ((Int)x * a) % mod; } a = ((Int)a * a) % mod; b >>= 1; } return x; }; auto g = [](Int x) -> Int { return ((Int)x + mod) % mod; }; Int n, m; cin >> n >> m; n = (n + m - 1) / m; Int ans = f(2, n); cout << g(ans - 1) << endl; return 0; }