Найти наборы непересекающихся наборов из списка кортежей или наборов в Python

вот проблема: у меня есть список кортежей (может быть наборы, если это необходимо). Например:

a = [(1, 5), (4, 2), (4, 3), (5, 4), (6, 3), (7, 6)]

То, что я хочу найти, это список

r = [(1, 5, 4, 2, 3, 6, 7)]

потому что пересечение не пусто, как только все наборы собраны вместе.

Для примера

a = [(1, 5), (4, 2), (4, 3), (5, 4), (6, 3), (7, 6), (8, 9)]

результат должен быть

r = [(1, 5, 4, 2, 3, 6, 7), (8, 9)]

Надеюсь, проблема ясна. Так какой же самый элегантный способ сделать это в Python, если таковой имеется?

ура

Ответы на вопрос(2)

Ваш ответ на вопрос