



def    lowerCamelCase_(lowerCamelCase_    ) ->       List[str]:
						UpperCAmelCase         =     set()
						# To detect a back edge, keep track of vertices currently in the recursion stack
						UpperCAmelCase         =     set()
						return any(
						    node not in visited and depth_first_search(__lowercase    ,   __lowercase    ,   __lowercase    ,   __lowercase    )
						    for node in graph    )

def    lowerCamelCase_(lowerCamelCase_    ,   lowerCamelCase_    ,   lowerCamelCase_    ,   lowerCamelCase_    ) ->       Any:
						visited.add(__lowercase    )
						rec_stk.add(__lowercase    )

						for node in graph[vertex]:
												if node not in visited:
																		if depth_first_search(__lowercase    ,   __lowercase    ,   __lowercase    ,   __lowercase    ):
																								return True
												elif node in rec_stk:
																		return True

    # The node needs to be removed from recursion stack before function ends
						rec_stk.remove(__lowercase    )
						return False


if __name__ == "__main__":
					from doctest import testmod

					testmod()








def    lowerCamelCase_(lowerCamelCase_ = 600_851_475_143    ) ->       int:

						try:
												UpperCAmelCase         =     int(lowerCamelCase_    )
						except (TypeError, ValueError):
												raise TypeError("Parameter n must be int or castable to int."    )
						if n <= 0:
												raise ValueError("Parameter n must be greater than or equal to one."    )
						UpperCAmelCase         =     1
						UpperCAmelCase         =     2
						while i * i <= n:
												while n % i == 0:
																		UpperCAmelCase         =     i
																		n //= i
												i += 1
						if n > 1:
												UpperCAmelCase         =     n
						return int(lowerCamelCase_    )


if __name__ == "__main__":
		print(F'''{solution() = }''')



