#include using namespace std; #pragma GCC target("avx") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") typedef long long ll; typedef pair prl; typedef vector vcl; typedef map mapl; typedef unordered_map umap; #define pb push_back #define all(v) v.begin(), v.end() #define rep(i,a,b) for(ll i=a;i<=b;i++) #define repi(i,a,b) for(int i=a;i<=b;i++) #define repr(i,a,b) for(ll i=a;i>=b;i--) #define reps(i,v) for(ll i=0;i void chmin(T &a, const T &b) { a = min(a, b); } template void chmax(T &a, const T &b) { a = max(a, b); } const ll mod = 998244353; ll powmod(ll px, ll py, ll pmod){ if(py == 0) return 1; if(py % 2 == 0) return powmod((px * px) % pmod, py / 2, pmod); else return (px * powmod(px, py - 1, pmod)) % pmod; } int main() { // your code goes here ll n,l,ans=1; cin >> n >> l; n = (n-1)/l+1; cout << (powmod(2,n,mod)+mod-1)%mod << endl; return 0; }