





'''simple docstring'''

from __future__ import annotations

from math import ceil, floor, sqrt




def    _a    (							lowerCAmelCase_ = 2_000_000	):





      """simple docstring"""



      _snake_case		:	list[int]					     =     [0]
      _snake_case		:	int

      for idx in range(1			,      ceil(sqrt(target * 2	) * 1.1	)	):
            triangle_numbers.append(triangle_numbers[-1] + idx	)

      # we want this to be as close as possible to target
      _snake_case		:	int					     =     0
      # the area corresponding to the grid that gives the product closest to target
      _snake_case		:	int					     =     0
      # an estimate of b, using the quadratic formula
      _snake_case		:	float
      # the largest integer less than b_estimate
      _snake_case		:	int
      # the largest integer less than b_estimate
      _snake_case		:	int
      # the triangle number corresponding to b_floor
      _snake_case		:	int
      # the triangle number corresponding to b_ceil
      _snake_case		:	int

      for idx_a, triangle_a in enumerate(triangle_numbers[1:]			,      1	):
            _snake_case		:	List[Any]					     =     (-1 + sqrt(1 + 8 * target / triangle_a	)) / 2
            _snake_case		:	Any					     =     floor(_lowercase	)
            _snake_case		:	Optional[Any]					     =     ceil(_lowercase	)
            _snake_case		:	Union[str, Any]					     =     triangle_numbers[b_floor]
            _snake_case		:	Optional[int]					     =     triangle_numbers[b_ceil]

            if abs(target - triangle_b_first_guess * triangle_a	) < abs(
                target - best_product	):
                  _snake_case		:	List[str]					     =     triangle_b_first_guess * triangle_a
                  _snake_case		:	Any					     =     idx_a * b_floor

            if abs(target - triangle_b_second_guess * triangle_a	) < abs(
                target - best_product	):
                  _snake_case		:	Any					     =     triangle_b_second_guess * triangle_a
                  _snake_case		:	int					     =     idx_a * b_ceil

      return area


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









'''simple docstring'''

UpperCAmelCase					:		Union[str, Any]		=							tuple[float, float, float]
UpperCAmelCase					:		int		=							tuple[float, float, float]




def    _a    (							lowerCAmelCase_			,      lowerCAmelCase_	):





      """simple docstring"""



      _snake_case		:	str					     =     end_pointa[0] - end_pointa[0]
      _snake_case		:	Tuple					     =     end_pointa[1] - end_pointa[1]
      _snake_case		:	Any					     =     end_pointa[2] - end_pointa[2]
      return (x, y, z)




def    _a    (							lowerCAmelCase_			,      lowerCAmelCase_	):





      """simple docstring"""



      _snake_case		:	Dict					     =     ab[1] * ac[2] - ab[2] * ac[1]  # *i
      _snake_case		:	List[str]					     =     (ab[0] * ac[2] - ab[2] * ac[0]) * -1  # *j
      _snake_case		:	Optional[int]					     =     ab[0] * ac[1] - ab[1] * ac[0]  # *k
      return (x, y, z)




def    _a    (							lowerCAmelCase_			,      lowerCAmelCase_	):





      """simple docstring"""



      return tuple(round(lowerCAmelCase_			,      lowerCAmelCase_	) for x in vector	) == (0, 0, 0)




def    _a    (							lowerCAmelCase_			,      lowerCAmelCase_			,      lowerCAmelCase_			,      lowerCAmelCase_ = 10	):





      """simple docstring"""



      _snake_case		:	str					     =     create_vector(lowerCAmelCase_			,      lowerCAmelCase_	)
      _snake_case		:	Tuple					     =     create_vector(lowerCAmelCase_			,      lowerCAmelCase_	)
      return is_zero_vector(get_ad_vectors_cross(lowerCAmelCase_			,      lowerCAmelCase_	)			,      lowerCAmelCase_	)


