':type nums: List[int]
:type target: int
:rtype: List[List[int]]'

def fourSum(self, nums, target):

    nums.sort()
    res = []
    for i in xrange((len(nums) - 3)):
        if (i and (nums[i] == nums[(i - 1)])):
            continue
        for j in xrange((i + 1), (len(nums) - 2)):
            if ((j != (i + 1)) and (nums[j] == nums[(j - 1)])):
                continue
            sum = ((target - nums[i]) - nums[j])
            (left, right) = ((j + 1), (len(nums) - 1))
            while (left < right):
                if ((nums[left] + nums[right]) == sum):
                    res.append([nums[i], nums[j], nums[left], nums[right]])
                    right -= 1
                    left += 1
                    while ((left < right) and (nums[left] == nums[(left - 1)])):
                        left += 1
                    while ((left < right) and (nums[right] == nums[(right + 1)])):
                        right -= 1
                elif ((nums[left] + nums[right]) > sum):
                    right -= 1
                else:
                    left += 1
    return res
