#include using namespace std; 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; ll pm(ll b, ll e, ll mod) { if (e == 0) { return 1; } else if (e%2 == 0) { ll bef = pm(b, e/2, mod); return bef*bef%mod; } else { return pm(b, e - 1, mod)*b%mod; } } int main() { ll mod = 998244353; int T; cin >> T; for (int _ = 0; _ < T; _++) { ll N,M; cin >> N >> M; if (N == 1) { cout << 0 << endl; continue; } ll n = N%mod, m = M%mod; ll p = (n*(n - 1)/2%mod + mod)%mod; ll l = ((m*(m - 1)/2%mod + mod)%mod)*m%mod; ll unmodded = (m + 1)*m/2%mod; ll modded = ((m*m%mod - unmodded)%mod + mod)%mod; ll result = (p*((2*l%mod - m*modded%mod)%mod + mod)%mod)*pm(m, N - 2, mod)%mod; result = (result + mod)%mod; cout << result << endl; } return 0; }