


from math import isclose, sqrt

def 						_UpperCAmelCase				(			SCREAMING_SNAKE_CASE__			:					Optional[Any]			,     SCREAMING_SNAKE_CASE__			:					Optional[Any]			,     SCREAMING_SNAKE_CASE__			:					Tuple				):
     __UpperCamelCase    							=point_y / 4 / point_x
     __UpperCamelCase    							=2 * normal_gradient / (1 + normal_gradient * normal_gradient)
     __UpperCamelCase    							=(1 - normal_gradient * normal_gradient) / (
         1 + normal_gradient * normal_gradient
     )
     __UpperCamelCase    							=(sa - ca * incoming_gradient) / (ca + sa * incoming_gradient)

     # to find the next point, solve the simultaeneous equations:
     # y^2 + 4x^2 = 100
     # y - b = m * (x - a)
     # ==> A x^2 + B x + C = 0
     __UpperCamelCase    							=outgoing_gradient**2 + 4
     __UpperCamelCase    							=2 * outgoing_gradient * (point_y - outgoing_gradient * point_x)
     __UpperCamelCase    							=(point_y - outgoing_gradient * point_x) ** 2 - 1_00

     __UpperCamelCase    							=(
         -linear_term - sqrt(linear_term**2 - 4 * quadratic_term * constant_term				)
     ) / (2 * quadratic_term)
     __UpperCamelCase    							=(
         -linear_term + sqrt(linear_term**2 - 4 * quadratic_term * constant_term				)
     ) / (2 * quadratic_term)

     # two solutions, one of which is our input point
     __UpperCamelCase    							=x_minus if isclose(__lowerCamelCase			,     __lowerCamelCase				) else x_plus
     __UpperCamelCase    							=point_y + outgoing_gradient * (next_x - point_x)

     return next_x, next_y, outgoing_gradient

def 						_UpperCAmelCase				(			SCREAMING_SNAKE_CASE__			:					int = 1.4			,     SCREAMING_SNAKE_CASE__			:					List[Any] = -9.6				):
     __UpperCamelCase    							=0
     __UpperCamelCase    							=first_x_coord
     __UpperCamelCase    							=first_y_coord
     __UpperCamelCase    							=(10.1 - point_y) / (0.0 - point_x)

     while not (-0.01 <= point_x <= 0.01 and point_y > 0):
          __UpperCamelCase    							=next_point(__lowerCamelCase			,     __lowerCamelCase			,     __lowerCamelCase				)
          num_reflections += 1

     return num_reflections


if __name__ == "__main__":
   print(f"""{solution() = }""")










"""simple docstring"""







def      __UpperCAmelCase      (    __lowerCamelCase = 50	)							->      int:
		lowercase__   :    int				=			[[0] * 3 for _ in range(length + 1	)]

		for row_length in range(length + 1	):
				for tile_length in range(2						,     5	):
						for tile_start in range(row_length - tile_length + 1	):
								different_colour_ways_number[row_length][tile_length - 2] += (
								    different_colour_ways_number[row_length - tile_start - tile_length][
								        tile_length - 2
								    ]
								    + 1
								)

		return sum(different_colour_ways_number[length]	)


if __name__ == "__main__":
							print(F'''{solution() = }''')
