""" https://yukicoder.me/problems/no/2529 0個 1個置かれている場合 2個の場合 避けて置く。その内、隣接するのは… XOXOOO -> 2 XOOXOO -> 2 XOXOOOO -> 3 XOOXOOO -> 3 一緒か XOXO -> """ import math import sys from sys import stdin def modfac(n, MOD): f = 1 factorials = [1] for m in range(1, n + 1): f *= m f %= MOD factorials.append(f) inv = pow(f, MOD - 2, MOD) invs = [1] * (n + 1) invs[n] = inv for m in range(n, 1, -1): inv *= m inv %= MOD invs[m - 1] = inv return factorials, invs def modnCr(n,r): #上で求めたfacとinvsを引数に入れるべし(上の関数で与えたnが計算できる最大のnになる) return fac[n] * inv[n-r] * inv[r] % mod mod = 998244353 fac,inv = modfac(10**6+100,mod) TT = int(stdin.readline()) for loop in range(TT): M,N = map(int,stdin.readline().split()) dp = [1,0,0] for i in range(N): ndp = [0,0,0] ndp[0] = sum(dp) % mod ndp[1] = (dp[0] * M + dp[1] * (M-1) + dp[2] * (M-2)) % mod ndp[2] = dp[0] * (M * (M-1)//2 - M) ndp[2] += dp[1] * ( (M-1)*(M-2)//2 - (M-2)) ndp[2] += dp[2] * ((M-2)*(M-3)//2 - (M-4)) ndp[2] %= mod dp = ndp if M <= 3: dp[2] = 0 print (sum(dp) % mod )