#include <iostream>
#include <vector>
using namespace std;
void generateSubsets(int n, vector<int>& currentSubset, int currentNumber) {
if (currentNumber > n) {
cout << "{";
for (int i = 0; i < currentSubset.size(); i++) {
cout << currentSubset[i];
if (i != currentSubset.size() - 1) {
cout << ", ";
}
}
cout << "}" << endl;
return;
}
generateSubsets(n, currentSubset, currentNumber + 1);
currentSubset.push_back(currentNumber);
generateSubsets(n, currentSubset, currentNumber + 1);
currentSubset.pop_back();
}
int main() {
vector<int> currentSubset;
generateSubsets(3, currentSubset, 1);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgZ2VuZXJhdGVTdWJzZXRzKGludCBuLCB2ZWN0b3I8aW50PiYgY3VycmVudFN1YnNldCwgaW50IGN1cnJlbnROdW1iZXIpIHsKICAgIGlmIChjdXJyZW50TnVtYmVyID4gbikgewogICAgICAgIGNvdXQgPDwgInsiOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3VycmVudFN1YnNldC5zaXplKCk7IGkrKykgewogICAgICAgICAgICBjb3V0IDw8IGN1cnJlbnRTdWJzZXRbaV07CiAgICAgICAgICAgIGlmIChpICE9IGN1cnJlbnRTdWJzZXQuc2l6ZSgpIC0gMSkgewogICAgICAgICAgICAgICAgY291dCA8PCAiLCAiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgIn0iIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICBnZW5lcmF0ZVN1YnNldHMobiwgY3VycmVudFN1YnNldCwgY3VycmVudE51bWJlciArIDEpOwogICAgCiAgICBjdXJyZW50U3Vic2V0LnB1c2hfYmFjayhjdXJyZW50TnVtYmVyKTsKICAgIGdlbmVyYXRlU3Vic2V0cyhuLCBjdXJyZW50U3Vic2V0LCBjdXJyZW50TnVtYmVyICsgMSk7CiAgICAKICAgIGN1cnJlbnRTdWJzZXQucG9wX2JhY2soKTsKfQppbnQgbWFpbigpIHsKICAKICAgIHZlY3RvcjxpbnQ+IGN1cnJlbnRTdWJzZXQ7CiAgICBnZW5lcmF0ZVN1YnNldHMoMywgY3VycmVudFN1YnNldCwgMSk7Cn0=