
from __future__ import annotations

from random import choice




def 							__SCREAMING_SNAKE_CASE   (		SCREAMING_SNAKE_CASE       :      Optional[Any]			)     ->						Optional[int]:
				return choice(_lowerCAmelCase			)




def 							__SCREAMING_SNAKE_CASE   (		SCREAMING_SNAKE_CASE       :      Dict    ,							SCREAMING_SNAKE_CASE       :      List[Any]			)     ->						int:
				__lowercase								=					random_pivot(_lowerCAmelCase			)

				# partition based on pivot
				# linear time
				__lowercase								=					[e for e in lst if e < pivot]
				__lowercase								=					[e for e in lst if e > pivot]

				# if we get lucky, pivot might be the element we want.
				# we can easily see this:
				# small (elements smaller than k)
				# + pivot (kth element)
				# + big (elements larger than k)
				if len(_lowerCAmelCase			) == k - 1:
								return pivot
				# pivot is in elements bigger than k
				elif len(_lowerCAmelCase			) < k - 1:
								return kth_number(_lowerCAmelCase    ,							k - len(_lowerCAmelCase			) - 1			)
				# pivot is in elements smaller than k
				else:
								return kth_number(_lowerCAmelCase    ,							_lowerCAmelCase			)


if __name__ == "__main__":
							import doctest

							doctest.testmod()










from __future__ import annotations

from math import ceil, floor, sqrt




def 	__UpperCamelCase	(  _lowerCAmelCase = 200_0000		)       ->  int:



    """simple docstring"""






    A :       list[int]          =   [0]
    A :       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
    A :       int          =   0
    # the area corresponding to the grid that gives the product closest to target
    A :       int          =   0
    # an estimate of b, using the quadratic formula
    A :       float
    # the largest integer less than b_estimate
    A :       int
    # the largest integer less than b_estimate
    A :       int
    # the triangle number corresponding to b_floor
    A :       int
    # the triangle number corresponding to b_ceil
    A :       int

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

        if abs(target - triangle_b_first_guess * triangle_a		) < abs(
            target - best_product		):
            A :       Optional[int]          =   triangle_b_first_guess * triangle_a
            A :       Optional[int]          =   idx_a * b_floor

        if abs(target - triangle_b_second_guess * triangle_a		) < abs(
            target - best_product		):
            A :       Tuple          =   triangle_b_second_guess * triangle_a
            A :       Tuple          =   idx_a * b_ceil

    return area


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


