That is, all components of A are also components of B. A and B may be equal; if they are unequal, then A is a proper subset of B. The relationship of one set being a subset of another is named inclusion or sometimes containment. In fact, the subsets of a given set form a Boolean algebra under the subset relation, in which the join and meet are given by intersection and union, and the subset relation itself is the Boolean inclusion relation.

COMING SOON!

```
class Solution {
public:
vector<vector<int> > subsets(vector<int>& S) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int>> result;
vector<int> subset;
sort(S.begin(), S.end());
DFS(subset, 0, S, result);
return move(result);
}
void DFS(vector<int>& subset, int step, vector<int>& S, vector<vector<int>>& result) {
if (step == S.size()) {
result.push_back(subset);
return;
}
subset.push_back(S[step]);
DFS(subset, step + 1, S, result);
subset.pop_back();
DFS(subset, step + 1, S, result);
}
};
```