#include <algorithm>
#include <iostream>
#include <vector>
std::vector<std::vector<int> > permuteUnique(std::vector<int> num) {
std::sort(num.begin(), num.end());
std::vector<std::vector<int> > res;
if(num.empty()) {
return res;
}
do {
res.push_back(num);
} while (std::next_permutation(num.begin(), num.end()));
return res;
}
void print(const std::vector<int>& v)
{
std::cout << "{";
const char* sep = "";
for (const auto& e : v) {
std::cout << sep << e;
sep = ", ";
}
std::cout << "}\n";
}
int main()
{
auto res = permuteUnique({2, 1, 1});
for (const auto& e : res) {
print(e);
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8aW50PiA+IHBlcm11dGVVbmlxdWUoc3RkOjp2ZWN0b3I8aW50PiBudW0pIHsKICAgIHN0ZDo6c29ydChudW0uYmVnaW4oKSwgbnVtLmVuZCgpKTsKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGludD4gPiByZXM7CiAgICBpZihudW0uZW1wdHkoKSkgewogICAgICAgIHJldHVybiByZXM7CiAgICB9CiAgICBkbyB7CiAgICAgICAgcmVzLnB1c2hfYmFjayhudW0pOwogICAgfSB3aGlsZSAoc3RkOjpuZXh0X3Blcm11dGF0aW9uKG51bS5iZWdpbigpLCBudW0uZW5kKCkpKTsKICAgIHJldHVybiByZXM7Cn0KCnZvaWQgcHJpbnQoY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgdikKewoJc3RkOjpjb3V0IDw8ICJ7IjsKCWNvbnN0IGNoYXIqIHNlcCA9ICIiOwoJZm9yIChjb25zdCBhdXRvJiBlIDogdikgewoJCXN0ZDo6Y291dCA8PCBzZXAgPDwgZTsKCQlzZXAgPSAiLCAiOwoJfQoJc3RkOjpjb3V0IDw8ICJ9XG4iOwp9CgppbnQgbWFpbigpCnsKCWF1dG8gcmVzID0gcGVybXV0ZVVuaXF1ZSh7MiwgMSwgMX0pOwoJZm9yIChjb25zdCBhdXRvJiBlIDogcmVzKSB7CgkJcHJpbnQoZSk7Cgl9CgkKfQ==