input: Write a function to divide a given list of numbers into two parts such that the difference between the sum of the two parts is minimum. Return the two parts as a tuple. If the given list is empty, return an empty tuple.
  
  def divide_in_two_equal_parts(lst):
      if not lst:
          return ()
      
      target = sum(lst) // 2
      dp = [False] * (target + 1)
      dp[0] = True
      
      for num in lst:
          for i in range(target, num - 1, -1):
              if dp[i - num]:
                  dp[i] = True
      
      for i in range(target, -1, -1):
          if dp[i]:
              part1_sum = i
              break
      
      part1 = []
      part2 = []
      remaining_sum = sum(lst) - part1_sum
      
      for num in lst:
          if part1_sum >= num and part1_sum - num >= 0:
              part1.append(num)
              part1_sum -= num
          else:
              part2.append(num)
      
      return (part1, part2)
  
  assert divide_in_two_equal_parts([2, 3, 4, 5, 6, 7]) == ([2, 3, 4], [5, 6, 7])
  assert divide_in_two_equal_parts([1, 2, 3, 4, 5]) == ([1, 2, 3], [4, 5])
  assert divide_in_two_equal_parts([10, 20, 15, 5, 25]) == ([10, 25], [20, 15, 5])
  assert divide_in_two_equal_parts([]) == ()
  assert divide_in_two_equal_parts([1]) == ([1], [])
output: def divide_in_two_equal_parts(lst):
      if not lst:
          return ()
      
      target = sum(lst) // 2
      dp = [False] * (target + 1)
      dp[0] = True
      
      for num in lst:
          for i in range(target, num - 1, -1):
              if dp[i - num]:
                  dp[i] = True
      
      for i in range(target, -1, -1):
          if dp[i]:
              part1_sum = i
              break
      
      part1 = []
      part2 = []
      remaining_sum = sum(lst) - part1_sum
      
      for num in lst:
          if part1_sum >= num and part1_sum - num >= 0:
              part1.append(num)
              part1_sum -= num
          else:
              part2.append(num)
      
      return (part1, part2)