(defun tt (lst / group is bs as a n)
(setq group nil)
(while lst
(setq is (car lst)
lst (cdr lst)
bs (list is)
)
(while (setq a (car is))
(if (setq as (vl-remove-if-not '(lambda (x) (member a x)) lst))
(foreach n as
(setq bs (cons n bs)
is (append is n)
lst (vl-remove n lst)
)
)
)
(setq is (vl-remove a is))
)
(setq group (cons (reverse bs) group))
)
(reverse group)
)