






import math






def    UpperCamelCase__  (   UpperCAmelCase     )     ->		bool:







							"""simple docstring"""





							if 1 < number < 4:
														# 2 and 3 are primes
														return True
							elif number < 2 or number % 2 == 0 or number % 3 == 0:
														# Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
														return False

							# All primes number are in format of 6k +/- 1
							for i in range(5    ,	int(math.sqrt(UpperCAmelCase     ) + 1     )    ,	6     ):
														if number % i == 0 or number % (i + 2) == 0:
																					return False
							return True






def    UpperCamelCase__  (   UpperCAmelCase = 600851475143     )     ->		int:







							"""simple docstring"""





							try:
														_a  :    Optional[int]			=						int(UpperCAmelCase     )
							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.'''     )
							_a  :    Dict			=						0
							if is_prime(UpperCAmelCase     ):
														return n
							while n % 2 == 0:
														n //= 2
							if is_prime(UpperCAmelCase     ):
														return n
							for i in range(3    ,	int(math.sqrt(UpperCAmelCase     )     ) + 1    ,	2     ):
														if n % i == 0:
																					if is_prime(n // i     ):
																												_a  :    Optional[int]			=						n // i
																												break
																					elif is_prime(UpperCAmelCase     ):
																												_a  :    int			=						i
							return max_number


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







__lowerCamelCase						= {0: [1, 2], 1: [0, 3], 2: [0], 3: [1], 4: [5, 6], 5: [4, 6], 6: [4, 5]}

__lowerCamelCase						= {0: [1, 2, 3], 1: [0, 3], 2: [0], 3: [0, 1], 4: [], 5: []}






def    UpperCamelCase__  (   UpperCAmelCase    ,	UpperCAmelCase    ,	UpperCAmelCase     )     ->		list:







							"""simple docstring"""





							_a  :    List[Any]			=						True
							_a  :    Optional[Any]			=						[]

							for neighbour in graph[vert]:
														if not visited[neighbour]:
																					connected_verts += dfs(UpperCAmelCase    ,	UpperCAmelCase    ,	UpperCAmelCase     )

							return [vert, *connected_verts]






def    UpperCamelCase__  (   UpperCAmelCase     )     ->		list:







							"""simple docstring"""





							_a  :    Optional[int]			=						len(UpperCAmelCase     )
							_a  :    Optional[Any]			=						graph_size * [False]
							_a  :    Optional[int]			=						[]

							for i in range(UpperCAmelCase     ):
														if not visited[i]:
																					_a  :    List[str]			=						dfs(UpperCAmelCase    ,	UpperCAmelCase    ,	UpperCAmelCase     )
																					components_list.append(UpperCAmelCase     )

							return components_list


if __name__ == "__main__":
						import doctest

						doctest.testmod()