var threeSum = function(nums) {
const res = [], len = nums.length
nums.sort((a,b) => a - b)
for(let i = 0; i < len; ++i){
let l = i + 1, r = len - 1, iNum = nums[i]
if(iNum > 0) return res
if(iNum === nums[i-1]) continue
while(l < r){
let a = nums[l], b = nums[r], threeSum = a + b + iNum
if(threeSum > 0) r--
else if(threeSum < 0) l++
else{
res.push([iNum, a, b])
while(l < r && nums[l + 1] == nums[l]){
l++
}
while(l < r && nums[r-1] == nums[r]){
r--
}
l++
r--
}
}
}
return res
};