(define (iota n . args) (let ((start (if (pair? args) (car args) 0)) (step (if (and (pair? args) (pair? (cdr args))) (cadr args) 1))) (let loop ((m n) (last (+ start (* step (- n 1)))) (a '())) (if (zero? m) a (loop (- m 1) (- last step) (cons last a)))))) (define (solve M C) (if (null? C) 0 (if (>= M (car C)) (+ 1 (solve (- M (car C)) (cdr C))) 0))) (display (let* ((N (read)) (M (read)) (C (sort (map (lambda (x) (read)) (iota N)) <))) (solve M C))) (newline)