





'''simple docstring'''




from ..utils import DummyObject, requires_backends







class   A_	(  metaclass=lowercase_			):
 _lowerCamelCase  : Any           =							["""transformers""", """torch""", """note_seq"""]




 def __init__(					self       :    Union[str, Any]	,			*snake_case_       :    Optional[Any]	,			**snake_case_       :    Union[str, Any]    ):
      requires_backends(self	,			["transformers", "torch", "note_seq"]    )




 @classmethod
 def      lowercase	(					cls       :    List[Any]	,			*snake_case_       :    int	,			**snake_case_       :    str    ):
      requires_backends(cls	,			["transformers", "torch", "note_seq"]    )




 @classmethod
 def      lowercase	(					cls       :    Optional[int]	,			*snake_case_       :    Optional[int]	,			**snake_case_       :    Tuple    ):
      requires_backends(cls	,			["transformers", "torch", "note_seq"]    )





"""simple docstring"""







__SCREAMING_SNAKE_CASE    	={}



def 			lowercase__(       __SCREAMING_SNAKE_CASE							:     int     ,			__SCREAMING_SNAKE_CASE							:     int     ,			__SCREAMING_SNAKE_CASE							:     int      ):

     # 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
     lowercase_	:				Any													=	(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
     lowercase_	:				Optional[int]													=	_calculate(days - 1     ,			__SCREAMING_SNAKE_CASE     ,			late + 1      )

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

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

     lowercase_	:				str													=	state_late + state_absent + state_ontime

     lowercase_	:				Tuple													=	prizestrings
     return prizestrings



def 			lowercase__(       __SCREAMING_SNAKE_CASE							:     int = 30      ):
     return _calculate(__SCREAMING_SNAKE_CASE     ,			absent=0     ,			late=0      )


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

