(defpackage :codeforces (:use :cl :sb-int)) (in-package :codeforces) (declaim (optimize (speed 3) (safety 0))) (defun modint998 (x) (mod x 998244353)) (defun mint-pow (x n) (let ((result 1) (base (modint998 x))) (loop while (> n 0) do (when (oddp n) (setf result (modint998 (* result base)))) (setf base (modint998 (* base base))) (setf n (floor n 2))) result)) (defun solve (n k a) (let ((ans 1)) (loop for i from 1 to n do (setf ans (modint998 (* ans (- (mint-pow k i) 1))))) (loop for i from 0 below n do (setf ans (modint998 (* ans (mint-pow k (* (+ i 1) (1- (aref a i)))))))) (princ ans) (terpri))) (defun main () (let ((num-cases (read))) (loop for _ from 1 to num-cases do (let* ((n (read)) (k (read)) (a (make-array n :initial-contents (loop for _ from 1 to n collect (read))))) (solve n k a))))) (main)