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

						SCREAMING_SNAKE_CASE_          =  [0] * (upper_limit + 1)

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



from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_sentencepiece_available


A     :  Dict					     =       {}

try:
      if not is_sentencepiece_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      A     :  Optional[Any]					     =       ["BartphoTokenizer"]

if TYPE_CHECKING:
      try:
            if not is_sentencepiece_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .tokenization_bartpho import BartphoTokenizer

else:
      import sys

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


