#include using namespace std; #include using namespace atcoder; using ll = int64_t; using ul = uint64_t; using vi = vector; using vd = vector; using vc = vector; using vs = vector; using vb = vector; using vl = vector; using vul = vector
    ; using pii = pair; using pll = pair; using sei = set; using sec = set; using sel = set; using vvi = vector; using vvd = vector; using vvc = vector; using vvb = vector; using vvl = vector; using mint = modint998244353; using vm = vector; mint pm(mint b, ll e) { if (e == 0) { return 1; } else if (e%2 == 0) { mint bef = pm(b, e/2); return bef*bef; } else { return pm(b, e - 1)*b; } } int main() { int T; cin >> T; for (int _ = 0; _ < T; _++) { ll N,M; cin >> N >> M; mint n = N, m = M; mint p = n*(n - 1)/2; mint l = m*(m - 1)/2*m; mint unmodded = (m + 1)*m/2; mint modded = m*m - unmodded; mint result = p*(2*l - m*modded)*pm(M, N - 2); cout << result.val() << endl; } return 0; }