#include <algorithm>
#include <vector>
class Subset {
void dfs(const vector<int> &A, int index, vector<int> &cur, vector<vector<int>> &res){
if (!cur.empty()) {
res.emplace_back(cur);
}
for(int i=index;i<A.size();++i){
cur.emplace_back(A[i]);
dfs(A, i+1, cur, res);
cur.pop_back();
}
}
public:
vector<vector<int> > getSubsets(vector<int> A, int n) {
// write code here
if(n==1) return vector<vector<int>>{A};
sort(A.rbegin(), A.rend());
int count =1;
vector<vector<int>> res;
vector<int> cur;
dfs(A, 0, cur, res);
sort(res.rbegin(), res.rend());
return res;
}
};