





from math import pow





def 	lowerCAmelCase_					(			__a      ,       __a      ,       __a      ,       __a      ,       __a      ,       )	->						tuple[int, int]:







  """simple docstring"""





  if current_sum == needed_sum:
    # If the sum of the powers is equal to needed_sum, then we have a solution.
    solutions_count += 1
    return current_sum, solutions_count

  lowerCamelCase__: Tuple         =int(pow(__a      ,       __a						)						)
  if current_sum + i_to_n <= needed_sum:
    # If the sum of the powers is less than needed_sum, then continue adding powers.
    current_sum += i_to_n
    lowerCamelCase__    ,   lowerCamelCase__: Optional[Any]         =backtrack(
        __a      ,       __a      ,       current_number + 1      ,       __a      ,       __a						)
    current_sum -= i_to_n
  if i_to_n < needed_sum:
    # If the power of i is less than needed_sum, then try with the next power.
    lowerCamelCase__    ,   lowerCamelCase__: Tuple         =backtrack(
        __a      ,       __a      ,       current_number + 1      ,       __a      ,       __a						)
  return current_sum, solutions_count





def 	lowerCAmelCase_					(			__a      ,       __a						)	->						int:







  """simple docstring"""





  if not (1 <= needed_sum <= 1000 and 2 <= power <= 10):
    raise ValueError(
        "Invalid input\n"
        "needed_sum must be between 1 and 1000, power between 2 and 10."						)

  return backtrack(__a      ,       __a      ,       1      ,       0      ,       0						)[1]  # Return the solutions_count


if __name__ == "__main__":
     import doctest

     doctest.testmod()





def    a__    (		snake_case__					:							int						,   snake_case__					:							int     ):
  return x if y == 0 else greatest_common_divisor(snake_case__						,   x % y     )




def    a__    (		snake_case__					:							int						,   snake_case__					:							int     ):
  return (x * y) // greatest_common_divisor(snake_case__						,   snake_case__     )




def    a__    (		snake_case__					:							int = 20     ):
  _UpperCAmelCase		:							Union[str, Any]							=     1
  for i in range(1						,   n + 1     ):
    _UpperCAmelCase		:							Dict							=     lcm(snake_case__						,   snake_case__     )
  return g


if __name__ == "__main__":
 print(F'{solution() = }')





