'''simple docstring'''

class 	SCREAMING_SNAKE_CASE      :







		"""simple docstring"""






		def __init__( self					)			->  int:
								_lowerCAmelCase					    =[0]
								_lowerCAmelCase					    =0






		def 		UpperCamelCase__							( self		,    __A					)			->  None:
								_lowerCAmelCase					    =self.__heap[i]
								while i // 2 > 0:
														if self.__heap[i] > self.__heap[i // 2]:
																				_lowerCAmelCase					    =self.__heap[i // 2]
																				_lowerCAmelCase					    =temporary
														i //= 2






		def 		UpperCamelCase__							( self		,    __A					)			->  None:
								self.__heap.append(__A					)
								self.__size += 1
								self.__swap_up(self.__size					)






		def 		UpperCamelCase__							( self		,    __A					)			->  None:
								while self.__size >= 2 * i:
														if 2 * i + 1 > self.__size:
																				_lowerCAmelCase					    =2 * i
														else:
																				if self.__heap[2 * i] > self.__heap[2 * i + 1]:
																										_lowerCAmelCase					    =2 * i
																				else:
																										_lowerCAmelCase					    =2 * i + 1
														_lowerCAmelCase					    =self.__heap[i]
														if self.__heap[i] < self.__heap[bigger_child]:
																				_lowerCAmelCase					    =self.__heap[bigger_child]
																				_lowerCAmelCase					    =temporary
														_lowerCAmelCase					    =bigger_child






		def 		UpperCamelCase__							( self					)			->  int:
								_lowerCAmelCase					    =self.__heap[1]
								_lowerCAmelCase					    =self.__heap[self.__size]
								self.__size -= 1
								self.__heap.pop()
								self.__swap_down(1					)
								return max_value






		@property
		def 		UpperCamelCase__							( self					)			->  Union[str, Any]:
								return self.__heap[1:]






		def __len__( self					)			->  str:
								return self.__size


if __name__ == "__main__":
							import doctest

							doctest.testmod()
							# create an instance of BinaryHeap
							lowercase_  		=			BinaryHeap()
							binary_heap.insert(6)
							binary_heap.insert(10)
							binary_heap.insert(15)
							binary_heap.insert(12)
							# pop root(max-values because it is max heap)
							print(binary_heap.pop())  # 15
							print(binary_heap.pop())  # 12
							# get the list and size after operations
							print(binary_heap.get_list)
							print(len(binary_heap))






'''simple docstring'''

from .prime_check import Test

Test()





