(defconstant +mod+ 998244353) (defun solve (n k) (let* ((dp (make-array (1+ n) :initial-element 0)) (sum-dp (make-array (1+ n) :initial-element 0))) (setf (aref dp 0) 1) (setf (aref sum-dp 0) 1) (loop for i from 1 to n do (when (>= i k) (setf (aref dp i) (aref sum-dp (- i k)))) (setf (aref sum-dp i) (mod (+ (aref sum-dp (1- i)) (aref dp i)) +mod+))) (let ((result 0)) (loop for i from 0 to n do (setf result (mod (+ result (aref dp i)) +mod+))) result))) (defun main () (let ((n (read)) (k (read))) (format t "~d~%" (solve n k)))) (main)