"""simple docstring"""


def 			lowerCamelCase_ (					__lowerCAmelCase   ,    __lowerCAmelCase				)							->					List[str]:




						'''simple docstring'''



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

												a *= a
												b >>= 1

						return res





def 			lowerCamelCase_ (					__lowerCAmelCase   ,    __lowerCAmelCase   ,    __lowerCAmelCase				)							->					Union[str, Any]:




						'''simple docstring'''



						lowerCamelCase__					=1
						while b > 0:
												if b & 1:
																		lowerCamelCase__					=((res % c) * (a % c)) % c

												a *= a
												b >>= 1

						return res




"""simple docstring"""


from .hash_table import HashTable







class 		lowerCamelCase__					(					__magic_name__				):





			'''simple docstring'''



			def __init__(							self     ,     *__UpperCAmelCase     ,     **__UpperCAmelCase  ) ->     List[str]:
				super().__init__(*__UpperCAmelCase     ,     **__UpperCAmelCase  )



			def 					_lowerCAmelCase		(							self     ,     __UpperCAmelCase     ,     __UpperCAmelCase=None  ) ->     Union[str, Any]:
				_lowerCAmelCase								=1
				_lowerCAmelCase								=self.hash_function(key + i * i  )

				while self.values[new_key] is not None and self.values[new_key] != key:
					i += 1
					_lowerCAmelCase								=(
					    self.hash_function(key + i * i  )
					    if not self.balanced_factor() >= self.lim_charge
					    else None
					)

					if new_key is None:
						break

				return new_key



