

def   lowercase_	(    _lowercase       :		int	):




					'''simple docstring'''






					if upper_limit < 0:
										raise ValueError("Limit for the Catalan sequence must be ≥ 0"	)

					UpperCAmelCase			:   str      =				[0] * (upper_limit + 1)

					# Base case: C(0) = C(1) = 1
					UpperCAmelCase			:   Dict      =				1
					if upper_limit > 0:
										UpperCAmelCase			:   str      =				1

					# Recurrence relation: C(i) = sum(C(j).C(i-j-1)), from j = 0 to i
					for i in range(2							,      upper_limit + 1	):
										for j in range(lowercase_	):
															catalan_list[i] += catalan_list[j] * catalan_list[i - j - 1]

					return catalan_list


if __name__ == "__main__":
	print("""\n********* Catalan Numbers Using Dynamic Programming ************\n""")
	print("""\n*** Enter -1 at any time to quit ***""")
	print("""\nEnter the upper limit (≥ 0) for the Catalan number sequence: """, end="""""")
	try:
		while True:
			snake_case_   :   List[Any]        =       int(input().strip())
			if N < 0:
				print("""\n********* Goodbye!! ************""")
				break
			else:
				print(f'''The Catalan numbers from 0 through {N} are:''')
				print(catalan_numbers(N))
				print("""Try another upper limit for the sequence: """, end="""""")
	except (NameError, ValueError):
		print("""\n********* Invalid input, goodbye! ************\n""")

	import doctest

	doctest.testmod()





"""simple docstring"""






from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


snake_case_   :   Dict        =       {
    """configuration_mvp""": ["""MVP_PRETRAINED_CONFIG_ARCHIVE_MAP""", """MvpConfig""", """MvpOnnxConfig"""],
    """tokenization_mvp""": ["""MvpTokenizer"""],
}

try:
	if not is_tokenizers_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	snake_case_   :   List[Any]        =       ["""MvpTokenizerFast"""]

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	snake_case_   :   Any        =       [
	    """MVP_PRETRAINED_MODEL_ARCHIVE_LIST""",
	    """MvpForCausalLM""",
	    """MvpForConditionalGeneration""",
	    """MvpForQuestionAnswering""",
	    """MvpForSequenceClassification""",
	    """MvpModel""",
	    """MvpPreTrainedModel""",
	]

if TYPE_CHECKING:
	from .configuration_mvp import MVP_PRETRAINED_CONFIG_ARCHIVE_MAP, MvpConfig, MvpOnnxConfig
	from .tokenization_mvp import MvpTokenizer

	try:
		if not is_tokenizers_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .tokenization_mvp_fast import MvpTokenizerFast

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_mvp import (
		    MVP_PRETRAINED_MODEL_ARCHIVE_LIST,
		    MvpForCausalLM,
		    MvpForConditionalGeneration,
		    MvpForQuestionAnswering,
		    MvpForSequenceClassification,
		    MvpModel,
		    MvpPreTrainedModel,
		)

else:
	import sys

	snake_case_   :   List[str]        =       _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)


