#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define fo(i,j,k) for(int i=j;i<=k;i++)
#define fd(i,j,k) for(int i=j;i>=k;i--)
#define fr(i,j) for(int i=beg[j];i;i=nex[i])
using namespace std;
int const mn=5e5+3,mo=998244353;
int n,m,ft[mn*2],ni[mn*2];
int Pow(LL x,int y){
	LL z=1;
	for(;y;y>>=1,(x*=x)%=mo)if(y&1)(z*=x)%=mo;
	return z;
}
int C(int x,int y){
	return 1ll*ft[x]*ni[y]%mo*ni[x-y]%mo;
}
int main(){
	scanf("%d%d",&n,&m);
	if(n<m)swap(n,m);
	ft[0]=1;
	fo(i,1,n+m)ft[i]=1ll*ft[i-1]*i%mo;
	ni[n+m]=Pow(ft[n+m],mo-2);
	fd(i,n+m-1,0)ni[i]=1ll*ni[i+1]*(i+1)%mo;
	int ans=0;
	fo(i,1,m)ans=(ans+1ll*C(i*2,i)*C(n+m-i*2,n-i))%mo;
	printf("%lld",(n+1ll*ans*ni[2]%mo*Pow(C(n+m,n),mo-2))%mo);
	return 0;
}
