


def 							__lowercase   ( __lowerCAmelCase							:				list					,    __lowerCAmelCase							:				list   ):
							_validate_point(_UpperCAmelCase   )
							_validate_point(_UpperCAmelCase   )
							if len(_UpperCAmelCase   ) != len(_UpperCAmelCase   ):
														raise ValueError('Both points must be in the same n-dimensional space'   )

							return float(sum(abs(a - b   ) for a, b in zip(_UpperCAmelCase					,    _UpperCAmelCase   )   )   )






def 							__lowercase   ( __lowerCAmelCase							:				list[float]   ):







							if point:
														if isinstance(_UpperCAmelCase					,    _UpperCAmelCase   ):
																					for item in point:
																												if not isinstance(_UpperCAmelCase					,    (int, float)   ):
																																			a__             =     (
																																			    "Expected a list of numbers as input, found "
																																			    F'{type(_UpperCAmelCase   ).__name__}'
																																			)
																																			raise TypeError(_UpperCAmelCase   )
														else:
																					a__             =     F'Expected a list of numbers as input, found {type(_UpperCAmelCase   ).__name__}'
																					raise TypeError(_UpperCAmelCase   )
							else:
														raise ValueError('Missing an input'   )






def 							__lowercase   ( __lowerCAmelCase							:				list					,    __lowerCAmelCase							:				list   ):
							_validate_point(_UpperCAmelCase   )
							_validate_point(_UpperCAmelCase   )
							if len(_UpperCAmelCase   ) != len(_UpperCAmelCase   ):
														raise ValueError('Both points must be in the same n-dimensional space'   )

							return float(sum(abs(x - y   ) for x, y in zip(_UpperCAmelCase					,    _UpperCAmelCase   )   )   )


if __name__ == "__main__":
						import doctest

						doctest.testmod()





'''simple docstring'''




def 	UpperCamelCase_							(					_UpperCAmelCase  :      int			,	_UpperCAmelCase  :      int    )    ->    int:


       """simple docstring"""







       _UpperCAmelCase     :  List[str]							      =    1  # To kept the Calculated Value
       # Since C(n, k) = C(n, n-k)
       if k > (n - k):
              _UpperCAmelCase     :  Any							      =    n - k
       # Calculate C(n,k)
       for i in range(_UpperCAmelCase    ):
              result *= n - i
              result //= i + 1
       return result

def 	UpperCamelCase_							(					_UpperCAmelCase  :      int    )    ->    int:


       """simple docstring"""







       return binomial_coefficient(2 * node_count			,	_UpperCAmelCase    ) // (node_count + 1)

def 	UpperCamelCase_							(					_UpperCAmelCase  :      int    )    ->    int:


       """simple docstring"""







       if n < 0:
              raise ValueError("factorial() not defined for negative values"    )
       _UpperCAmelCase     :  List[str]							      =    1
       for i in range(1			,	n + 1    ):
              result *= i
       return result

def 	UpperCamelCase_							(					_UpperCAmelCase  :      int    )    ->    int:


       """simple docstring"""







       return catalan_number(_UpperCAmelCase    ) * factorial(_UpperCAmelCase    )


if __name__ == "__main__":
  __SCREAMING_SNAKE_CASE       :     Dict     =  int(input("""Enter the number of nodes: """).strip() or 0)
  if node_count <= 0:
    raise ValueError("""We need some nodes to work with.""")
  print(
      F'Given {node_count} nodes, there are {binary_tree_count(node_count)} '
      F'binary trees and {catalan_number(node_count)} binary search trees.'
  )

