#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pair

using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;

int fac[500005], ifac[500005];

int power(int x, int t)
{
	int ret = 1;
	while(t > 0) {
		if(t & 1) ret = 1LL * ret * x % MOD;
		x = 1LL * x * x % MOD;
		t >>= 1;
	}
	return ret;
}

int main()
{
	fac[0] = 1;
	rep1(i, 500000) fac[i] = 1LL * fac[i - 1] * i % MOD;
	ifac[500000] = power(fac[500000], MOD - 2);
	for(int i = 500000; i >= 1; i --) ifac[i - 1] = 1LL * ifac[i] * i % MOD;
	
	int n, m;
	scanf("%d%d", &n, &m);
	
	int ret = 0;
	for(int i = 0; i <= min(n, m); i ++) {
		int ca = 1LL * fac[m] * ifac[m - i] % MOD;
		ca = 1LL * fac[n] * ifac[i] % MOD * ifac[n - i] % MOD * ca % MOD;
		ca = 1LL * power(m + 1, n - i) * power(n + 1, m - i) % MOD * ca % MOD;
		if(i & 1) ret = (ret - ca + MOD) % MOD;
		else ret = (ret + ca) % MOD;
	}
	printf("%d\n", ret);
	return 0;
}