




from math import pow




def 					__SCREAMING_SNAKE_CASE   (  lowercase_					,     lowercase_					,     lowercase_					,     lowercase_					,     lowercase_					,     )       ->	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

    __UpperCamelCase  		=						int(pow(lowercase_					,     lowercase_      )      )
    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
        __UpperCamelCase		,      __UpperCamelCase  		=						backtrack(
            lowercase_					,     lowercase_					,     current_number + 1					,     lowercase_					,     lowercase_      )
        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.
        __UpperCamelCase		,      __UpperCamelCase  		=						backtrack(
            lowercase_					,     lowercase_					,     current_number + 1					,     lowercase_					,     lowercase_      )
    return current_sum, solutions_count




def 					__SCREAMING_SNAKE_CASE   (  lowercase_					,     lowercase_      )       ->	int:

    """simple docstring"""


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

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


if __name__ == "__main__":
 import doctest

 doctest.testmod()












from abc import ABC, abstractmethod
from argparse import ArgumentParser

class  _lowerCamelCase						(			_SCREAMING_SNAKE_CASE   ):

      """simple docstring"""

      @staticmethod
      @abstractmethod
      def       snake_case	(     snake_case					: ArgumentParser				):
          raise NotImplementedError()







      @abstractmethod
      def       snake_case	(     self					: Optional[Any]				):
          raise NotImplementedError()






