





UpperCamelCase__											= {}





def     _UpperCamelCase     (a__   :Dict   ,			a__   :Union[str, Any]   ,			a__   :Tuple       ):






							"""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     _UpperCamelCase     (a__   :Union[str, Any] = 30       ):






							"""simple docstring"""





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


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











from ...configuration_utils import PretrainedConfig
from ...utils import logging


UpperCamelCase__											= logging.get_logger(__name__)

UpperCamelCase__											= {
    "studio-ousia/luke-base": "https://huggingface.co/studio-ousia/luke-base/resolve/main/config.json",
    "studio-ousia/luke-large": "https://huggingface.co/studio-ousia/luke-large/resolve/main/config.json",
}

class        __SCREAMING_SNAKE_CASE					(     _a       ):
							snake_case     :      Optional[int]						     =       """luke"""






							def __init__(						self  , __lowerCAmelCase=50267  , __lowerCAmelCase=500000  , __lowerCAmelCase=768  , __lowerCAmelCase=256  , __lowerCAmelCase=12  , __lowerCAmelCase=12  , __lowerCAmelCase=3072  , __lowerCAmelCase="gelu"  , __lowerCAmelCase=0.1  , __lowerCAmelCase=0.1  , __lowerCAmelCase=512  , __lowerCAmelCase=2  , __lowerCAmelCase=0.02  , __lowerCAmelCase=1E-12  , __lowerCAmelCase=True  , __lowerCAmelCase=None  , __lowerCAmelCase=1  , __lowerCAmelCase=0  , __lowerCAmelCase=2  , **__lowerCAmelCase  , ):
														super().__init__(pad_token_id=__lowerCAmelCase  , bos_token_id=__lowerCAmelCase  , eos_token_id=__lowerCAmelCase  , **__lowerCAmelCase  )

														UpperCamelCase__				     =			vocab_size
														UpperCamelCase__				     =			entity_vocab_size
														UpperCamelCase__				     =			hidden_size
														UpperCamelCase__				     =			entity_emb_size
														UpperCamelCase__				     =			num_hidden_layers
														UpperCamelCase__				     =			num_attention_heads
														UpperCamelCase__				     =			hidden_act
														UpperCamelCase__				     =			intermediate_size
														UpperCamelCase__				     =			hidden_dropout_prob
														UpperCamelCase__				     =			attention_probs_dropout_prob
														UpperCamelCase__				     =			max_position_embeddings
														UpperCamelCase__				     =			type_vocab_size
														UpperCamelCase__				     =			initializer_range
														UpperCamelCase__				     =			layer_norm_eps
														UpperCamelCase__				     =			use_entity_aware_attention
														UpperCamelCase__				     =			classifier_dropout




