#ifdef NACHIA #define _GLIBCXX_DEBUG #else // disable assert #define NDEBUG #endif #include #include #include #include using namespace std; using ll = long long; const ll INF = 1ll << 60; #define REP(i,n) for(ll i=0; i using V = vector; template void chmax(A& l, const B& r){ if(l < r) l = r; } template void chmin(A& l, const B& r){ if(r < l) l = r; } #include using Mint = atcoder::static_modint<998244353>; void testcase(){ ll N, M; cin >> N >> M; Mint sum = Mint(M).pow(N) * Mint(N) * Mint(N-1) / 2; Mint ave = Mint(M-1) / 2; cout << (sum * ave).val() << "\n"; } int main(){ cin.tie(0)->sync_with_stdio(0); ll T; cin >> T; REP(t,T) testcase(); return 0; }