



'''simple docstring'''





def 		__snake_case(							_lowerCAmelCase	,  _lowerCAmelCase						)						->					Any:
      return (pointa[0] - pointa[0]) ** 2 + (pointa[1] - pointa[1]) ** 2





def 		__snake_case(							_lowerCAmelCase	,  _lowerCAmelCase=0						)						->					int:
      return sorted(_lowerCAmelCase	,  key=lambda _lowerCAmelCase						: x[column]						)





def 		__snake_case(							_lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase=float("""inf"""						)						)						->					Optional[int]:

      for i in range(points_counts - 1						):
            for j in range(i + 1	,  _lowerCAmelCase						):
                  snake_case__    :       Dict       		= euclidean_distance_sqr(points[i]	,  points[j]						)
                  if current_dis < min_dis:
                        snake_case__    :       Optional[Any]       		= current_dis
      return min_dis





def 		__snake_case(							_lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase=float("""inf"""						)						)						->					List[Any]:

      for i in range(min(6	,  points_counts - 1						)	,  _lowerCAmelCase						):
            for j in range(max(0	,  i - 6						)	,  _lowerCAmelCase						):
                  snake_case__    :       Any       		= euclidean_distance_sqr(points[i]	,  points[j]						)
                  if current_dis < min_dis:
                        snake_case__    :       Optional[int]       		= current_dis
      return min_dis





def 		__snake_case(							_lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase						)						->					int:

      # base case
      if points_counts <= 3:
            return dis_between_closest_pair(_lowerCAmelCase	,  _lowerCAmelCase						)

      # recursion
      snake_case__    :       List[str]       		= points_counts // 2
      snake_case__    :       Any       		= closest_pair_of_points_sqr(
          _lowerCAmelCase	,  points_sorted_on_y[:mid]	,  _lowerCAmelCase						)
      snake_case__    :       str       		= closest_pair_of_points_sqr(
          _lowerCAmelCase	,  points_sorted_on_y[mid:]	,  points_counts - mid						)
      snake_case__    :       Optional[Any]       		= min(_lowerCAmelCase	,  _lowerCAmelCase						)
      snake_case__    :       List[str]       		= []
      for point in points_sorted_on_x:
            if abs(point[0] - points_sorted_on_x[mid][0]						) < closest_pair_dis:
                  cross_strip.append(_lowerCAmelCase						)

      snake_case__    :       List[Any]       		= dis_between_closest_in_strip(
          _lowerCAmelCase	,  len(_lowerCAmelCase						)	,  _lowerCAmelCase						)
      return min(_lowerCAmelCase	,  _lowerCAmelCase						)





def 		__snake_case(							_lowerCAmelCase	,  _lowerCAmelCase						)						->					Optional[int]:
      snake_case__    :       str       		= column_based_sort(_lowerCAmelCase	,  column=0						)
      snake_case__    :       Union[str, Any]       		= column_based_sort(_lowerCAmelCase	,  column=1						)
      return (
          closest_pair_of_points_sqr(
              _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase						)
      ) ** 0.5


if __name__ == "__main__":
       __a  			=						[(2, 3), (12, 30), (40, 50), (5, 1), (12, 10), (3, 4)]
       print("Distance:", closest_pair_of_points(points, len(points)))





'''simple docstring'''





import sys

__a  			=						(
    "73167176531330624919225119674426574742355349194934"
    "96983520312774506326239578318016984801869478851843"
    "85861560789112949495459501737958331952853208805511"
    "12540698747158523863050715693290963295227443043557"
    "66896648950445244523161731856403098711121722383113"
    "62229893423380308135336276614282806444486645238749"
    "30358907296290491560440772390713810515859307960866"
    "70172427121883998797908792274921901699720888093776"
    "65727333001053367881220235421809751254540594752243"
    "52584907711670556013604839586446706324415722155397"
    "53697817977846174064955149290862569321978468622482"
    "83972241375657056057490261407972968652414535100474"
    "82166370484403199890008895243450658541227588666881"
    "16427171479924442928230863465674813919123162824586"
    "17866458359124566529476545682848912883142607690042"
    "24219022671055626321111109370544217506941658960408"
    "07198403850962455444362981230987879927244284909188"
    "84580156166097919133875499200524063689912560717606"
    "05886116467109405077541002256983155200055935729725"
    "71636269561882670428252483600823257530420752963450"
)





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


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