





'''simple docstring'''




def 		__A		(  lowerCamelCase_ = 1_00	):


		"""simple docstring"""



		SCREAMING_SNAKE_CASE :				Optional[Any]		=			set()

		SCREAMING_SNAKE_CASE :				int		=			0

		SCREAMING_SNAKE_CASE :				Tuple		=			n + 1  # maximum limit

		for a in range(2			,			lowerCamelCase_	):
				for b in range(2			,			lowerCamelCase_	):
						SCREAMING_SNAKE_CASE :				Tuple		=			a**b  # calculates the current power
						collect_powers.add(lowerCamelCase_	)  # adds the result to the set
		return len(lowerCamelCase_	)


if __name__ == "__main__":
							print("""Number of terms """, solution(int(str(input()).strip())))










'''simple docstring'''




def 		__A		(  lowerCamelCase_			,			lowerCamelCase_	):


		"""simple docstring"""



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



def 		__A		(  lowerCamelCase_	):


		"""simple docstring"""



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



def 		__A		(  lowerCamelCase_	):


		"""simple docstring"""



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



def 		__A		(  lowerCamelCase_	):


		"""simple docstring"""



		return catalan_number(lowerCamelCase_	) * factorial(lowerCamelCase_	)


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



