



from graphs.minimum_spanning_tree_kruskal import kruskal





def 		a__      (		):
   __lowerCamelCase    				=     9
   __lowerCamelCase    				=     [
       [0, 1, 4],
       [0, 7, 8],
       [1, 2, 8],
       [7, 8, 7],
       [7, 6, 1],
       [2, 8, 2],
       [8, 6, 6],
       [2, 3, 7],
       [2, 5, 4],
       [6, 5, 2],
       [3, 5, 14],
       [3, 4, 9],
       [5, 4, 10],
       [1, 7, 11],
   ]

   __lowerCamelCase    				=     kruskal(_UpperCamelCase			,_UpperCamelCase				)

   __lowerCamelCase    				=     [
       [7, 6, 1],
       [2, 8, 2],
       [6, 5, 2],
       [0, 1, 4],
       [2, 5, 4],
       [2, 3, 7],
       [0, 7, 8],
       [3, 4, 9],
   ]

   assert sorted(_UpperCamelCase				) == sorted(_UpperCamelCase				)











def 		a__      (		_UpperCamelCase      :			list[int]				):
   if not numbers:
      return 0

   if not isinstance(_UpperCamelCase			,(list, tuple)				) or not all(
       isinstance(_UpperCamelCase			,_UpperCamelCase				) for number in numbers				):
      raise ValueError('''numbers must be an iterable of integers'''				)

   __lowerCamelCase    				=     __lowerCamelCase    				=     __lowerCamelCase    				=     numbers[0]

   for i in range(1			,len(_UpperCamelCase				)				):
      # update the maximum and minimum subarray products
      __lowerCamelCase    				=     numbers[i]
      if number < 0:
         __lowerCamelCase				,__lowerCamelCase    				=     min_till_now, max_till_now
      __lowerCamelCase    				=     max(_UpperCamelCase			,max_till_now * number				)
      __lowerCamelCase    				=     min(_UpperCamelCase			,min_till_now * number				)

      # update the maximum product found till now
      __lowerCamelCase    				=     max(_UpperCamelCase			,_UpperCamelCase				)

   return max_prod






