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 minimized. If the list cannot be divided into two equal parts due to an odd number of elements, the function should still try to minimize the difference.
  
  def divide_in_two_equal_parts(lst):
      if not lst:
          return [], []
      total_sum = sum(lst)
      half_sum = total_sum // 2
      dp = [False] * (half_sum + 1)
      dp[0] = True
      part1 = []
      part2 = []
      
      for num in lst:
          for i in range(half_sum, num - 1, -1):
              if dp[i - num]:
                  dp[i] = True
      
      for i in range(half_sum, -1, -1):
          if dp[i]:
              part1 = [num for num in lst if sum(part1) + num <= i]
              part2 = [num for num in lst if num not in part1]
              break
      
      return part1, part2
  
  assert divide_in_two_equal_parts([2, 3, 4, 5, 6, 7]) == ([3, 4, 5], [2, 6, 7])
  assert divide_in_two_equal_parts([2, 5, 3]) == ([3], [2, 5])
  assert divide_in_two_equal_parts([1, 2, 3, 4, 5]) == ([1, 4, 5], [2, 3])
  assert divide_in_two_equal_parts([]) == ([], [])
output: def divide_in_two_equal_parts(lst):
      if not lst:
          return [], []
      total_sum = sum(lst)
      half_sum = total_sum // 2
      dp = [False] * (half_sum + 1)
      dp[0] = True
      part1 = []
      part2 = []
      
      for num in lst:
          for i in range(half_sum, num - 1, -1):
              if dp[i - num]:
                  dp[i] = True
      
      for i in range(half_sum, -1, -1):
          if dp[i]:
              part1 = [num for num in lst if sum(part1) + num <= i]
              part2 = [num for num in lst if num not in part1]
              break
      
      return part1, part2