input: Write a function to divide a given list of numbers into two equal parts such that the difference between the sum of the two parts is minimum. If the list cannot be divided equally, the function should still try to minimize the difference.
  
  def divide_in_two_equal_parts(lst):
      if not lst:
          return [], []
  
      total_sum = sum(lst)
      target = total_sum // 2
      part1 = []
      part2 = []
      
      dp = [False] * (target + 1)
      dp[0] = True
  
      for num in lst:
          for j in range(target, num - 1, -1):
              if dp[j - num]:
                  dp[j] = True
      
      for i in range(target, -1, -1):
          if dp[i]:
              part1_sum = i
              break
      
      for num in lst:
          if part1_sum >= num and dp[part1_sum - num]:
              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]) == ([6, 5, 2], [3, 4, 7])
  assert divide_in_two_equal_parts([1, 2, 3, 4, 5]) == ([5, 2], [4, 3, 1])
  assert divide_in_two_equal_parts([]) == ([], [])
  assert divide_in_two_equal_parts([10, 10]) == ([10], [10])
output: def divide_in_two_equal_parts(lst):
      if not lst:
          return [], []
  
      total_sum = sum(lst)
      target = total_sum // 2
      part1 = []
      part2 = []
      
      dp = [False] * (target + 1)
      dp[0] = True
  
      for num in lst:
          for j in range(target, num - 1, -1):
              if dp[j - num]:
                  dp[j] = True
      
      for i in range(target, -1, -1):
          if dp[i]:
              part1_sum = i
              break
      
      for num in lst:
          if part1_sum >= num and dp[part1_sum - num]:
              part1.append(num)
              part1_sum -= num
          else:
              part2.append(num)
      
      return part1, part2