C++ simple solution using merge algorithm
\nclass Solution {\nprivate:\n    vector<int> doIntersection(vector<int> &first, vector<int> &second){\n        vector<int> ans;\n        int i = 0, j = 0;\n   
```\nclass Solution {\nprivate:\n    vector<int> doIntersection(vector<int> &first, vector<int> &second){\n        vector<int> ans;\n        int i = 0, j = 0;\n        sort(first.begin(), first.end());\n        sort(second.begin(), second.end());\n        while(i < first.size() && j < second.size()){\n            if(first[i] < second[j]){\n                i++;\n            }\n            else if(first[i] > second[j]){\n                j++;\n            }else{\n                ans.push_back(first[i]);\n                i++;\n                j++;\n            }\n        }\n        return ans;\n    }\npublic:\n    vector<int> intersection(vector<vector<int>>& nums) {\n        if(nums.size() == 1){\n            sort(nums[0].begin(), nums[0].end());\n            return nums[0];\n        }\n        vector<int> ans = doIntersection(nums[0], nums[1]);\n        for(int j = 2 ; j < nums.size() ; j++){\n            ans = doIntersection(ans, nums[2]);\n        }\n        return ans;\n\n    }\n};\n```
['C']