#include <algorithm>
#include <iostream>
#include <iterator>
void show_permutation(std::vector<unsigned int> v)
{
int i = 0;
do {
if (v.back() < v.front()) {
continue;
}
std::cout << ++i << ". Permutation: ";
copy(v.begin(), v.end(), std::ostream_iterator<unsigned int>(std::cout, " "));
std::cout << std::endl;
} while(std::next_permutation(v.begin(), v.end()));
}
int main(int argc, char* argv[])
{
std::vector<unsigned int> v(4);
std::iota(v.begin(), v.end(), 0);
show_permutation(v);
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+Cgp2b2lkIHNob3dfcGVybXV0YXRpb24oc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiB2KQp7CiAgICBpbnQgaSA9IDA7CiAgICBkbyB7CiAgICAgICAgaWYgKHYuYmFjaygpIDwgdi5mcm9udCgpKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBzdGQ6OmNvdXQgPDwgKytpIDw8ICIuIFBlcm11dGF0aW9uOiAiOwogICAgICAgIGNvcHkodi5iZWdpbigpLCB2LmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8dW5zaWduZWQgaW50PihzdGQ6OmNvdXQsICIgIikpOwogICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CiAgICB9IHdoaWxlKHN0ZDo6bmV4dF9wZXJtdXRhdGlvbih2LmJlZ2luKCksIHYuZW5kKCkpKTsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewogICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiB2KDQpOwogICAgc3RkOjppb3RhKHYuYmVnaW4oKSwgdi5lbmQoKSwgMCk7CgogICAgc2hvd19wZXJtdXRhdGlvbih2KTsKfQo=