#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const ll MOD=998244353;
int n,m;
ll fact[500005],inv[500005],pn[500005],pm[500005];
ll quick_pow(ll x,ll a)
{
	ll ans=1;
	while(a)
	{
		if(a&1)ans=ans*x%MOD;
		x=x*x%MOD;
		a>>=1;
	}
	return ans;
}
int main()
{
	scanf("%d%d",&n,&m);
	fact[0]=1;
	for(int i=1;i<=max(n,m);i++)fact[i]=fact[i-1]*i%MOD;
	inv[max(n,m)]=quick_pow(fact[max(n,m)],MOD-2);
	for(int i=max(n,m);i>=1;i--)inv[i-1]=inv[i]*i%MOD;
	pn[0]=pm[0]=1;
	for(int i=1;i<=max(n,m);i++)
	{
		pn[i]=pn[i-1]*(n+1)%MOD;
		pm[i]=pm[i-1]*(m+1)%MOD;
	}
	ll ans=0;
	for(int i=0;i<=min(n,m);i++)
	{
		if(i&1)ans-=fact[n]*inv[i]%MOD*inv[n-i]%MOD*fact[m]%MOD*inv[m-i]%MOD*pm[n-i]%MOD*pn[m-i]%MOD;
		else ans+=fact[n]*inv[i]%MOD*inv[n-i]%MOD*fact[m]%MOD*inv[m-i]%MOD*pm[n-i]%MOD*pn[m-i]%MOD;
	}
	ans%=MOD;
	if(ans<0)ans+=MOD;
	printf("%lld\n",ans);
	return 0;
}