(defun balls-to-symbols (n) (let ((symbols '(("C" . 720) ("M" . 360) ("S" . 180) ("R" . 30) ("o" . 6) ("." . 1))) (result '())) (dolist (symbol symbols) (let ((sym (car symbol)) (value (cdr symbol))) (loop while (>= n value) do (push sym result) (decf n value)))) (apply 'concatenate 'string (nreverse result)))) (defun main () (let ((n (read))) (format t "~A~%" (balls-to-symbols n)))) (main)