
'''simple docstring'''






import math


def 	_A  (					A__   ):






 """simple docstring"""



 if not isinstance(A__  ,       A__   ):
  __lowercase													=				F"Input value of [number={number}] must be an integer"
  raise TypeError(A__   )

 if number < 1:
  __lowercase													=				F"Input value of [number={number}] must be > 0"
  raise ValueError(A__   )
 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  ,       A__   ):
   for _ in range(A__   ):
    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):
  lowerCAmelCase__      		=			0
  try:
   lowerCAmelCase__      		=			proth(number)
  except ValueError:
   print(f'ValueError: there is no {number}th Proth number')
   continue

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




'''simple docstring'''






def 	_A  (					):






 """simple docstring"""



 for n in range(1  ,       1000000   ):
  yield n * (n + 1) // 2


def 	_A  (					A__   ):






 """simple docstring"""



 __lowercase													=				1
 __lowercase													=				2
 while i * i <= n:
  __lowercase													=				0
  while n % i == 0:
   n //= i
   multiplicity += 1
  divisors_count *= multiplicity + 1
  i += 1
 if n > 1:
  divisors_count *= 2
 return divisors_count


def 	_A  (					):






 """simple docstring"""



 return next(i for i in triangle_number_generator() if count_divisors(A__   ) > 500   )


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

