





def     _lowerCAmelCase		(  _lowerCAmelCase     ):
   '''simple docstring'''


   A_      ,				A_     :				Dict			      =	[], []
   while len(_lowerCAmelCase     ) > 1:
      A_      ,				A_     :				List[str]			      =	min(_lowerCAmelCase     ), max(_lowerCAmelCase     )
      start.append(_lowerCAmelCase     )
      end.append(_lowerCAmelCase     )
      collection.remove(_lowerCAmelCase     )
      collection.remove(_lowerCAmelCase     )
   end.reverse()
   return start + collection + end


if __name__ == "__main__":
      _lowerCAmelCase 				=     input("""Enter numbers separated by a comma:\n""").strip()
      _lowerCAmelCase 				=     [int(item) for item in user_input.split(""",""")]
      print(*merge_sort(unsorted), sep=""",""")













def     _lowerCAmelCase		(  _lowerCAmelCase     ):
   '''simple docstring'''


   A_     :				Union[str, Any]			      =	[0] * len(_lowerCAmelCase     )
   A_     :				Optional[int]			      =	[]
   A_     :				str			      =	[]
   A_     :				Dict			      =	0

   for values in graph.values():
      for i in values:
         indegree[i] += 1

   for i in range(len(_lowerCAmelCase     )     ):
      if indegree[i] == 0:
         queue.append(_lowerCAmelCase     )

   while queue:
      A_     :				List[str]			      =	queue.pop(0     )
      cnt += 1
      topo.append(_lowerCAmelCase     )
      for x in graph[vertex]:
         indegree[x] -= 1
         if indegree[x] == 0:
            queue.append(_lowerCAmelCase     )

   if cnt != len(_lowerCAmelCase     ):
      print("""Cycle exists"""     )
   else:
      print(_lowerCAmelCase     )


# Adjacency List of Graph
_lowerCAmelCase 				=     {0: [1, 2], 1: [3], 2: [3], 3: [4, 5], 4: [], 5: []}







topological_sort(graph)






