






from __future__ import annotations

from collections.abc import Generator


def 					snake_case__				(				):
    lowerCAmelCase__ :Union[str, Any]   				=					{}
    lowerCAmelCase__ :Optional[Any]   				=					2
    while True:
        lowerCAmelCase__ :Union[str, Any]   				=					factor_map.pop(lowercase__     ,      lowercase__							)
        if factor:
            lowerCAmelCase__ :List[Any]   				=					factor + prime
            while x in factor_map:
                x += factor
            lowerCAmelCase__ :List[Any]   				=					factor
        else:
            lowerCAmelCase__ :Optional[Any]   				=					prime
            yield prime
        prime += 1


def 					snake_case__				(				UpperCAmelCase				:	float = 1E10							):
    lowerCAmelCase__ :Any   				=					sieve()

    lowerCAmelCase__ :int   				=					1
    while True:
        lowerCAmelCase__ :List[Any]   				=					next(lowercase__							)
        if (2 * prime * n) > limit:
            return n
        # Ignore the next prime as the reminder will be 2.
        next(lowercase__							)
        n += 2


if __name__ == "__main__":
 print(solution())






'''simple docstring'''

def 					__UpperCamelCase				(						lowercase__    :	int			):






     '''simple docstring'''





     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(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:
                     UpperCAmelCase					 =	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()


