#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
#define ll long long
#define mod 998244353
ll n,m,k,f[500005],inv[500005],ra[500005],le[500005],ans;
ll ksm(ll x,ll y){
	ll anss=1,t=x;
	while(y){
		if(y&1) anss=anss*t%mod;
		t=t*t%mod;
		y>>=1;
	}
	return anss;
}
ll jug(ll x){
	return (x&1)?mod-1:1;
}
ll C(ll n,ll m){
	return f[n]*inv[m]%mod*inv[n-m]%mod;
}
int main(){
	scanf("%lld%lld",&n,&m);
	k=max(n,m);
	f[0]=1;
	for(ll i=1;i<=k;i++) f[i]=f[i-1]*i%mod;
	inv[k]=ksm(f[k],mod-2);
	for(ll i=k-1;i>=0;i--) inv[i]=inv[i+1]*(i+1)%mod;
	ra[0]=1;
	for(ll i=1;i<=k;i++) ra[i]=ra[i-1]*(n+1)%mod;
	le[0]=1;
	for(ll i=1;i<=k;i++) le[i]=le[i-1]*(m+1)%mod;
	for(ll i=0;i<=min(n,m);i++){
//		cout<<jug(i)<<' '<<C(n,i)<<' '<<C(m,i)<<' '<<ra[m-i]<<' '<<le[n-i]<<endl;
		ans=(ans+jug(i)*C(n,i)%mod*C(m,i)%mod*ra[m-i]%mod*le[n-i]%mod*f[i])%mod;
	}
	printf("%lld",ans);
}