/*made in mrd*/ #include using namespace std; const int N=2e5+10; const int mod=998244353; #define endl '\n' #define int long long #define mem(a,b) memset(a,b,sizeof a) #define fi first #define se second #define lu u<<1 #define ru u<<1|1 #define pb push_back #define bug1(x) cout< #define bug3(x,y,z) cout<>=1; a=a*a%mod; } return res; } signed main() { init(); int n,m; cin>>n>>m; int sum=0; for(int i=1;i<=m;i++) { sum+=(qsm(i,n)-qsm(i-1,n)-qsm(i-1,n-1)*n%mod*(m-i+1)%mod)*i+qsm(i,n-1)*n%mod*(m-i)%mod*i%mod; sum%=mod; } cout<<(sum+mod)%mod<