




'''simple docstring'''





from math import isclose, sqrt




def 							_UpperCAmelCase  (UpperCamelCase_ : Optional[Any]      ,    UpperCamelCase_ : List[Any]      ,    UpperCamelCase_ : Any       ):
				'''simple docstring'''
				_lowerCAmelCase    :    str										=      point_y / 4 / point_x
				_lowerCAmelCase    :    List[Any]										=      2 * normal_gradient / (1 + normal_gradient * normal_gradient)
				_lowerCAmelCase    :    Dict										=      (1 - normal_gradient * normal_gradient) / (
				    1 + normal_gradient * normal_gradient
				)
				_lowerCAmelCase    :    List[Any]										=      (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
				_lowerCAmelCase    :    int										=      outgoing_gradient**2 + 4
				_lowerCAmelCase    :    Optional[Any]										=      2 * outgoing_gradient * (point_y - outgoing_gradient * point_x)
				_lowerCAmelCase    :    List[Any]										=      (point_y - outgoing_gradient * point_x) ** 2 - 100

				_lowerCAmelCase    :    List[Any]										=      (
				    -linear_term - sqrt(linear_term**2 - 4 * quadratic_term * constant_term       )
				) / (2 * quadratic_term)
				_lowerCAmelCase    :    str										=      (
				    -linear_term + sqrt(linear_term**2 - 4 * quadratic_term * constant_term       )
				) / (2 * quadratic_term)

				# two solutions, one of which is our input point
				_lowerCAmelCase    :    Optional[int]										=      x_minus if isclose(UpperCamelCase_      ,    UpperCamelCase_       ) else x_plus
				_lowerCAmelCase    :    Optional[int]										=      point_y + outgoing_gradient * (next_x - point_x)

				return next_x, next_y, outgoing_gradient




def 							_UpperCAmelCase  (UpperCamelCase_ : Tuple = 1.4      ,    UpperCamelCase_ : Optional[Any] = -9.6       ):
				'''simple docstring'''
				_lowerCAmelCase    :    str										=      0
				_lowerCAmelCase    :    Union[str, Any]										=      first_x_coord
				_lowerCAmelCase    :    Union[str, Any]										=      first_y_coord
				_lowerCAmelCase    :    Any										=      (10.1 - point_y) / (0.0 - point_x)

				while not (-0.01 <= point_x <= 0.01 and point_y > 0):
								_lowerCAmelCase					,    _lowerCAmelCase					,    _lowerCAmelCase    :    Union[str, Any]										=      next_point(UpperCamelCase_      ,    UpperCamelCase_      ,    UpperCamelCase_       )
								num_reflections += 1

				return num_reflections


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







import sys

_lowerCamelCase      :  Optional[Any]      						=						(
    "73167176531330624919225119674426574742355349194934"
    "96983520312774506326239578318016984801869478851843"
    "85861560789112949495459501737958331952853208805511"
    "12540698747158523863050715693290963295227443043557"
    "66896648950445244523161731856403098711121722383113"
    "62229893423380308135336276614282806444486645238749"
    "30358907296290491560440772390713810515859307960866"
    "70172427121883998797908792274921901699720888093776"
    "65727333001053367881220235421809751254540594752243"
    "52584907711670556013604839586446706324415722155397"
    "53697817977846174064955149290862569321978468622482"
    "83972241375657056057490261407972968652414535100474"
    "82166370484403199890008895243450658541227588666881"
    "16427171479924442928230863465674813919123162824586"
    "17866458359124566529476545682848912883142607690042"
    "24219022671055626321111109370544217506941658960408"
    "07198403850962455444362981230987879927244284909188"
    "84580156166097919133875499200524063689912560717606"
    "05886116467109405077541002256983155200055935729725"
    "71636269561882670428252483600823257530420752963450"
)




def 							_UpperCAmelCase  (UpperCamelCase_ : str = N       ):
				'''simple docstring'''
				_lowerCAmelCase    :    List[str]										=      -sys.maxsize - 1
				for i in range(len(UpperCamelCase_       ) - 12       ):
								_lowerCAmelCase    :    List[str]										=      1
								for j in range(13       ):
												product *= int(n[i + j]       )
								if product > largest_product:
												_lowerCAmelCase    :    Any										=      product
				return largest_product


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

