#include<bits/stdc++.h>
using namespace std;
#define reg register
#define ll long long
const int mod = 998244353;
ll dp[2000001];
inline int qpow(int x, ll b) {
reg int res = 1;
for (; b; b >>= 1, x = (ll)x * x % mod) (b & 1) && (res = (ll)res * x % mod);
return res;
}
int main() {
ll n, m;
scanf("%lld%lld", &n, &m);
if (m == 0) {
n %= mod, m %= mod;
printf("%lld", (n * (n + 1) / 2 + n) % mod);
return 0;
}
ll tt = n + m;
dp[n] = (n * (n + 1) / 2 + n) % mod;
for (reg int i = n + 1; i <= tt; ++i)
dp[i] = ((ll)(i - n) * qpow(i, mod - 2) % mod * (dp[i - 1] + 1) % mod + n * (i + 1) / 2 % mod + n) % mod;
printf("%lld", dp[tt]);
return 0;
}
理论上进一步矩阵快速幂可以AC