#include <iostream>
#include <vector>
using namespace std;
//This generates all nCr sequences
void display(const std::vector<int> & v,
std::vector<int>& comb,
int offset, int k) {
if (k == 0) {
std::cout<<"{";
for(auto &x:comb)
std::cout<<x<<" ";
std::cout<<"\b}"<<std::endl;
return;
}
for (int i = offset; i <= v.size() - k; ++i) {
comb.push_back(v[i]);
display(v,comb,i+1, k-1);
comb.pop_back();
}
}
int main() {
int n = 4;
std::vector<int> v,comb;
for (int i = 0; i < n; ++i)
v.push_back(i+1);
for (int i = 1; i <= n; ++i)
display(v,comb,0, i);
return 0;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiAvL1RoaXMgZ2VuZXJhdGVzIGFsbCBuQ3Igc2VxdWVuY2VzCnZvaWQgZGlzcGxheShjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+ICYgdiwgCiAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+JiBjb21iLCAKICAgICAgICAgICAgIGludCBvZmZzZXQsIGludCBrKSB7CiAgICBpZiAoayA9PSAwKSB7CiAgICAgICAgc3RkOjpjb3V0PDwieyI7CiAgICAgICAgZm9yKGF1dG8gJng6Y29tYikKICAgICAgICAgICAgc3RkOjpjb3V0PDx4PDwiICI7CiAgICAgICAgIHN0ZDo6Y291dDw8IlxifSI8PHN0ZDo6ZW5kbDsKICAgIHJldHVybjsKICAgIH0KICAgIGZvciAoaW50IGkgPSBvZmZzZXQ7IGkgPD0gdi5zaXplKCkgLSBrOyArK2kpIHsKICAgICAgICBjb21iLnB1c2hfYmFjayh2W2ldKTsKICAgICAgICBkaXNwbGF5KHYsY29tYixpKzEsIGstMSk7CiAgICAgICAgY29tYi5wb3BfYmFjaygpOwogICAgfQp9CiAgICAgCmludCBtYWluKCkgewogICAgaW50IG4gPSA0OwogICAgCiAgICAgc3RkOjp2ZWN0b3I8aW50PiB2LGNvbWI7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgCiAgICAgdi5wdXNoX2JhY2soaSsxKTsgCgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSAKICAgICAgICBkaXNwbGF5KHYsY29tYiwwLCBpKTsKIApyZXR1cm4gMDsKfQoKCgo=