



"""simple docstring"""






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


def      _lowercase							(    __snake_case   ,__snake_case   ,__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
			__lowerCAmelCase :    List[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
			__lowerCAmelCase :    Dict				=			_calculate(days - 1   ,__snake_case   ,late + 1      )

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

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

			__lowerCAmelCase :    List[Any]				=			state_late + state_absent + state_ontime

			__lowerCAmelCase :    Optional[Any]				=			prizestrings
			return prizestrings


def      _lowercase							(    __snake_case = 30      )		->  int:
			return _calculate(__snake_case   ,absent=0   ,late=0      )


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




"""simple docstring"""






def      _lowercase							(    __snake_case      )		->  float:
			return 10 - x * x


def      _lowercase							(    __snake_case   ,__snake_case      )		->  float:
			# Bolzano theory in order to find if there is a root between a and b
			if equation(__snake_case      ) * equation(__snake_case      ) >= 0:
						raise ValueError("Wrong space!"      )

			__lowerCAmelCase :    List[Any]				=			a
			while (b - a) >= 0.01:
						# Find middle point
						__lowerCAmelCase :    str				=			(a + b) / 2
						# Check if middle point is root
						if equation(__snake_case      ) == 0.0:
									break
						# Decide the side to repeat the steps
						if equation(__snake_case      ) * equation(__snake_case      ) < 0:
									__lowerCAmelCase :    List[Any]				=			c
						else:
									__lowerCAmelCase :    List[str]				=			c
			return c


if __name__ == "__main__":
	import doctest

	doctest.testmod()

	print(bisection(-2, 5))
	print(bisection(0, 6))