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. The function should return the two parts as separate lists.
  assert divide_in_two_equal_parts([2, 3, 4, 5, 6, 7]) == ([2, 3, 7], [4, 5, 6])
  assert divide_in_two_equal_parts([1, 2, 3, 4, 5, 6, 7, 8]) == ([1, 2, 7, 8], [3, 4, 5, 6])
  assert divide_in_two_equal_parts([10, 20, 30, 40, 50]) == ([10, 20, 30], [40, 50])
  assert divide_in_two_equal_parts([1, 1, 1, 1, 1]) == ([1, 1, 1], [1, 1])
  assert divide_in_two_equal_parts([]) == ([], [])
output: def divide_in_two_equal_parts(nums):
      total_sum = sum(nums)
      half_sum = total_sum // 2
      n = len(nums)
      
      dp = [[False] * (half_sum + 1) for _ in range(n + 1)]
      dp[0][0] = True
      
      for i in range(1, n + 1):
          for j in range(half_sum + 1):
              if j >= nums[i - 1]:
                  dp[i][j] = dp[i - 1][j] or dp[i - 1][j - nums[i - 1]]
              else:
                  dp[i][j] = dp[i - 1][j]
      
      for j in range(half_sum, -1, -1):
          if dp[n][j]:
              part1_sum = j
              break
      
      part1 = []
      part2 = []
      current_sum = part1_sum
      
      for i in range(n, 0, -1):
          if current_sum >= nums[i - 1] and dp[i - 1][current_sum - nums[i - 1]]:
              part1.append(nums[i - 1])
              current_sum -= nums[i - 1]
          else:
              part2.append(nums[i - 1])
      
      return part1[::-1], part2[::-1]