


lowerCAmelCase__  :dict[tuple[int, int, int], int]             =							{}

def 	lowerCAmelCase__			(      a__:		int      ,  a__:		int      ,  a__:		int	)  ->		int:


							'''simple docstring'''





							if late == 3 or absent == 2:
														return 0

							# if we have no days left, and have not failed any other rules,
							# we have a prize string
							if days == 0:
														return 1

							# No easy solution, so now we need to do the recursive calculation

							# First, check if the combination is already in the cache, and
							# if yes, return the stored value from there since we already
							# know the number of possible prize strings from this point on
							_UpperCAmelCase					=      (days, absent, late)
							if key in cache:
														return cache[key]

							# now we calculate the three possible ways that can unfold from
							# this point on, depending on our attendance today

							# 1) if we are late (but not absent), the "absent" counter stays as
							# it is, but the "late" counter increases by one
							_UpperCAmelCase					=      _calculate(days - 1      ,  a__      ,  late + 1	)

							# 2) if we are absent, the "absent" counter increases by 1, and the
							# "late" counter resets to 0
							_UpperCAmelCase					=      _calculate(days - 1      ,  absent + 1      ,  0	)

							# 3) if we are on time, this resets the "late" counter and keeps the
							# absent counter
							_UpperCAmelCase					=      _calculate(days - 1      ,  a__      ,  0	)

							_UpperCAmelCase					=      state_late + state_absent + state_ontime

							_UpperCAmelCase					=      prizestrings
							return prizestrings

def 	lowerCAmelCase__			(      a__:		int = 3_0	)  ->		int:


							'''simple docstring'''





							return _calculate(a__      ,  absent=0      ,  late=0	)


if __name__ == "__main__":
		print(solution())




from typing import TYPE_CHECKING

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


lowerCAmelCase__  :Tuple             =							{'''configuration_beit''': ['''BEIT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''BeitConfig''', '''BeitOnnxConfig''']}

try:
		if not is_vision_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase__  :List[Any]             =							['''BeitFeatureExtractor''']
		lowerCAmelCase__  :Optional[Any]             =							['''BeitImageProcessor''']

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase__  :int             =							[
		    '''BEIT_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''BeitForImageClassification''',
		    '''BeitForMaskedImageModeling''',
		    '''BeitForSemanticSegmentation''',
		    '''BeitModel''',
		    '''BeitPreTrainedModel''',
		]


try:
		if not is_flax_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase__  :Tuple             =							[
		    '''FlaxBeitForImageClassification''',
		    '''FlaxBeitForMaskedImageModeling''',
		    '''FlaxBeitModel''',
		    '''FlaxBeitPreTrainedModel''',
		]

if TYPE_CHECKING:
		from .configuration_beit import BEIT_PRETRAINED_CONFIG_ARCHIVE_MAP, BeitConfig, BeitOnnxConfig

		try:
				if not is_vision_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .feature_extraction_beit import BeitFeatureExtractor
				from .image_processing_beit import BeitImageProcessor

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_beit import (
				    BEIT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    BeitForImageClassification,
				    BeitForMaskedImageModeling,
				    BeitForSemanticSegmentation,
				    BeitModel,
				    BeitPreTrainedModel,
				)

		try:
				if not is_flax_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_flax_beit import (
				    FlaxBeitForImageClassification,
				    FlaxBeitForMaskedImageModeling,
				    FlaxBeitModel,
				    FlaxBeitPreTrainedModel,
				)


else:
		import sys

		lowerCAmelCase__  :Dict             =							_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)
