#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ArraySizeOf(array) (sizeof(array) / sizeof(array[0])) #define res(i,n) for(int i=n;;i++) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define REP(i,n) for(int i=1;i=0;i--) #define REV(i,n) for(int i=n-1;i>0;i--) #define req(i,n,m) for(int i=n;i> N >> L; long long count = (N + L - 1) / L; long long ans = 1; vectorA(63); A[0] = 2; for (long long i = 1; i < 63; i++) { A[i] = A[i - 1] * A[i - 1]; A[i] %= mod; } for (long long i = 0; i < 63; i++) { if (count & (1 << i)) { ans *= A[i]; ans %= mod; } } ans--; cout << ans << endl; }