#include <iostream>
#include <vector>
#include <algorithm>
#include <list>
#include <set>
#include <iterator>
using namespace std;
int main() {
list<set<int>> lsi {{1, 2}, {3}, {4, 5}};
vector<list<set<int>>> answer;
for (auto it_lsi = lsi.begin(); it_lsi != lsi.end(); ++it_lsi)
{
if (it_lsi->size() > 1)
for (int i : *it_lsi)
{
list<set<int>> res {lsi.begin(), it_lsi};
set<int> A = *it_lsi;
A.erase(i);
set<int> B {i};
res.push_back(A);
res.push_back(B);
res.insert(res.end(), next(it_lsi), lsi.end());
answer.push_back(res);
}
}
for (auto l : answer) {
cout << '{';
for (auto s : l) {
cout << '{';
for (int i : s) {
cout << i;
}
cout << '}';
}
cout << '}';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGl0ZXJhdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglsaXN0PHNldDxpbnQ+PiBsc2kge3sxLCAyfSwgezN9LCB7NCwgNX19OyAKCgl2ZWN0b3I8bGlzdDxzZXQ8aW50Pj4+IGFuc3dlcjsKCWZvciAoYXV0byBpdF9sc2kgPSBsc2kuYmVnaW4oKTsgaXRfbHNpICE9IGxzaS5lbmQoKTsgKytpdF9sc2kpCgl7CgkJaWYgKGl0X2xzaS0+c2l6ZSgpID4gMSkKCQkgICAgZm9yIChpbnQgaSA6ICppdF9sc2kpCgkJICAgIHsKCQkgICAgICAgIGxpc3Q8c2V0PGludD4+IHJlcyB7bHNpLmJlZ2luKCksIGl0X2xzaX07CgkJCQlzZXQ8aW50PiBBID0gKml0X2xzaTsKCQkJCUEuZXJhc2UoaSk7CgkJCQlzZXQ8aW50PiBCIHtpfTsKCQkJCXJlcy5wdXNoX2JhY2soQSk7CgkJCQlyZXMucHVzaF9iYWNrKEIpOwoJCQkJcmVzLmluc2VydChyZXMuZW5kKCksIG5leHQoaXRfbHNpKSwgbHNpLmVuZCgpKTsKCQkJCWFuc3dlci5wdXNoX2JhY2socmVzKTsKCQkgICAgfQoJCQoJfQoJCglmb3IgKGF1dG8gbCA6IGFuc3dlcikgewoJCWNvdXQgPDwgJ3snOwogCQlmb3IgKGF1dG8gcyA6IGwpIHsKCQkJY291dCA8PCAneyc7CgkJCWZvciAoaW50IGkgOiBzKSB7CgkJCQljb3V0IDw8IGk7CgkJCX0KCQkJY291dCA8PCAnfSc7CgkJfQogCQljb3V0IDw8ICd9JzsKCX0KCXJldHVybiAwOwp9