def 						A__  (					__A   , __A	):







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







def 						A__  (					__A	):







    '''simple docstring'''
    return binomial_coefficient(2 * node_count   , __A	) // (node_count + 1)







def 						A__  (					__A	):







    '''simple docstring'''
    if n < 0:
        raise ValueError("""factorial() not defined for negative values"""	)
    _lowerCamelCase     :		Union[str, Any] 						=						1
    for i in range(1   , n + 1	):
        result *= i
    return result







def 						A__  (					__A	):







    '''simple docstring'''
    return catalan_number(__A	) * factorial(__A	)


if __name__ == "__main__":
    lowerCAmelCase			:							List[Any]     =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."""
    )





import math







def 						A__  (					__A	):







    '''simple docstring'''
    assert isinstance(__A   , __A	) and (
        number >= 0
    ), "'number' must been an int and positive"

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

    _lowerCamelCase     :		List[Any] 						=						range(3   , int(math.sqrt(__A	) + 1	)   , 2	)
    return not any(not number % i for i in odd_numbers	)







def 						A__  (					__A   , __A=1   , **__A	):







    '''simple docstring'''
    _lowerCamelCase     :		Dict 						=						factor * value
    _lowerCamelCase     :		str 						=						value

    while not is_prime(__A	):
        value += 1 if not ("desc" in kwargs and kwargs["desc"] is True) else -1

    if value == first_value_val:
        return next_prime(value + 1   , **__A	)
    return value




