


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






def 							__lowercase   ( __lowerCAmelCase							:				int					,    __lowerCAmelCase							:				int					,    __lowerCAmelCase							:				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
							a__             =     (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
							a__             =     _calculate(days - 1					,    __lowerCAmelCase					,    late + 1   )

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

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

							a__             =     state_late + state_absent + state_ontime

							a__             =     prizestrings
							return prizestrings






def 							__lowercase   ( __lowerCAmelCase							:				int = 3_0   ):
							return _calculate(__lowerCAmelCase					,    absent=0					,    late=0   )


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








def 							__lowercase   ( __lowerCAmelCase							:				int					,    __lowerCAmelCase							:				float					,    __lowerCAmelCase							:				float   ):
							return round(float(moles / volume   ) * nfactor   )






def 							__lowercase   ( __lowerCAmelCase							:				float					,    __lowerCAmelCase							:				float					,    __lowerCAmelCase							:				float   ):
							return round(float((moles * 0.0_821 * temperature) / (volume)   )   )






def 							__lowercase   ( __lowerCAmelCase							:				float					,    __lowerCAmelCase							:				float					,    __lowerCAmelCase							:				float   ):
							return round(float((moles * 0.0_821 * temperature) / (pressure)   )   )






def 							__lowercase   ( __lowerCAmelCase							:				float					,    __lowerCAmelCase							:				float					,    __lowerCAmelCase							:				float   ):
							return round(float((pressure * volume) / (0.0_821 * moles)   )   )


if __name__ == "__main__":
						import doctest

						doctest.testmod()




