class Solution {
public:
    vector<vector<int> > threeSum(vector<int> &num) {
        sort(num.begin(),num.end());
        set<vector<int>>ans;
        vector<vector<int>>res;
        if(num.size()<3)return res;
        for(int i=1;i<=num.size()-2;i++)
        {
            int l=0,r=num.size()-1;
            while(l<i&&r>i)
            {
                int k=num[l]+num[r];
                if(k+num[i]==0)
                {
                    ans.insert({num[l],num[i],num[r]});
                    l++;
                }
                else if(k+num[i]>0)r--;
                else l++;
            }
        }
        for(auto x:ans)res.push_back(x);
        return res;
    }
};