





"""simple docstring"""




UpperCamelCase_									={}





def 	a_    (							_lowercase	,						_lowercase	,						_lowercase       ):

						# if we are absent twice, or late 3 consecutive days,
						# no further prize strings are possible
						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      : int         =   (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      : int         =   _calculate(days - 1	,						_lowercase	,						late + 1       )

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

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

						_UpperCamelCase      : Dict         =   state_late + state_absent + state_ontime

						_UpperCamelCase      : Optional[int]         =   prizestrings
						return prizestrings





def 	a_    (							_lowercase = 30       ):
						return _calculate(_lowercase	,						absent=0	,						late=0       )


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










"""simple docstring"""




import argparse

import torch

from transformers import MobileBertConfig, MobileBertForPreTraining, load_tf_weights_in_mobilebert
from transformers.utils import logging


logging.set_verbosity_info()





def 	a_    (							_lowercase	,						_lowercase	,						_lowercase       ):
						# Initialise PyTorch model
						_UpperCamelCase      : List[Any]         =   MobileBertConfig.from_json_file(_lowercase       )
						print(F"""Building PyTorch model from configuration: {config}"""       )
						_UpperCamelCase      : List[str]         =   MobileBertForPreTraining(_lowercase       )
						# Load weights from tf checkpoint
						_UpperCamelCase      : Union[str, Any]         =   load_tf_weights_in_mobilebert(_lowercase	,						_lowercase	,						_lowercase       )
						# Save pytorch-model
						print(F"""Save PyTorch model to {pytorch_dump_path}"""       )
						torch.save(model.state_dict()	,						_lowercase       )


if __name__ == "__main__":
						UpperCamelCase_									=argparse.ArgumentParser()
						# Required parameters
						parser.add_argument(
						    """--tf_checkpoint_path""", default=None, type=str, required=True, help="""Path to the TensorFlow checkpoint path."""
						)
						parser.add_argument(
						    """--mobilebert_config_file""",
						    default=None,
						    type=str,
						    required=True,
						    help=(
						        """The config json file corresponding to the pre-trained MobileBERT model. \n"""
						        """This specifies the model architecture."""
						    ),
						)
						parser.add_argument(
						    """--pytorch_dump_path""", default=None, type=str, required=True, help="""Path to the output PyTorch model."""
						)
						UpperCamelCase_									=parser.parse_args()
						convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.mobilebert_config_file, args.pytorch_dump_path)



