class Solution 
{
public:
    vector<vector<int> > subsets(vector<int> &nums) 
    {
        size=nums.size();
        sort(nums.begin(),nums.end());
        subsets(nums,0);
    	return result;
    }
    void subsets(vector<int> &nums,int pos)
    {
        result.push_back(base);
        for(int i=pos;i<size;++i)
        {
            base.push_back(nums[i]);
            subsets(nums,i+1);
            base.pop_back();
        }
    }
private:
    vector<vector<int> > result;
    vector<int> base;
    int size;
};