;; USE multi-set-combination (below) to access this function
(define multi-list-combination-2
(lambda args
(if (null? args)
args
(flatten-1 (map (lambda (k)
(let ((r (apply multi-list-combination-2 (cdr args))))
(if (null? r)
k
(map (lambda (j)
(list k j))
r))))
(car args))))))