

from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_torch_available,
)


lowercase     :       List[Any]        =       {
    "configuration_unispeech_sat": ["UNISPEECH_SAT_PRETRAINED_CONFIG_ARCHIVE_MAP", "UniSpeechSatConfig"],
}

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					lowercase     :       Any        =       [
					    "UNISPEECH_SAT_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "UniSpeechSatForAudioFrameClassification",
					    "UniSpeechSatForCTC",
					    "UniSpeechSatForPreTraining",
					    "UniSpeechSatForSequenceClassification",
					    "UniSpeechSatForXVector",
					    "UniSpeechSatModel",
					    "UniSpeechSatPreTrainedModel",
					]

if TYPE_CHECKING:
					from .configuration_unispeech_sat import UNISPEECH_SAT_PRETRAINED_CONFIG_ARCHIVE_MAP, UniSpeechSatConfig

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_unispeech_sat import (
										    UNISPEECH_SAT_PRETRAINED_MODEL_ARCHIVE_LIST,
										    UniSpeechSatForAudioFrameClassification,
										    UniSpeechSatForCTC,
										    UniSpeechSatForPreTraining,
										    UniSpeechSatForSequenceClassification,
										    UniSpeechSatForXVector,
										    UniSpeechSatModel,
										    UniSpeechSatPreTrainedModel,
										)

else:
					import sys

					lowercase     :       List[str]        =       _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)


from __future__ import annotations







def  UpperCAmelCase_   (_lowerCAmelCase :		int     ,			_lowerCAmelCase :		list[int]     ,			_lowerCAmelCase :		list[int]     ,			_lowerCAmelCase :		int		):

			# Base Case
			if counter == 0 or capacity == 0:
						return 0

			# If weight of the nth item is more than Knapsack of capacity,
			#   then this item cannot be included in the optimal solution,
			# else return the maximum of two cases:
			#   (1) nth item included
			#   (2) not included
			if weights[counter - 1] > capacity:
						return knapsack(_lowerCAmelCase     ,			_lowerCAmelCase     ,			_lowerCAmelCase     ,			counter - 1		)
			else:
						__UpperCamelCase    :    Tuple								=      capacity - weights[counter - 1]
						__UpperCamelCase    :    List[str]								=      values[counter - 1] + knapsack(
						    _lowerCAmelCase     ,			_lowerCAmelCase     ,			_lowerCAmelCase     ,			counter - 1		)
						__UpperCamelCase    :    Dict								=      knapsack(_lowerCAmelCase     ,			_lowerCAmelCase     ,			_lowerCAmelCase     ,			counter - 1		)
						return max(_lowerCAmelCase     ,			_lowerCAmelCase		)


if __name__ == "__main__":
					import doctest

					doctest.testmod()