






'''simple docstring'''
a_											=			{}





def 			_a(	UpperCamelCase__					:    Optional[Any],						UpperCamelCase__					:    Optional[Any],						UpperCamelCase__					:    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
      SCREAMING_SNAKE_CASE__  :					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
      SCREAMING_SNAKE_CASE__  :					str						=_calculate(days - 1,						lowerCAmelCase_,						late + 1				)

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

      # 3) if we are on time, this resets the "late" counter and keeps the
      # absent counter
      SCREAMING_SNAKE_CASE__  :					List[str]						=_calculate(days - 1,						lowerCAmelCase_,						0				)

      SCREAMING_SNAKE_CASE__  :					List[str]						=state_late + state_absent + state_ontime

      SCREAMING_SNAKE_CASE__  :					Optional[Any]						=prizestrings
      return prizestrings





def 			_a(	UpperCamelCase__					:    List[Any] = 3_0				):




      '''simple docstring'''






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


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




'''simple docstring'''

import re

from filelock import FileLock


try:
							import nltk

							__lowerCAmelCase		     =  True
except (ImportError, ModuleNotFoundError):
							__lowerCAmelCase		     =  False

if NLTK_AVAILABLE:
							with FileLock('''.lock''') as lock:
														nltk.download('''punkt''', quiet=True)



def 	__lowerCamelCase	( lowerCAmelCase_    )     -> str:
		re.sub('<n>'		,     ''		,     lowerCAmelCase_    )  # remove pegasus newline char
		assert NLTK_AVAILABLE, "nltk must be installed to separate newlines between sentences. (pip install nltk)"
		return "\n".join(nltk.sent_tokenize(lowerCAmelCase_    )    )




