



import math
import sys






def 							A							(   _lowerCamelCase    ):





							'''simple docstring'''




							if number != int(SCREAMING_SNAKE_CASE_    ):
														raise ValueError("the value of input must be a natural number"    )
							if number < 0:
														raise ValueError("the value of input must not be a negative number"    )
							if number == 0:
														return 1
							_lowerCAmelCase	:				Any					  =       [-1] * (number + 1)
							_lowerCAmelCase	:				Union[str, Any]					  =       0
							for i in range(1							,					number + 1    ):
														_lowerCAmelCase	:				Union[str, Any]					  =       sys.maxsize
														_lowerCAmelCase	:				int					  =       int(math.sqrt(SCREAMING_SNAKE_CASE_    )    )
														for j in range(1							,					root + 1    ):
																					_lowerCAmelCase	:				Tuple					  =       1 + answers[i - (j**2)]
																					_lowerCAmelCase	:				str					  =       min(SCREAMING_SNAKE_CASE_							,					SCREAMING_SNAKE_CASE_    )
														_lowerCAmelCase	:				Optional[int]					  =       answer
							return answers[number]


if __name__ == "__main__":
						import doctest

						doctest.testmod()

'''simple docstring'''


import math

def   A_      (       SCREAMING_SNAKE_CASE_						)			->int:

  if not isinstance(SCREAMING_SNAKE_CASE_ ,	SCREAMING_SNAKE_CASE_						):
    lowercase_     =       f"""Input value of [number={number}] must be an integer"""
    raise TypeError(SCREAMING_SNAKE_CASE_						)

  if number < 1:
    lowercase_     =       f"""Input value of [number={number}] must be > 0"""
    raise ValueError(SCREAMING_SNAKE_CASE_						)
  elif number == 1:
    return 3
  elif number == 2:
    return 5
  else:
    lowercase_     =       int(math.log(number // 3 ,	2						)						) + 2

    lowercase_     =       [3, 5]
    lowercase_     =       2
    lowercase_     =       3
    for block in range(1 ,	SCREAMING_SNAKE_CASE_						):
      for _ in range(SCREAMING_SNAKE_CASE_						):
        proth_list.append(2 ** (block + 1) + proth_list[proth_index - 1]						)
        proth_index += 1
      increment *= 2

  return proth_list[number - 1]


if __name__ == "__main__":
       import doctest

       doctest.testmod()

       for number in range(11):
              __snake_case						  =		0
              try:
                     __snake_case						  =		proth(number)
              except ValueError:
                     print(f'''ValueError: there is no {number}th Proth number''')
                     continue

              print(f'''The {number}th Proth number: {value}''')

