

def 				snake_case_(_UpperCamelCase					)							->     "list[int]":



  """simple docstring"""






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

  _snake_case						=							[0] * (upper_limit + 1)

  # Base case: C(0) = C(1) = 1
  _snake_case						=							1
  if upper_limit > 0:
    _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      		=       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 math import factorial



def 				snake_case_(_UpperCamelCase			,	_UpperCamelCase					)							->     int:



  """simple docstring"""






  if n < k or k < 0:
    raise ValueError('''Please enter positive integers for n and k where n >= k'''					)
  return factorial(_UpperCamelCase					) // (factorial(_UpperCamelCase					) * factorial(n - k					))


if __name__ == "__main__":
 print(
     '''The number of five-card hands possible from a standard''',
     f'''fifty-two card deck is: {combinations(52, 5)}\n''',
 )

 print(
     '''If a class of 40 students must be arranged into groups of''',
     f'''4 for group projects, there are {combinations(40, 4)} ways''',
     '''to arrange them.\n''',
 )

 print(
     '''If 10 teams are competing in a Formula One race, there''',
     f'''are {combinations(10, 3)} ways that first, second and''',
     '''third place can be awarded.''',
 )

