#include<bits/stdc++.h>
using namespace std;
const int N=1e6+7,p=998244353;
int n,m,ans,fac[N],ifac[N],f[N],g[N];
inline int pows(long long u,int v){
	long long ans=1;
	while(v>0){
		if(v&1) ans=ans*u%p; u=u*u%p,v=v>>1;
	}
	return ans;
}
inline int binom(int a,int b){
	if(a<b||a<0) return 0; return 1ll*fac[a]*ifac[b]%p*ifac[a-b]%p;
}
inline int calc(int x,int y){
	return binom(x+y-1,y-1);
}
int main(){
	cin>>n>>m,fac[0]=ifac[0]=1; int sum=0;
	for(int i=1;i<=654321;i++) fac[i]=1ll*fac[i-1]*i%p,ifac[i]=pows(fac[i],p-2);
	for(int j=2;j<=m;j++){
		int x=m-j+2;
		for(int i=1;i<=n;i++){
			int A=calc(x-2,i),B=calc(x-1,n-i+1); if(i==1) A=0;
			f[i]=1ll*A*B%p;
		}
		for(int i=n;i>=1;i--) f[i]=(f[i]+f[i+1])%p; 
		for(int i=1;i<=n;i++){
			int A=calc(j-1,i-1),B=calc(j-2,n-i+2); if(i==1) A=0;
			sum=(sum+1ll*f[i+1]*A%p*B)%p;
		}
	}
	for(int i=2;i<=n;i++){
		for(int j=1;j<=m;j++)
			g[j]=1ll*calc(j-1,i-1)*calc(m-j,i)%p;
		for(int j=m;j>=1;j--) g[j]=(g[j]+g[j+1])%p;
		for(int j=1;j<=m;j++)
			sum=(sum+1ll*g[j+1]*calc(j-1,n-i+2)%p*calc(m-j,n-i+1))%p;
	}
	cout<<2ll*sum%p<<endl;
	return 0;
}