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 it is not possible to divide the list into two equal parts, the function should return None.
  assert divide_in_two_equal_parts([2, 3, 4, 5, 6, 7]) == ([2, 3, 7], [4, 5, 6])
  assert divide_in_two_equal_parts([10, 20, 30, 40, 50]) == ([10, 50], [20, 30, 40])
  assert divide_in_two_equal_parts([1, 2, 3]) == ([1, 3], [2])
  assert divide_in_two_equal_parts([]) == []
  assert divide_in_two_equal_parts([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22]) == ([2, 3, 4, 5, 8, 9, 10], [1, 6, 7, 22])
output: def divide_in_two_equal_parts(nums):
      total_sum = sum(nums)
      if total_sum % 2 != 0:
          return None
      target = total_sum // 2
      n = len(nums)
      dp = [[False] * (target + 1) for _ in range(n + 1)]
      dp[0][0] = True
      
      for i in range(1, n + 1):
          for j in range(target + 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]
      
      if not dp[n][target]:
          return None
      
      part1, part2 = [], []
      j = target
      for i in range(n, 0, -1):
          if dp[i - 1][j]:
              part2.append(nums[i - 1])
          else:
              part1.append(nums[i - 1])
              j -= nums[i - 1]
      
      return (part1, part2)