
"""simple docstring"""







from __future__ import annotations

import math
def    __lowerCAmelCase    (_UpperCamelCase	,  _UpperCamelCase	,  _UpperCamelCase	,  _UpperCamelCase	,  _UpperCamelCase		):







	if depth < 0:
		raise ValueError('Depth cannot be less than 0'		)

	if len(_A		) == 0:
		raise ValueError('Scores cannot be empty'		)

	if depth == height:
		return scores[node_index]

	if is_max:
		return max(
		    minimax(depth + 1	,  node_index * 2	,  _A	,  _A	,  _A		)	,  minimax(depth + 1	,  node_index * 2 + 1	,  _A	,  _A	,  _A		)	,  )

	return min(
	    minimax(depth + 1	,  node_index * 2	,  _A	,  _A	,  _A		)	,  minimax(depth + 1	,  node_index * 2 + 1	,  _A	,  _A	,  _A		)	,  )
def    __lowerCAmelCase    ():
	__lowerCAmelCase      :						List[Any]						      =				[90, 23, 6, 33, 21, 65, 123, 3_4423]
	__lowerCAmelCase      :						Optional[int]						      =				math.log(len(_A		)	,  2		)
	print('Optimal value : '	,  end=''		)
	print(minimax(0	,  0	,  _A	,  _A	,  _A		)		)


if __name__ == "__main__":
							import doctest

							doctest.testmod()
							main()

"""simple docstring"""







import warnings
from functools import wraps
from typing import Callable
def    __lowerCAmelCase    (_UpperCamelCase		):

	@wraps(_UpperCamelCase		)
	def _inner_fn(*_UpperCamelCase	,  **_UpperCamelCase		):
		warnings.warn(
		    (F"'{fn.__name__}' is experimental and might be subject to breaking changes in the future.")	,  _UpperCamelCase	,  )
		return fn(*_UpperCamelCase	,  **_UpperCamelCase		)

	return _inner_fn