#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>#include<vector>#include<string>#include<cmath>#include<set>#include<map>usingnamespace std;typedeflonglong ll;typedef vector<int> vec;template<classT>inlinevoidread(T &ret){char c;int sgn;if(c =getchar(), c ==EOF)return;while(c !='-'&&(c <'0'|| c >'9')) c =getchar();
sgn =(c =='-')?-1:1;
ret =(c =='-')?0:(c -'0');while(c =getchar(), c >='0'&& c <='9') ret = ret *10+(c -'0');
ret *= sgn;return;}inlinevoidout(int x){if(x >9)out(x /10);putchar(x %10+'0');}constint mod =998244353;constint maxn =2e5+10;
ll fac[maxn];
ll quickpow(ll a, ll b){
ll ans =1, base = a;while(b){if(b &1) ans = ans * base % mod;
base = base * base % mod;
b >>=1;}return ans;}
ll inv(ll x){returnquickpow(x, mod -2);}
ll C(int n,int m){return fac[n]*inv(fac[m]* fac[n - m]% mod)% mod;}intmain(){int n, m;read(n),read(m);if(n ==2){out(0);return0;}
fac[1]=1;for(int i =2; i <= m; i++){
fac[i]=(fac[i -1]* i)% mod;}
ll x =C(m, n -1);
x = x *(n -2)% mod;
x = x *quickpow(2, n -3)% mod;;out(x);return0;}