#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int N=1000010,Mo=998244353;
int fac[N],rev[N];
inline int gi() {
    int x=0,o=1;
    char ch=getchar();
    while(ch<'0'||ch>'9') ch=='-'?o=-1:0,ch=getchar();
    while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
    return o*x;
}
inline int Pow(int x,int y) {
    int ret=1;
    for(;y;x=1LL*x*x%Mo,y>>=1)
	if(y&1) ret=1LL*ret*x%Mo;
    return ret;
}
inline int C(int n,int m) {
    return 1LL*fac[n]*rev[m]%Mo*rev[n-m]%Mo;
}
int main() {
    int n,m,ans=0;
    cin>>n>>m;
    if(n<m) swap(n,m);
    for(int i=fac[0]=1;i<=n+m;i++) fac[i]=1LL*fac[i-1]*i%Mo;
    rev[n+m]=Pow(fac[n+m],Mo-2);
    for(int i=n+m;i;i--) rev[i-1]=1LL*rev[i]*i%Mo;
    for(int i=0;i<m;i++) ans=(ans+1LL*C(n-m+i+i,i)*C(m-i+m-i,m-i))%Mo;
    ans=1LL*ans*Pow(2,Mo-2)%Mo*Pow(C(n+m,n),Mo-2)%Mo;
    cout<<(ans+n)%Mo;
    return 0;
}