





"""simple docstring"""






from math import pow

def     __A      (			a_						:int   ,       a_						:int   ,       a_						:int   ,       a_						:int   ,       a_						:int   ,       )		->		tuple[int, int]:
				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

				__a :						Union[str, Any]			       =  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
								__a       ,						__a :						str			       =  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.
								__a       ,						__a :						List[str]			       =  backtrack(
								    a_   ,       a_   ,       current_number + 1   ,       a_   ,       a_)
				return current_sum, solutions_count

def     __A      (			a_						:int   ,       a_						:int)		->		int:
				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(a_   ,       a_   ,       1   ,       0   ,       0)[1]  # Return the solutions_count


if __name__ == "__main__":
		import doctest

		doctest.testmod()






"""simple docstring"""






# tests directory-specific settings - this file is run automatically
# by pytest before any tests are run

import sys
import warnings
from os.path import abspath, dirname, join


# allow having multiple repository checkouts and not needing to remember to rerun
# 'pip install -e .[dev]' when switching between checkouts and running tests.
A 			=  abspath(join(dirname(dirname(dirname(__file__))), '''src'''))
sys.path.insert(1, git_repo_path)


# silence FutureWarning warnings in tests since often we can't act on them until
# they become normal warnings - i.e. the tests still need to test the current functionality
warnings.simplefilter(action='''ignore''', category=FutureWarning)

def     __A      (			a_						:Tuple)		->		Dict:
				from transformers.testing_utils import pytest_addoption_shared

				pytest_addoption_shared(a_)






def     __A      (			a_						:Any)		->		int:
				from transformers.testing_utils import pytest_terminal_summary_main

				__a :						str			       =  terminalreporter.config.getoption('''--make-reports''')
				if make_reports:
								pytest_terminal_summary_main(a_   ,       id=a_)