(define combn
  (lambda (lst n)
    (println 'lst: lst 'n: n)
    (cond ((< n 1) '())
          ((= n 1) (map list lst))
          ((null? lst) '())
          (else (append (map (lambda (subset) (cons (car lst) subset))
                             (combn (cdr lst) (- 1 n)))
                        (combn (cdr lst) n))))))