






import math




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




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




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




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


if __name__ == "__main__":
       import doctest

       doctest.testmod()








from collections import namedtuple

UpperCamelCase											=      namedtuple('''from_to''', '''from_ to''')

UpperCamelCase											=      {
    '''millimeter''': '''mm''',
    '''centimeter''': '''cm''',
    '''meter''': '''m''',
    '''kilometer''': '''km''',
    '''inch''': '''in''',
    '''inche''': '''in''',  # Trailing 's' has been stripped off
    '''feet''': '''ft''',
    '''foot''': '''ft''',
    '''yard''': '''yd''',
    '''mile''': '''mi''',
}

UpperCamelCase											=      {
    '''mm''': from_to(0.001, 1_0_0_0),
    '''cm''': from_to(0.01, 1_0_0),
    '''m''': from_to(1, 1),
    '''km''': from_to(1_0_0_0, 0.001),
    '''in''': from_to(0.0254, 39.3701),
    '''ft''': from_to(0.3048, 3.2_8084),
    '''yd''': from_to(0.9144, 1.0_9361),
    '''mi''': from_to(1609.34, 0.0_0062_1371),
}




def       _a   (							lowerCamelCase__ ,			lowerCamelCase__ ,			lowerCamelCase__				)  ->      float:
 lowerCamelCase_							:    List[Any]							=     from_type.lower().rstrip('s'				)
 lowerCamelCase_							:    Optional[Any]							=     TYPE_CONVERSION.get(lowerCamelCase__ ,			lowerCamelCase__				)
 lowerCamelCase_							:    List[Any]							=     to_type.lower().rstrip('s'				)
 lowerCamelCase_							:    Optional[int]							=     TYPE_CONVERSION.get(lowerCamelCase__ ,			lowerCamelCase__				)
 if new_from not in METRIC_CONVERSION:
  lowerCamelCase_							:    List[Any]							=     (
      F'Invalid \'from_type\' value: {from_type!r}.\n'
      F'Conversion abbreviations are: {", ".join(lowerCamelCase__				)}'
  )
  raise ValueError(lowerCamelCase__				)
 if new_to not in METRIC_CONVERSION:
  lowerCamelCase_							:    List[str]							=     (
      F'Invalid \'to_type\' value: {to_type!r}.\n'
      F'Conversion abbreviations are: {", ".join(lowerCamelCase__				)}'
  )
  raise ValueError(lowerCamelCase__				)
 return value * METRIC_CONVERSION[new_from].from_ * METRIC_CONVERSION[new_to].to


if __name__ == "__main__":
       import doctest

       doctest.testmod()
