#include <bits/stdc++.h>
using namespace std;
long long zero = 0;
long long fexp(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % 998244353;
    b /= 2;
    a = a * a % 998244353;
  }
  return ans;
}
long long modmulti(long long a, long long b) {
  return ((a % 998244353) * 1ll * (b % 998244353)) % 998244353;
}
long long modadd(long long a, long long b) {
  long long asdfgh =
      ((a % 998244353) + (b % 998244353) + 998244353 + 998244353) % 998244353;
  asdfgh = (asdfgh + 998244353) % 998244353;
  return asdfgh;
}
long long modpower(long long a, long long n) {
  if (n == 0) return 1;
  if (n == 1) return a % 998244353;
  long long b = modpower(a, n / 2);
  b = modmulti(b, b);
  if (n % 2 == 0) return b;
  return modmulti(a, b);
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long modinv(long long a) { return modpower(a, 998244353 - 2); }
long long moddivide(long long a, long long b) { return modmulti(a, modinv(b)); }
const int N = 2 * 1e5 + 5;
template <typename ForwardIterator, typename T>
ForwardIterator first_less_than(ForwardIterator first, ForwardIterator last,
                                T value) {
  auto it = std::lower_bound(first, last, value);
  return (it == first ? last : --it);
}
long long ans = 9e18;
long long fact[N];
long long nCrmodPFermat(long long n, long long r, long long p) {
  if (r == 0) return 1;
  return (fact[n] * modinv(fact[r]) % p * modinv(fact[n - r]) % p) % p;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  long long t;
  t = 1;
  while (t--) {
    long long n, m;
    cin >> n >> m;
    fact[0] = 1;
    for (long long i = 1; i < N; i++) fact[i] = modmulti(fact[i - 1], i);
    long long ans;
    if (n == 2) {
      cout << "0\n";
      return 0;
    }
    if (n > 2) {
      ans = modmulti(nCrmodPFermat(m, n - 1, 998244353),
                     modmulti(n - 2, fexp(2, n - 3)));
    }
    cout << ans;
  }
  cerr << "Time elapsed: " << clock() / (double)CLOCKS_PER_SEC << endl;
  return 0;
}
