

from math import pow




def 			UpperCAmelCase__				(			_A      : int	,      _A      : int	,      _A      : int	,      _A      : int	,      _A      : 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

  a__  =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__  =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__  =backtrack(
        _A	,      _A	,      current_number + 1	,      _A	,      _A							)
  return current_sum, solutions_count




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


if __name__ == "__main__":
       import doctest

       doctest.testmod()



from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


lowerCamelCase           =					{
    '''configuration_mvp''': ['''MVP_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''MvpConfig''', '''MvpOnnxConfig'''],
    '''tokenization_mvp''': ['''MvpTokenizer'''],
}

try:
       if not is_tokenizers_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       lowerCamelCase           =					['''MvpTokenizerFast''']

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       lowerCamelCase           =					[
           '''MVP_PRETRAINED_MODEL_ARCHIVE_LIST''',
           '''MvpForCausalLM''',
           '''MvpForConditionalGeneration''',
           '''MvpForQuestionAnswering''',
           '''MvpForSequenceClassification''',
           '''MvpModel''',
           '''MvpPreTrainedModel''',
       ]

if TYPE_CHECKING:
       from .configuration_mvp import MVP_PRETRAINED_CONFIG_ARCHIVE_MAP, MvpConfig, MvpOnnxConfig
       from .tokenization_mvp import MvpTokenizer

       try:
              if not is_tokenizers_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .tokenization_mvp_fast import MvpTokenizerFast

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_mvp import (
                  MVP_PRETRAINED_MODEL_ARCHIVE_LIST,
                  MvpForCausalLM,
                  MvpForConditionalGeneration,
                  MvpForQuestionAnswering,
                  MvpForSequenceClassification,
                  MvpModel,
                  MvpPreTrainedModel,
              )

else:
       import sys

       lowerCamelCase           =					_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)
