



'''simple docstring'''

__lowerCAmelCase		    =     {
    '''kilogram''': 1,
    '''gram''': pow(10, 3),
    '''milligram''': pow(10, 6),
    '''metric-ton''': pow(10, -3),
    '''long-ton''': 0.0009842073,
    '''short-ton''': 0.0011023122,
    '''pound''': 2.2046244202,
    '''stone''': 0.1574731728,
    '''ounce''': 35.273_990_723,
    '''carrat''': 5_000,
    '''atomic-mass-unit''': 6.0_2213_6652e26,
}

__lowerCAmelCase		    =     {
    '''kilogram''': 1,
    '''gram''': pow(10, -3),
    '''milligram''': pow(10, -6),
    '''metric-ton''': pow(10, 3),
    '''long-ton''': 1_016.04_608,
    '''short-ton''': 907.184,
    '''pound''': 0.453592,
    '''stone''': 6.35029,
    '''ounce''': 0.0283495,
    '''carrat''': 0.0002,
    '''atomic-mass-unit''': 1.6_6054_0199e-27,
}



def   __lowerCamelCase  (   lowerCAmelCase_		,    lowerCAmelCase_		,    lowerCAmelCase_						)    ->   float:
		if to_type not in KILOGRAM_CHART or from_type not in WEIGHT_TYPE_CHART:
				_a  :   Union[str, Any]				 =							(
				    f"""Invalid \'from_type\' or \'to_type\' value: {from_type!r}, {to_type!r}\n"""
				    f"""Supported values are: {', '.join(__lowerCamelCase						)}"""
				)
				raise ValueError(__lowerCamelCase						)
		return value * KILOGRAM_CHART[to_type] * WEIGHT_TYPE_CHART[from_type]


if __name__ == "__main__":
							import doctest

							doctest.testmod()









'''simple docstring'''

import math



def   __lowerCamelCase  (   lowerCAmelCase_						)    ->   list:
		if n <= 0:
				raise ValueError('Only positive integers have prime factors'						)
		_a  :   Tuple				 =							[]
		while n % 2 == 0:
				pf.append(2						)
				_a  :   str				 =							int(n / 2						)
		for i in range(3		,    int(math.sqrt(lowerCAmelCase_						)						) + 1		,    2						):
				while n % i == 0:
						pf.append(lowerCAmelCase_						)
						_a  :   List[Any]				 =							int(n / i						)
		if n > 2:
				pf.append(lowerCAmelCase_						)
		return pf



def   __lowerCamelCase  (   lowerCAmelCase_						)    ->   int:
		if n <= 0:
				raise ValueError('Only positive numbers are accepted'						)
		_a  :   int				 =							1
		_a  :   Union[str, Any]				 =							1
		while n % 2 == 0:
				temp += 1
				_a  :   str				 =							int(n / 2						)
		div *= temp
		for i in range(3		,    int(math.sqrt(lowerCAmelCase_						)						) + 1		,    2						):
				_a  :   List[str]				 =							1
				while n % i == 0:
						temp += 1
						_a  :   List[str]				 =							int(n / i						)
				div *= temp
		if n > 1:
				div *= 2
		return div



def   __lowerCamelCase  (   lowerCAmelCase_						)    ->   int:
		if n <= 0:
				raise ValueError('Only positive numbers are accepted'						)
		_a  :   List[str]				 =							1
		_a  :   Union[str, Any]				 =							1
		while n % 2 == 0:
				temp += 1
				_a  :   Tuple				 =							int(n / 2						)
		if temp > 1:
				s *= (2**temp - 1) / (2 - 1)
		for i in range(3		,    int(math.sqrt(lowerCAmelCase_						)						) + 1		,    2						):
				_a  :   str				 =							1
				while n % i == 0:
						temp += 1
						_a  :   Any				 =							int(n / i						)
				if temp > 1:
						s *= (i**temp - 1) / (i - 1)
		return int(lowerCAmelCase_						)



def   __lowerCamelCase  (   lowerCAmelCase_						)    ->   int:
		_a  :   Dict				 =							n
		for x in set(prime_factors(lowerCAmelCase_						)						):
				s *= (x - 1) / x
		return int(lowerCAmelCase_						)


if __name__ == "__main__":
							import doctest

							doctest.testmod()




