#include using namespace std; const int LOG = 61; const long long MOD = 998244353; int main(){ long long N, K; cin >> N >> K; vector>> dp(LOG + 1, vector>(LOG + 1, vector(LOG + 1, 0))); dp[LOG][0][0] = 1; for (int i = LOG - 1; i >= 0; i--){ for (int j = 0; j <= LOG; j++){ for (int k = 0; k <= LOG; k++){ if (dp[i + 1][j][k] > 0){ int mn = K >> i & 1; int mx = mn + (N >> i & 1); if (mn == 0){ dp[i][j][0] += dp[i + 1][j][k]; dp[i][j][0] %= MOD; } if (mn <= 1 && 1 <= mx){ dp[i][j + 1][k + 1] += dp[i + 1][j][k]; dp[i][j + 1][k + 1] %= MOD; } if (mx == 2){ dp[i][j + 1 - k][0] += dp[i + 1][j][k]; dp[i][j + 1 - k][0] %= MOD; } } } } } long long ans = 0; for (int i = 0; i <= LOG; i++){ for (int j = 0; j <= LOG; j++){ long long m = (long long) 1 << i; m %= MOD; ans += dp[0][i][j] * m % MOD; } } ans %= MOD; cout << ans << endl; }