Encontre conjuntos de conjuntos disjuntos em uma lista de tuplas ou conjuntos em python

Aqui está o problema: Eu tenho uma lista de tuplas (podem ser conjuntos também, se necessário). Por exemplo:

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

O que eu quero encontrar é uma lista

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

porque a interseção não está vazia depois que todos os conjuntos forem reunidos.

Para o exemplo

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

o resultado deve ser

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

Espero que o problema esteja claro. Então, qual é a maneira mais elegante de fazer isso em python, se houver?

Felicidades

questionAnswers(2)

yourAnswerToTheQuestion