



from ...configuration_utils import PretrainedConfig
from ...utils import logging


lowercase_								=     logging.get_logger(__name__)
class 				_snake_case			(					lowercase__):
				UpperCamelCase__				:					Any     		="""timm_backbone"""




				def __init__(						self					:						Any,					__lowercase					:						str=None,					__lowercase					:						str=3,					__lowercase					:						str=True,					__lowercase					:						Union[str, Any]=True,					__lowercase					:						Optional[int]=None,					**__lowercase					:						int,					):
							super().__init__(**__lowercase						)
							lowercase__					  =				backbone
							lowercase__					  =				num_channels
							lowercase__					  =				features_only
							lowercase__					  =				use_pretrained_backbone
							lowercase__					  =				True
							lowercase__					  =				out_indices if out_indices is not None else (-1,)









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

			lowercase__					  =				[0] * (upper_limit + 1)

			# Base case: C(0) = C(1) = 1
			lowercase__					  =				1
			if upper_limit > 0:
						lowercase__					  =				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(SCREAMING_SNAKE_CASE_  ):
									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:
																					lowercase_								=     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()




