#include using namespace std; const long long MOD = 998244353; long long modpow(long long a, long long b){ long long ans = 1; while (b > 0){ if (b % 2 == 1){ ans *= a; ans %= MOD; } a *= a; a %= MOD; b /= 2; } return ans; } int main(){ int N, M; cin >> N >> M; M++; vector>> dp(31, vector>(2, vector(31, 0))); dp[30][0][0] = 1; for (int i = 29; i >= 0; i--){ for (int j = 0; j < 2; j++){ for (int k = 0; k < 30; k++){ for (int l = 0; l < 2; l++){ bool ok = true; if ((M >> i & 1) == 0 && j == 0 && l == 1){ ok = false; } if (ok){ int j2 = j; if ((M >> i & 1) == 1 && l == 0){ j2 = 1; } dp[i][j2][k + l] += dp[i + 1][j][k]; dp[i][j2][k + 1] %= MOD; } } } } } long long ans = 0; for (int i = 0; i <= 30; i++){ ans += dp[0][1][i] * modpow(N, i) % MOD; } ans %= MOD; cout << ans << endl; }