code: 
  
  
  '''simple docstring'''
  
  class _lowerCamelCase :
  
  
  
  		'''simple docstring'''
  
  
  
  
  
  
  
  		class _lowerCamelCase :
  
  
  
  				'''simple docstring'''
  
  
  
  
  
  
  
  				A_			:    List[Any]   					=       """_prev""", """_data""", """_next"""
  
  
  
  
  
  
  
  				def __init__(      self	:		Dict						,  _A	:		Optional[Any]						,  _A	:		str						,  _A	:		Tuple    )						->				Tuple:
  					__magic_name__ :					List[str]  			=  link_p
  					__magic_name__ :					List[Any]  			=  element
  					__magic_name__ :					Union[str, Any]  			=  link_n
  
  
  
  
  
  
  
  				def      __lowerCAmelCase	(      self	:		Optional[int]    )						->				Any:
  					return (
  					    F' Prev -> {self._prev is not None}, Next -> {self._next is not None}'
  					)
  
  
  
  
  
  
  
  		def __init__(      self	:		Tuple    )						->				Union[str, Any]:
  			__magic_name__ :					Any  			=  self._Node(_A						,  _A						,  _A    )
  			__magic_name__ :					Tuple  			=  self._Node(_A						,  _A						,  _A    )
  			__magic_name__ :					List[str]  			=  self._trailer
  			__magic_name__ :					int  			=  self._header
  			__magic_name__ :					int  			=  0
  
  
  
  
  
  
  
  		def __len__(      self	:		Union[str, Any]    )						->				Dict:
  			return self._size
  
  
  
  
  
  
  
  		def      __lowerCAmelCase	(      self	:		Optional[int]    )						->				Any:
  			return self.__len__() == 0
  
  
  
  
  
  
  
  		def      __lowerCAmelCase	(      self	:		List[Any]						,  _A	:		List[Any]						,  _A	:		Dict						,  _A	:		int    )						->				str:
  			# Create new_node by setting it's prev.link -> header
  			# setting it's next.link -> trailer
  			__magic_name__ :					Any  			=  self._Node(_A						,  _A						,  _A    )
  			__magic_name__ :					int  			=  new_node
  			__magic_name__ :					List[Any]  			=  new_node
  			self._size += 1
  			return self
  
  
  
  
  
  
  
  		def      __lowerCAmelCase	(      self	:		int						,  _A	:		Optional[Any]    )						->				Union[str, Any]:
  			__magic_name__ :					Dict  			=  node._prev
  			__magic_name__ :					int  			=  node._next
  
  			__magic_name__ :					List[str]  			=  successor
  			__magic_name__ :					Dict  			=  predecessor
  			self._size -= 1
  			__magic_name__ :					List[Any]  			=  node._data
  			__magic_name__ :					Tuple  			=  None
  			del node
  			return temp
  
  
  
  
  
  
  
  class _lowerCamelCase (		_DoublyLinkedBase							):
  
  
  
  		'''simple docstring'''
  
  
  
  
  
  
  
  		def      __lowerCAmelCase	(      self	:		Dict    )						->				List[Any]:
  			if self.is_empty():
  				raise Exception('List is empty'    )
  			return self._header._next._data
  
  
  
  
  
  
  
  		def      __lowerCAmelCase	(      self	:		int    )						->				Dict:
  			if self.is_empty():
  				raise Exception('List is empty'    )
  			return self._trailer._prev._data
  
  
  
  
  
  
  
  		def      __lowerCAmelCase	(      self	:		Tuple						,  _A	:		List[str]    )						->				str:
  			return self._insert(self._header						,  _A						,  self._header._next    )
  
  
  
  
  
  
  
  		def      __lowerCAmelCase	(      self	:		Union[str, Any]						,  _A	:		Dict    )						->				List[str]:
  			return self._insert(self._trailer._prev						,  _A						,  self._trailer    )
  
  
  
  
  
  
  
  		def      __lowerCAmelCase	(      self	:		Optional[int]    )						->				str:
  			if self.is_empty():
  				raise IndexError('remove_first from empty list'    )
  			return self._delete(self._header._next    )
  
  
  
  
  
  
  
  		def      __lowerCAmelCase	(      self	:		Union[str, Any]    )						->				Optional[int]:
  			if self.is_empty():
  				raise IndexError('remove_first from empty list'    )
  			return self._delete(self._trailer._prev    )
style_context: 
  
  
  '''simple docstring'''
  
  from __future__ import annotations
  
  
  
  
  
  def lowerCamelCase    (    lowerCAmelCase       :			list[int | float]	,	lowerCAmelCase       :			int	,	lowerCAmelCase       :			int	):
  
  
  
  
  
  	"""simple docstring"""
  
  
  
  
  
  
  
  	if len(lowerCAmelCase	) == 0:
  		raise ValueError('find_min() arg is an empty sequence'	)
  	if (
  	    left >= len(lowerCAmelCase	)
  	    or left < -len(lowerCAmelCase	)
  	    or right >= len(lowerCAmelCase	)
  	    or right < -len(lowerCAmelCase	)
  	):
  		raise IndexError('list index out of range'	)
  	if left == right:
  		return nums[left]
  	__magic_name__ :					Tuple  			=  (left + right) >> 1  # the middle
  	__magic_name__ :					str  			=  find_min(lowerCAmelCase	,	lowerCAmelCase	,	lowerCAmelCase	)  # find min in range[left, mid]
  	__magic_name__ :					Optional[Any]  			=  find_min(lowerCAmelCase	,	mid + 1	,	lowerCAmelCase	)  # find min in range[mid + 1, right]
  
  	return left_min if left_min <= right_min else right_min
  
  
  if __name__ == "__main__":
  							import doctest
  
  							doctest.testmod(verbose=True)