'''simple docstring'''




from collections import namedtuple

__lowercase				   =  namedtuple('''from_to''', '''from_ to''')

__lowercase				   =  {
    '''atm''': from_to(1, 1),
    '''pascal''': from_to(0.0_000_098, 1_0_1_3_2_5),
    '''bar''': from_to(0.986_923, 1.01_325),
    '''kilopascal''': from_to(0.00_986_923, 101.325),
    '''megapascal''': from_to(9.86_923, 0.101_325),
    '''psi''': from_to(0.068_046, 14.6_959),
    '''inHg''': from_to(0.0_334_211, 29.9_213),
    '''torr''': from_to(0.00_131_579, 7_6_0),
}






def     snake_case__							(      _A: float				,       _A: str				,       _A: str			)   ->     float:

		'''simple docstring'''


		if from_type not in PRESSURE_CONVERSION:
				raise ValueError(
				    f"Invalid 'from_type' value: {from_type!r}  Supported values are:\n"
				    + """, """.join(_A			)			)
		if to_type not in PRESSURE_CONVERSION:
				raise ValueError(
				    f"Invalid 'to_type' value: {to_type!r}.  Supported values are:\n"
				    + """, """.join(_A			)			)
		return (
		    value * PRESSURE_CONVERSION[from_type].from_ * PRESSURE_CONVERSION[to_type].to
		)


if __name__ == "__main__":
						import doctest

						doctest.testmod()





'''simple docstring'''




from __future__ import annotations

__lowercase				   =  [2, 1, 4, 5, 6, 0, 8, 9, 1, 2, 0, 6, 4, 2, 0, 6, 5, 3, 2, 7]






class     a__:


			'''simple docstring'''






			def __init__(       self	,   __lowerCAmelCase):




					"""simple docstring"""


					lowerCAmelCase        =  -1
					lowerCAmelCase        =  -1
					lowerCAmelCase        =  [-1] * length
					lowerCAmelCase        =  None
					lowerCAmelCase        =  None







			def __repr__(       self):




					"""simple docstring"""


					return f"Node(min_value={self.minn} max_value={self.maxx})"







def     snake_case__							(      _A: list[int]			)   ->     Node | None:

		'''simple docstring'''


		lowerCAmelCase        =  Node(len(_A			)			)
		lowerCAmelCase ,					lowerCAmelCase        =  min(_A			), max(_A			)
		# Leaf node case where the node contains only one unique value
		if root.minn == root.maxx:
				return root
		lowerCAmelCase        =  (root.minn + root.maxx) // 2

		lowerCAmelCase        =  []
		lowerCAmelCase        =  []

		for index, num in enumerate(_A			):
				if num <= pivot:
						left_arr.append(_A			)
				else:
						right_arr.append(_A			)
				lowerCAmelCase        =  len(_A			)
		lowerCAmelCase        =  build_tree(_A			)
		lowerCAmelCase        =  build_tree(_A			)
		return root






def     snake_case__							(      _A: Node | None				,       _A: int				,       _A: int			)   ->     int:

		'''simple docstring'''


		if index < 0 or node is None:
				return 0
		# Leaf node cases
		if node.minn == node.maxx:
				return index + 1 if node.minn == num else 0
		lowerCAmelCase        =  (node.minn + node.maxx) // 2
		if num <= pivot:
				# go the left subtree and map index to the left subtree
				return rank_till_index(node.left				,       _A				,       node.map_left[index] - 1			)
		else:
				# go to the right subtree and map index to the right subtree
				return rank_till_index(node.right				,       _A				,       index - node.map_left[index]			)






def     snake_case__							(      _A: Node | None				,       _A: int				,       _A: int				,       _A: int			)   ->     int:

		'''simple docstring'''


		if start > end:
				return 0
		lowerCAmelCase        =  rank_till_index(_A				,       _A				,       _A			)
		lowerCAmelCase        =  rank_till_index(_A				,       _A				,       start - 1			)
		return rank_till_end - rank_before_start






def     snake_case__							(      _A: Node | None				,       _A: int				,       _A: int				,       _A: int			)   ->     int:

		'''simple docstring'''


		if index > (end - start) or start > end or node is None:
				return -1
		# Leaf node case
		if node.minn == node.maxx:
				return node.minn
		# Number of elements in the left subtree in interval [start, end]
		lowerCAmelCase        =  node.map_left[end] - (
		    node.map_left[start - 1] if start else 0
		)
		if num_elements_in_left_tree > index:
				return quantile(
				    node.left				,       _A				,       (node.map_left[start - 1] if start else 0)				,       node.map_left[end] - 1				,       )
		else:
				return quantile(
				    node.right				,       index - num_elements_in_left_tree				,       start - (node.map_left[start - 1] if start else 0)				,       end - node.map_left[end]				,       )






def     snake_case__							(      _A: Node | None				,       _A: int				,       _A: int				,       _A: int				,       _A: int			)   ->     int:

		'''simple docstring'''


		if (
		    start > end
		    or node is None
		    or start_num > end_num
		    or node.minn > end_num
		    or node.maxx < start_num
		):
				return 0
		if start_num <= node.minn and node.maxx <= end_num:
				return end - start + 1
		lowerCAmelCase        =  range_counting(
		    node.left				,       (node.map_left[start - 1] if start else 0)				,       node.map_left[end] - 1				,       _A				,       _A				,       )
		lowerCAmelCase        =  range_counting(
		    node.right				,       start - (node.map_left[start - 1] if start else 0)				,       end - node.map_left[end]				,       _A				,       _A				,       )
		return left + right


if __name__ == "__main__":
						import doctest

						doctest.testmod()




