
def 						_snake_case(  SCREAMING_SNAKE_CASE__ ,     SCREAMING_SNAKE_CASE__    )			->   int:
       lowercase							:					Any	     =				1  # To kept the Calculated Value
       # Since C(n, k) = C(n, n-k)
       if k > (n - k):
              lowercase							:					Any	     =				n - k
       # Calculate C(n,k)
       for i in range(SCREAMING_SNAKE_CASE__    ):
              result *= n - i
              result //= i + 1
       return result







def 						_snake_case(  SCREAMING_SNAKE_CASE__    )			->   int:
       return binomial_coefficient(2 * node_count ,     SCREAMING_SNAKE_CASE__    ) // (node_count + 1)







def 						_snake_case(  SCREAMING_SNAKE_CASE__    )			->   int:
       if n < 0:
              raise ValueError("""factorial() not defined for negative values"""    )
       lowercase							:					Dict	     =				1
       for i in range(1 ,     n + 1    ):
              result *= i
       return result







def 						_snake_case(  SCREAMING_SNAKE_CASE__    )			->   int:
       return catalan_number(SCREAMING_SNAKE_CASE__    ) * factorial(SCREAMING_SNAKE_CASE__    )


if __name__ == "__main__":
  lowercase  : str						   =							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.'''
  )


print((lambda quine: quine % quine)("""print((lambda quine: quine %% quine)(%r))"""))
