Encuentra conjuntos de conjuntos disjuntos de una lista de tuplas o conjuntos en python

Aquí está el problema: tengo una lista de tuplas (también podría establecerse si es necesario). Por ejemplo:

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

Lo que quiero encontrar es una lista

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

porque la intersección no está vacía una vez que todos los conjuntos se unen.

Por el ejemplo

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

el resultado debería ser

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

Espero que el problema sea claro. Entonces, ¿cuál es la forma más elegante de hacer esto en Python, si la hay?

Salud

Respuestas a la pregunta(2)

Su respuesta a la pregunta