'''simple docstring'''


def       lowerCAmelCase					(		UpperCamelCase__				:   int       ):


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

	__UpperCAmelCase							=			[0] * (upper_limit + 1)

	# Base case: C(0) = C(1) = 1
	__UpperCAmelCase							=			1
	if upper_limit > 0:
		__UpperCAmelCase							=			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(UpperCamelCase__       ):
			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:
															__lowerCAmelCase	:       int						       =	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_speech_available, is_torch_available


__lowerCAmelCase	:       List[Any]						       =	{
    "configuration_audio_spectrogram_transformer": [
        "AUDIO_SPECTROGRAM_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "ASTConfig",
    ]
}

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					__lowerCAmelCase	:       str						       =	[
					    "AUDIO_SPECTROGRAM_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "ASTForAudioClassification",
					    "ASTModel",
					    "ASTPreTrainedModel",
					]

try:
					if not is_speech_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					__lowerCAmelCase	:       Union[str, Any]						       =	["ASTFeatureExtractor"]

if TYPE_CHECKING:
					from .configuration_audio_spectrogram_transformer import (
					    AUDIO_SPECTROGRAM_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
					    ASTConfig,
					)

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_audio_spectrogram_transformer import (
										    AUDIO_SPECTROGRAM_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
										    ASTForAudioClassification,
										    ASTModel,
										    ASTPreTrainedModel,
										)

					try:
										if not is_speech_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .feature_extraction_audio_spectrogram_transformer import ASTFeatureExtractor


else:
					import sys

					__lowerCAmelCase	:       Optional[Any]						       =	_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)
