Classifique uma lista de tuplas em ordem consecutiva

Quero classificar uma lista de tuplas em umordem consecutiva, portanto, o primeiro elemento de cada tupla é igual ao último elemento do anterior.

Por exemplo:

input = [(10, 7), (4, 9), (13, 4), (7, 13), (9, 10)]
output = [(10, 7), (7, 13), (13, 4), (4, 9), (9, 10)]

Eu desenvolvi uma pesquisa como esta:

output=[]
given = [(10, 7), (4, 9), (13, 4), (7, 13), (9, 10)]
t = given[0][0]
for i in range(len(given)):
      # search tuples starting with element t
      output += [e for e in given if e[0] == t]
      t = output[-1][-1] # Get the next element to search

print(output)    

Existe uma maneira pitônica de alcançar tal ordem? E uma maneira de fazê-lo "no local" (com apenas uma lista)?

No meu problema, a entrada pode ser reordenada de forma circular usando todas as tuplas, portanto, não é importante o primeiro elemento escolhido.

questionAnswers(9)

yourAnswerToTheQuestion