"""simple docstring"""
from __future__ import annotations

from abc import abstractmethod
from collections.abc import Iterable
from typing import Generic, Protocol, TypeVar




class   __snake_case			(	__lowerCAmelCase							):



      @abstractmethod
      def __lt__(		self       ,     lowercase)      ->     bool:





        '''simple docstring'''





        pass



      @abstractmethod
      def __gt__(		self       ,     lowercase)      ->     bool:





        '''simple docstring'''





        pass



      @abstractmethod
      def __eq__(		self       ,     lowercase)      ->     bool:





        '''simple docstring'''





        pass







lowercase__   			=      TypeVar('T', bound=Comparable)




class   __snake_case			(	Generic[T]							):



      def __init__(		self)      ->     None:





        '''simple docstring'''





        a__:	list[T]     				=      []
        a__:	int     				=      0



      def __repr__(		self)      ->     str:





        '''simple docstring'''





        return str(self.h)



      def     lowerCamelCase_  (		self       ,     lowercase)      ->     int | None:





        '''simple docstring'''





        if child_idx > 0:
          return (child_idx - 1) // 2
        return None



      def     lowerCamelCase_  (		self       ,     lowercase)      ->     int | None:





        '''simple docstring'''





        a__:	List[Any]     				=      2 * parent_idx + 1
        if left_child_index < self.heap_size:
          return left_child_index
        return None



      def     lowerCamelCase_  (		self       ,     lowercase)      ->     int | None:





        '''simple docstring'''





        a__:	List[str]     				=      2 * parent_idx + 2
        if right_child_index < self.heap_size:
          return right_child_index
        return None



      def     lowerCamelCase_  (		self       ,     lowercase)      ->     None:





        '''simple docstring'''





        if index < self.heap_size:
          a__:	int     				=      index
          a__:	int     				=      self.left_child_idx(lowercase)
          a__:	Dict     				=      self.right_child_idx(lowercase)
          # check which child is larger than its parent
          if left_child is not None and self.h[left_child] > self.h[violation]:
            a__:	List[Any]     				=      left_child
          if right_child is not None and self.h[right_child] > self.h[violation]:
            a__:	List[str]     				=      right_child
          # if violation indeed exists
          if violation != index:
            # swap to fix the violation
            a__				,       a__:	int     				=      self.h[index], self.h[violation]
            # fix the subsequent violation recursively if any
            self.max_heapify(lowercase)



      def     lowerCamelCase_  (		self       ,     lowercase)      ->     None:





        '''simple docstring'''





        a__:	List[Any]     				=      list(lowercase)
        a__:	int     				=      len(self.h)
        if self.heap_size > 1:
          # max_heapify from right to left but exclude leaves (last level)
          for i in range(self.heap_size // 2 - 1       ,     -1       ,     -1):
            self.max_heapify(lowercase)



      def     lowerCamelCase_  (		self)      ->     T:





        '''simple docstring'''





        if self.heap_size >= 2:
          a__:	Any     				=      self.h[0]
          a__:	int     				=      self.h.pop(-1)
          self.heap_size -= 1
          self.max_heapify(0)
          return me
        elif self.heap_size == 1:
          self.heap_size -= 1
          return self.h.pop(-1)
        else:
          raise Exception('Empty heap')



      def     lowerCamelCase_  (		self       ,     lowercase)      ->     None:





        '''simple docstring'''





        self.h.append(lowercase)
        a__:	str     				=      (self.heap_size - 1) // 2
        self.heap_size += 1
        while idx >= 0:
          self.max_heapify(lowercase)
          a__:	Tuple     				=      (idx - 1) // 2



      def     lowerCamelCase_  (		self)      ->     None:





        '''simple docstring'''





        a__:	Any     				=      self.heap_size
        for j in range(size - 1       ,     0       ,     -1):
          a__				,       a__:	str     				=      self.h[j], self.h[0]
          self.heap_size -= 1
          self.max_heapify(0)
        a__:	Union[str, Any]     				=      size


if __name__ == "__main__":
 import doctest

 # run doc test
 doctest.testmod()

 # demo
 for unsorted in [
     [0],
     [2],
     [3, 5],
     [5, 3],
     [5, 5],
     [0, 0, 0, 0],
     [1, 1, 1, 1],
     [2, 2, 3, 5],
     [0, 2, 2, 3, 5],
     [2, 5, 3, 0, 2, 3, 0, 3],
     [6, 1, 2, 7, 9, 3, 4, 5, 10, 8],
     [103, 9, 1, 7, 11, 15, 25, 201, 209, 107, 5],
     [-45, -2, -5],
 ]:
  print(f"unsorted array: {unsorted}")

  lowercase__   			=      Heap()
  heap.build_max_heap(unsorted)
  print(f"after build heap: {heap}")

  print(f"max value: {heap.extract_max()}")
  print(f"after max value removed: {heap}")

  heap.insert(100)
  print(f"after new value 100 inserted: {heap}")

  heap.heap_sort()
  print(f"heap-sorted array: {heap}\n")




'''simple docstring'''







def 				_snake_case (		lowercase = 1_0_0_0						)       ->       int:
				__a       :     Any								=	[]
				__a       :     List[Any]								=	[]
				__a       :     Any								=	3
				__a       :     Optional[Any]								=	5
				__a       :     Optional[Any]								=	1
				while True:
								__a       :     List[str]								=	z * temp
								if result < n:
												zmulti.append(lowercase						)
												temp += 1
								else:
												__a       :     Any								=	1
												break
				while True:
								__a       :     Optional[int]								=	x * temp
								if result < n:
												xmulti.append(lowercase						)
												temp += 1
								else:
												break
				__a       :     Any								=	list(set(xmulti + zmulti						)						)
				return sum(lowercase						)


if __name__ == "__main__":
					print(f'''{solution() = }''')