






"""simple docstring"""





_SCREAMING_SNAKE_CASE					:				Union[str, Any]					    =						[0, 2, 4, 6, 8]
_SCREAMING_SNAKE_CASE					:				Dict					    =						[1, 3, 5, 7, 9]







def      lowerCamelCase__       (							_lowerCamelCase       :		int		,				_lowerCamelCase       :		int		,				_lowerCamelCase       :		list[int]		,				_lowerCamelCase       :		int )      ->				int:
  if remaining_length == 0:
    if digits[0] == 0 or digits[-1] == 0:
      return 0

    for i in range(length // 2 - 1		,				-1		,				-1 ):
      remainder += digits[i] + digits[length - i - 1]

      if remainder % 2 == 0:
        return 0

      remainder //= 10

    return 1

  if remaining_length == 1:
    if remainder % 2 == 0:
      return 0

    lowerCamelCase_         =						0
    for digit in range(10 ):
      lowerCamelCase_         =						digit
      result += reversible_numbers(
          0		,				(remainder + 2 * digit) // 10		,				_lowerCamelCase		,				_lowerCamelCase )
    return result

  lowerCamelCase_         =						0
  for digita in range(10 ):
    lowerCamelCase_         =						digita

    if (remainder + digita) % 2 == 0:
      lowerCamelCase_         =						ODD_DIGITS
    else:
      lowerCamelCase_         =						EVEN_DIGITS

    for digita in other_parity_digits:
      lowerCamelCase_         =						digita
      result += reversible_numbers(
          remaining_length - 2		,				(remainder + digita + digita) // 10		,				_lowerCamelCase		,				_lowerCamelCase		,				)
  return result







def      lowerCamelCase__       (							_lowerCamelCase       :		int = 9 )      ->				int:
  lowerCamelCase_         =						0
  for length in range(1		,				max_power + 1 ):
    result += reversible_numbers(_lowerCamelCase		,				0		,				[0] * length		,				_lowerCamelCase )
  return result


if __name__ == "__main__":
  print(F'''{solution() = }''')












"""simple docstring"""





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







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







def      lowerCamelCase__       (							_lowerCamelCase       :		int )      ->				int:
  if n < 0:
    raise ValueError('factorial() not defined for negative values' )
  lowerCamelCase_         =						1
  for i in range(1		,				n + 1 ):
    result *= i
  return result







def      lowerCamelCase__       (							_lowerCamelCase       :		int )      ->				int:
  return catalan_number(_lowerCamelCase ) * factorial(_lowerCamelCase )


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




