#include <atcoder/all>
#include <bits/stdc++.h>
using namespace std;
using namespace atcoder;
using ll = long long;
#define reps(i, a, n) for (ll i = (a); i < (ll)(n); ++i)
#define rep(i, n) reps(i, 0, n)
#define all(a) (a).begin(), (a).end();
//なんかstd::vector<bool>の挙動を修正できるやつ

/* alias */
using ull = unsigned long long;
using ll = long long;
using vi = vector<int>;
using vl = vector<long>;
using vll = vector<long long>;
using vvi = vector<vi>;
using vvl = vector<vl>;
using vvll = vector<vll>;
using vs = vector<string>;
using pii = pair<int, int>;

ll mod = 998244353;
using mint = modint998244353;
ll modpow(ll x, ll y) {
  ll res = 1;
  rep(i, y) { res = (res * x) % mod; }
  return res;
}

int main() {
  ll n, k;
  cin >> n >> k;
  mint cnt = n * (k - 1);
  cnt /= modpow(k, n - 1);
  cout << cnt.val() << endl;
}