




'''simple docstring'''


from math import pi, sqrt
def 						snake_case_       (UpperCamelCase			:    float ):





							'''simple docstring'''


							if num <= 0:
														raise ValueError('''math domain error''' )
							if num > 171.5:
														raise OverflowError('''math range error''' )
							elif num - int(UpperCamelCase ) not in (0, 0.5):
														raise NotImplementedError('''num must be an integer or a half-integer''' )
							elif num == 0.5:
														return sqrt(UpperCamelCase )
							else:
														return 1.0 if num == 1 else (num - 1) * gamma(num - 1 )
def 						snake_case_       ():





							'''simple docstring'''


							assert gamma(0.5 ) == sqrt(UpperCamelCase )
							assert gamma(1 ) == 1.0
							assert gamma(2 ) == 1.0


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

				testmod()
				_snake_case : Optional[Any]  				=						1.0
				while num:
								_snake_case : Dict  				=						float(input('Gamma of: '))
								print(F'''gamma({num}) = {gamma(num)}''')
								print('\nEnter 0 to exit...')




import math






class      lowerCamelCase_      :




	def __init__(     self						:     Union[str, Any]					,      __A						:     List[str]=0							):  # a graph with Node 0,1,...,N-1
		__A :			List[str]		    =			n
		__A :			List[str]		    =			[
		    [math.inf for j in range(0					,      __A							)] for i in range(0					,      __A							)
		]  # adjacency matrix for weight
		__A :			str		    =			[
		    [math.inf for j in range(0					,      __A							)] for i in range(0					,      __A							)
		]  # dp[i][j] stores minimum distance from i to j




	def        lowerCAmelCase_       (     self						:     str					,      __A						:     Union[str, Any]					,      __A						:     Any					,      __A						:     Optional[int]							):
		__A :			List[Any]		    =			w




	def        lowerCAmelCase_       (     self						:     Union[str, Any]							):
		for k in range(0					,      self.n							):
			for i in range(0					,      self.n							):
				for j in range(0					,      self.n							):
					__A :			List[Any]		    =			min(self.dp[i][j]					,      self.dp[i][k] + self.dp[k][j]							)




	def        lowerCAmelCase_       (     self						:     int					,      __A						:     List[str]					,      __A						:     List[str]							):
		return self.dp[u][v]


if __name__ == "__main__":
			UpperCAmelCase_							:					Tuple		 =   Graph(5)
			graph.add_edge(0, 2, 9)
			graph.add_edge(0, 4, 10)
			graph.add_edge(1, 3, 5)
			graph.add_edge(2, 3, 7)
			graph.add_edge(3, 0, 10)
			graph.add_edge(3, 1, 2)
			graph.add_edge(3, 2, 1)
			graph.add_edge(3, 4, 6)
			graph.add_edge(4, 1, 3)
			graph.add_edge(4, 2, 4)
			graph.add_edge(4, 3, 9)
			graph.floyd_warshall()
			graph.show_min(1, 4)
			graph.show_min(0, 3)





