#include <iostream>
#include <algorithm>
#include <cmath>
#include <set>
#include <vector>
using namespace std;
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
set<vector<int>> res;
if (nums.size() < 4){
return vector<vector<int>>(res.begin(),res.end());
}
int l, r, sum;
sort(nums.begin(), nums.end());
for (int i = 0; i < nums.size()-3; i++){
for (int j = i + 1; j < nums.size() - 2; j++){
l = j + 1;
r = nums.size() - 1;
sum = target - nums[i] - nums[j];
while (l < r){
if (nums[l] + nums[r] == sum){
vector<int> scheme = { nums[i], nums[j], nums[l], nums[r] };
res.insert(scheme);
while (l < r&&nums[l + 1] == nums[l]) ++l;
while (l < r&&nums[r - 1] == nums[r]) --r;
++l;
--r;
}
else if (nums[l] + nums[r] < sum) ++l;
else --r;
}
}
}
return vector<vector<int>>(res.begin(), res.end());
}
};
int main(){
Solution s;
vector<int> b = {1,0,-1,-2,0,2};
int c = 1;
vector<vector<int>> a;
a = s.fourSum(b, 0);
for (int i = 0; i < a.size(); i++){
for (int j = 0; j < a[i].size(); j++){
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}