





"""simple docstring"""





def  __A   (_SCREAMING_SNAKE_CASE     ,   _SCREAMING_SNAKE_CASE			)					->Any:





  """simple docstring"""


  if b == 0:
    return 1
  if (b % 2) == 0:
    return actual_power(lowerCamelCase_     ,   int(b / 2			)			) * actual_power(lowerCamelCase_     ,   int(b / 2			)			)
  else:
    return a * actual_power(lowerCamelCase_     ,   int(b / 2			)			) * actual_power(lowerCamelCase_     ,   int(b / 2			)			)
def  __A   (_SCREAMING_SNAKE_CASE     ,   _SCREAMING_SNAKE_CASE			)					->float:





  """simple docstring"""


  if b < 0:
    return 1 / actual_power(lowerCamelCase_     ,   lowerCamelCase_			)
  return actual_power(lowerCamelCase_     ,   lowerCamelCase_			)


if __name__ == "__main__":
  print(power(-2, -3))




def 				UpperCamelCase_(      lowerCamelCase_ )    ->						int:
    if not numbers:
        return 0

    if not isinstance(lowerCamelCase_							, (list, tuple) ) or not all(
        isinstance(lowerCamelCase_							, lowerCamelCase_ ) for number in numbers ):
        raise ValueError('numbers must be an iterable of integers' )

    _lowercase       :							int      		=		numbers[0]

    for i in range(1							, len(lowerCamelCase_ ) ):
        # update the maximum and minimum subarray products
        _lowercase       :							Union[str, Any]      		=		numbers[i]
        if number < 0:
            _lowercase		,				_lowercase       :							Any      		=		min_till_now, max_till_now
        _lowercase       :							Union[str, Any]      		=		max(lowerCamelCase_							, max_till_now * number )
        _lowercase       :							Union[str, Any]      		=		min(lowerCamelCase_							, min_till_now * number )

        # update the maximum product found till now
        _lowercase       :							Optional[Any]      		=		max(lowerCamelCase_							, lowerCamelCase_ )

    return max_prod


