

'''simple docstring'''

def 				UpperCamelCase(					UpperCAmelCase_  ,	UpperCAmelCase_     ):
 while a != 0:
  UpperCAmelCase	:     Tuple						 =			b % a, a
 return b




def 				UpperCamelCase(					UpperCAmelCase_  ,	UpperCAmelCase_     ):
 if gcd(UpperCAmelCase_  ,	UpperCAmelCase_     ) != 1:
  UpperCAmelCase	:     List[str]						 =			F"""mod inverse of {a!r} and {m!r} does not exist"""
  raise ValueError(UpperCAmelCase_     )
 UpperCAmelCase	:     Any						 =			1, 0, a
 UpperCAmelCase	:     Dict						 =			0, 1, m
 while va != 0:
  UpperCAmelCase	:     Tuple						 =			ua // va
  UpperCAmelCase	:     List[Any]						 =			(ua - q * va), (ua - q * va), (ua - q * va), va, va, va
 return ua % m







'''simple docstring'''

def 				UpperCamelCase(					UpperCAmelCase_  ,	UpperCAmelCase_     ):
 if b == 0:
  return 1
 if (b % 2) == 0:
  return actual_power(UpperCAmelCase_  ,	int(b / 2     )     ) * actual_power(UpperCAmelCase_  ,	int(b / 2     )     )
 else:
  return a * actual_power(UpperCAmelCase_  ,	int(b / 2     )     ) * actual_power(UpperCAmelCase_  ,	int(b / 2     )     )




def 				UpperCamelCase(					UpperCAmelCase_  ,	UpperCAmelCase_     ):
 if b < 0:
  return 1 / actual_power(UpperCAmelCase_  ,	UpperCAmelCase_     )
 return actual_power(UpperCAmelCase_  ,	UpperCAmelCase_     )


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




