def 			_SCREAMING_SNAKE_CASE						( __lowercase   :			int			,				__lowercase   :			int    )						->      int:





    """simple docstring"""

    __A         =	1  # To kept the Calculated Value
    # Since C(n, k) = C(n, n-k)
    if k > (n - k):
        __A         =	n - k
    # Calculate C(n,k)
    for i in range(__lowercase    ):
        result *= n - i
        result //= i + 1
    return result



def 			_SCREAMING_SNAKE_CASE						( __lowercase   :			int    )						->      int:





    """simple docstring"""

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



def 			_SCREAMING_SNAKE_CASE						( __lowercase   :			int    )						->      int:





    """simple docstring"""

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



def 			_SCREAMING_SNAKE_CASE						( __lowercase   :			int    )						->      int:





    """simple docstring"""

    return catalan_number(__lowercase    ) * factorial(__lowercase    )


if __name__ == "__main__":
  __a      :       Tuple				  =   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."""
  )












def 			_SCREAMING_SNAKE_CASE						( __lowercase   :			List[Any]			,				__lowercase   :			Dict			,				__lowercase   :			str    )						->      Dict:





    """simple docstring"""

    if n == 0:
        return 1

    elif n % 2 == 1:
        return (binary_exponentiation(__lowercase			,				n - 1			,				__lowercase    ) * a) % mod

    else:
        __A         =	binary_exponentiation(__lowercase			,				n / 2			,				__lowercase    )
        return (b * b) % mod


# a prime number
__a      :       Union[str, Any]				  =   701

__a      :       Dict				  =   1000000000
__a      :       Union[str, Any]				  =   10

# using binary exponentiation function, O(log(p)):
print((a / b) % p == (a * binary_exponentiation(b, p - 2, p)) % p)






print((a / b) % p == (a * b ** (p - 2)) % p)




