
def 					SCREAMING_SNAKE_CASE  (   __UpperCamelCase			:    Optional[int]				,    __UpperCamelCase			:    Union[str, Any]							)			->							Union[str, Any]:

				"""simple docstring"""







				A__	:						str								=				1
				while b > 0:
								if b & 1:
												res *= a

								a *= a
								b >>= 1

				return res

def 					SCREAMING_SNAKE_CASE  (   __UpperCamelCase			:    Optional[Any]				,    __UpperCamelCase			:    Optional[int]				,    __UpperCamelCase			:    Union[str, Any]							)			->							List[Any]:

				"""simple docstring"""







				A__	:						List[Any]								=				1
				while b > 0:
								if b & 1:
												A__	:						Tuple								=				((res % c) * (a % c)) % c

								a *= a
								b >>= 1

				return res

def 					SCREAMING_SNAKE_CASE  (   __UpperCamelCase			:    list[int]							)			->							int:

				"""simple docstring"""







				if not isinstance(__UpperCamelCase				,    __UpperCamelCase							) or not all(
				    isinstance(__UpperCamelCase				,    __UpperCamelCase							) and item >= 0 for item in citations							):
								raise ValueError('''The citations should be a list of non negative integers.'''							)

				citations.sort()
				A__	:						str								=				len(__UpperCamelCase							)

				for i in range(__UpperCamelCase							):
								if citations[len_citations - 1 - i] <= i:
												return i

				return len_citations


if __name__ == "__main__":
					import doctest

					doctest.testmod()