这个大佬说的挺好 来自
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=4e5+7;
const int Mod=998244353;
ll fac[maxn];
ll ifac[maxn];
inline ll quickpow(ll a,ll n){
ll ans=1;
for(;n;n>>=1){
if(n&1) ans=(long long)ans*a%Mod;
a=(long long)a*a%Mod;
}
return ans;
}
inline ll C(ll x,ll y){
if(x<y) return 0;
else return fac[x]*ifac[y]%Mod*ifac[x-y]%Mod;
}
ll ans=0;
int main(){
int n,m;
cin>>n>>m;
if(n==2){
cout<<0<<endl;
return 0;
}
fac[0]=1;
for(int i=1;i<=n+m;i++) fac[i]=fac[i-1]*(ll)i%Mod;
ifac[n+m]=quickpow(fac[n+m],Mod-2);
for(int i=n+m-1;~i;i--) ifac[i]=ifac[i+1]*(ll)(i+1)%Mod;
ans=C(m,n-1)*(n-2)%Mod;
ans=ans*quickpow(2,n-3)%Mod;
cout<<ans<<endl;
return 0;
}