1# Hierholzer Algorithm2from collections import defaultdict345class Solution:6def validArrangement(self, pairs: List[List[int]]) -> List[List[int]]:7G = defaultdict(list)8din = defaultdict(int)9dout = defaultdict(int)10for v, w in pairs:11G[v].append(w)12dout[v] += 113din[w] += 114start = pairs[0][0]15for v in G:16if din[v] + 1 == dout[v]:17start = v18route = []1920def dfs(v):21while G[v]:22w = G[v].pop()23dfs(w)24route.append(v)2526dfs(start)27route.reverse()28return [[route[i], route[i + 1]] for i in range(len(route) - 1)]