






def      UpperCAmelCase						( lowerCAmelCase__					,     lowerCAmelCase__					,     lowerCAmelCase__					,     lowerCAmelCase__	):


		'''simple docstring'''

		__A    =							int((lower_bound + upper_bound) // 2	)
		if array[r] == value:
				return r
		if lower_bound >= upper_bound:
				return -1
		if array[r] < value:
				return binary_search(lowerCAmelCase__					,     r + 1					,     lowerCAmelCase__					,     lowerCAmelCase__	)
		else:
				return binary_search(lowerCAmelCase__					,     lowerCAmelCase__					,     r - 1					,     lowerCAmelCase__	)



def      UpperCAmelCase						( lowerCAmelCase__					,     lowerCAmelCase__	):


		'''simple docstring'''

		__A    =							0
		if matrix[index][0] == value:
				return [index, 0]
		while index < len(lowerCAmelCase__	) and matrix[index][0] < value:
				__A    =							binary_search(matrix[index]					,     0					,     len(matrix[index]	) - 1					,     lowerCAmelCase__	)
				if r != -1:
						return [index, r]
				index += 1
		return [-1, -1]


if __name__ == "__main__":
					import doctest

					doctest.testmod()






from typing import Callable





def     __lowerCamelCase							(   __magic_name__						:	Callable    ):

							def wrapper(__magic_name__						:	Optional[Any]    ):
														a__:							List[Any]									=function_with_docstring.__doc__
														return target_function

							return wrapper





