MOD = 998244353 n, m = map(int, input().split()) factorial = [1] for i in range(1, n + m + 10): factorial.append(factorial[-1] * i % MOD) def combination(n, k): return factorial[n] * pow(factorial[n-k], -1, MOD) * pow(factorial[k], -1, MOD) # スコア = p となる場合の数を数える # スコア >= p <=> p <= pi <= M - 1 and \sum pi <= M # <=> 0 <= pi - p <= M - 1 - p and \sum (pi - p) <= M - pN # M - pN 個のボールをN+1 人に分配 (1人はダミー) # スコア >= p となるパターンの数 patterns = [] # スコア = 0 となる場合の数 # Mがダメなことに注意 # 誰かがMになるとき、他は全員0 patterns.append( combination(m+n, m) - n ) for p in range(1, m): if m - p * n < 0: patterns.append(0) break # スコア >= 1 のときは、pi >= M となることはない patterns.append(combination(m-p*n+n, n)) comb_all = 0 for i in range(len(patterns) - 1): comb_all += patterns[i] - patterns[i+1] if comb_all == 0: print(0) exit() comb_all_inv = pow(comb_all, -1, MOD) ans = 0 for p in range(1, len(patterns)-1): ans += p * (patterns[p] - patterns[p+1]) * comb_all_inv ans %= MOD print(ans)