



def 						a__     (						_UpperCamelCase     :	list[int]							):
   if len(_UpperCamelCase							) > 1:
      __lowerCamelCase  							=      len(_UpperCamelCase							) // 2  # Finds the middle of the array
      __lowerCamelCase  							=      arr[
          :middle_length
      ]  # Creates an array of the elements in the first half.
      __lowerCamelCase  							=      arr[
          middle_length:
      ]  # Creates an array of the elements in the second half.
      __lowerCamelCase  							=      len(_UpperCamelCase							)
      __lowerCamelCase  							=      len(_UpperCamelCase							)
      merge(_UpperCamelCase							)  # Starts sorting the left.
      merge(_UpperCamelCase							)  # Starts sorting the right
      __lowerCamelCase  							=      0  # Left Counter
      __lowerCamelCase  							=      0  # Right Counter
      __lowerCamelCase  							=      0  # Position Counter
      while (
          left_index < left_size and right_index < right_size
      ):  # Runs until the lowers size of the left and right are sorted.
         if left_array[left_index] < right_array[right_index]:
            __lowerCamelCase  							=      left_array[left_index]
            left_index += 1
         else:
            __lowerCamelCase  							=      right_array[right_index]
            right_index += 1
         index += 1
      while (
          left_index < left_size
      ):  # Adds the left over elements in the left half of the array
         __lowerCamelCase  							=      left_array[left_index]
         left_index += 1
         index += 1
      while (
          right_index < right_size
      ):  # Adds the left over elements in the right half of the array
         __lowerCamelCase  							=      right_array[right_index]
         right_index += 1
         index += 1
   return arr


if __name__ == "__main__":
  import doctest

  doctest.testmod()











def 						a__     (						_UpperCamelCase     :	list	,_UpperCamelCase     :	list	,_UpperCamelCase     :	list	,_UpperCamelCase     :	int	,_UpperCamelCase     :	int							):
   if target == 0:
      answer.append(path.copy()							)
   else:
      for index in range(_UpperCamelCase	,len(_UpperCamelCase							)							):
         if target >= candidates[index]:
            path.append(candidates[index]							)
            backtrack(_UpperCamelCase	,_UpperCamelCase	,_UpperCamelCase	,target - candidates[index]	,_UpperCamelCase							)
            path.pop(len(_UpperCamelCase							) - 1							)





def 						a__     (						_UpperCamelCase     :	list	,_UpperCamelCase     :	int							):
   __lowerCamelCase  							=      []  # type: list[int]
   __lowerCamelCase  							=      []  # type: list[int]
   backtrack(_UpperCamelCase	,_UpperCamelCase	,_UpperCamelCase	,_UpperCamelCase	,0							)
   return answer





def 						a__     (						):
   print(combination_sum([-8, 2.3, 0]	,1							)							)


if __name__ == "__main__":
  import doctest

  doctest.testmod()
  main()






