(defun facd (n p) (prog (pp count) (setq pp p) (setq count 0) loop (if (> pp n) (return count) (setq count (mod (+ count (/ (- n (mod n pp)) pp)) 1000000007)) ) (setq pp (* pp p)) (go loop) ) ) (defun factorial (n) (prog (count) (setq count 1) loop (if (= n 1) (return count) (setq count (mod (* count n) 1000000007)) ) (setq n (- n 1)) (go loop) ) ) (defun rui (n p) (prog (count) (setq count 1) loop (if (= p 0) (return count) (setq count (mod (* count n) 1000000007)) ) (setq p (- p 1)) (go loop) ) ) (defun solve (n p) (mod (* (facd n p) (rui (factorial n) (factorial n))) 1000000007) ) (princ (solve (read) (read)))