def get_chain(d):
start_nodes = {}
end_nodes = {}
nodes = []
for k, (end, start) in d.items():
node = [k, (start, end), None]
start_nodes[start] = node
end_nodes[end] = node
nodes.append(node)
for node in nodes:
start, end = node[1]
if start in end_nodes:
end_nodes[start][2] = node
if end in start_nodes:
node[2] = start_nodes[end]
del start_nodes[end]
lst = list(start_nodes.values())[0]
final = [lst[1][0]]
while lst is not None:
final.append(lst[1][1])
lst = lst[2]
return final
print(get_chain({
'A': ['tg', 17],
'B': [59, 60],
'C': [60, 61],
'D': [57, 'tt'],
'E': [61, 'tg'],
'F': ['tt', 59]
}))
ZGVmIGdldF9jaGFpbihkKToKCXN0YXJ0X25vZGVzID0ge30KCWVuZF9ub2RlcyA9IHt9Cglub2RlcyA9IFtdCglmb3IgaywgKGVuZCwgc3RhcnQpIGluIGQuaXRlbXMoKToKCQlub2RlID0gW2ssIChzdGFydCwgZW5kKSwgTm9uZV0KCQlzdGFydF9ub2Rlc1tzdGFydF0gPSBub2RlCgkJZW5kX25vZGVzW2VuZF0gPSBub2RlCgkJbm9kZXMuYXBwZW5kKG5vZGUpCgkJCglmb3Igbm9kZSBpbiBub2RlczoKCQlzdGFydCwgZW5kID0gbm9kZVsxXQoJCWlmIHN0YXJ0IGluIGVuZF9ub2RlczoKCQkJZW5kX25vZGVzW3N0YXJ0XVsyXSA9IG5vZGUKCQlpZiBlbmQgaW4gc3RhcnRfbm9kZXM6CgkJCW5vZGVbMl0gPSBzdGFydF9ub2Rlc1tlbmRdCgkJCWRlbCBzdGFydF9ub2Rlc1tlbmRdCgkKCWxzdCA9IGxpc3Qoc3RhcnRfbm9kZXMudmFsdWVzKCkpWzBdCglmaW5hbCA9IFtsc3RbMV1bMF1dCgl3aGlsZSBsc3QgaXMgbm90IE5vbmU6CgkJZmluYWwuYXBwZW5kKGxzdFsxXVsxXSkKCQlsc3QgPSBsc3RbMl0KCXJldHVybiBmaW5hbAoKcHJpbnQoZ2V0X2NoYWluKHsKCSdBJzogWyd0ZycsIDE3XSwgCgknQic6IFs1OSwgNjBdLCAKCSdDJzogWzYwLCA2MV0sIAoJJ0QnOiBbNTcsICd0dCddLCAKCSdFJzogWzYxLCAndGcnXSwgCgknRic6IFsndHQnLCA1OV0KfSkp