#include <iostream>
using namespace std;

const int N = 1000 * 1000 + 5, mod = 998244353;

long long fac[N];

int po(int x, int y) {
	if (y == 0) {
		return 1;
	}
	long long ans = po(x, y / 2);
	ans *= ans;
	ans %= mod;
	if (y % 2) {
		ans *= x;
		ans %= mod;
	}
	return ans;
}

int chs(int x, int y) {
	if (y > x) {
		return 0;
	}
	long long ans = 1ll * fac[x] * po(fac[x - y], mod - 2);
	ans %= mod;
	ans *= po(fac[y], mod - 2);
	ans %= mod;
	return ans;
}

int main() {
	fac[0] = 1;
	for (int i = 1; i < N; i++) {
		fac[i] = fac[i - 1] * i;
		fac[i] %= mod;
	}
	int n, m;
	cin >> n >> m;
	long long ans = 0;
	for (int i = 1; i <= n && i <= m; i++) {
		long long x = 1ll * chs(i * 2, i) * chs(n + m - 2 * i, n - i);
		x %= mod;
		ans += x;
	}
	ans %= mod;
	ans *= po(chs(n + m, n) * 2, mod - 2);
	ans %= mod;
	ans += max(n, m);
	ans %= mod;
	cout << ans;
	
	return 0;
}
