


from graphs.minimum_spanning_tree_kruskal import kruskal

def 	_a     ( ):







 """simple docstring"""



 UpperCamelCase__    :			str      				=      9
 UpperCamelCase__    :			Any      				=      [
     [0, 1, 4],
     [0, 7, 8],
     [1, 2, 8],
     [7, 8, 7],
     [7, 6, 1],
     [2, 8, 2],
     [8, 6, 6],
     [2, 3, 7],
     [2, 5, 4],
     [6, 5, 2],
     [3, 5, 14],
     [3, 4, 9],
     [5, 4, 10],
     [1, 7, 11],
 ]

 UpperCamelCase__    :			Optional[Any]      				=      kruskal(lowercase_			,       lowercase_   )

 UpperCamelCase__    :			str      				=      [
     [7, 6, 1],
     [2, 8, 2],
     [6, 5, 2],
     [0, 1, 4],
     [2, 5, 4],
     [2, 3, 7],
     [0, 7, 8],
     [3, 4, 9],
 ]

 assert sorted(lowercase_   ) == sorted(lowercase_   )








def SCREAMING_SNAKE_CASE				(       lowercase_						)   ->       "list[int]":



       """simple docstring"""

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

       A__       =    [0] * (upper_limit + 1)

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


