class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>>v;
vector<int>v2;
sort(nums.begin(),nums.end());
int n = nums.size(),left,right;
for(int i=0;i<n-2;i++){
int t = nums[i];
if(t>0)return v;
if(i>0&&nums[i]==nums[i-1])
continue;
left = i+1;
right = n-1;
while(right>left){
if(right>left&&nums[left]+nums[right]+t>0){
right--;
}
else if(left<right&&nums[left]+nums[right]+t<0){
left++;
}
else if(nums[left]+nums[right]+t==0){
v.push_back(vector<int>{t,nums[left],nums[right]});
while(left<right&&nums[left]==nums[left+1])left++;
while(right>left&&nums[right]==nums[right-1])right--;
left++;
right--;
}
}
}
return v;
}
};