#include <iostream>
#include <algorithm>
void permutation(std::string prefix, std::string remaining) {
if (remaining.size() == 0) {
std::cout << prefix << std::endl;
} else {
for (size_t i = 0; i < remaining.size(); ++i) {
std::string nextPrefix = prefix + remaining[i];
std::string nextRemaining = remaining;
nextRemaining.erase(i, 1);
permutation(nextPrefix, nextRemaining);
}
}
}
int main() {
std::string numbers = "1234";
permutation("", numbers);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdm9pZCBwZXJtdXRhdGlvbihzdGQ6OnN0cmluZyBwcmVmaXgsIHN0ZDo6c3RyaW5nIHJlbWFpbmluZykgewogICAgaWYgKHJlbWFpbmluZy5zaXplKCkgPT0gMCkgewogICAgICAgIHN0ZDo6Y291dCA8PCBwcmVmaXggPDwgc3RkOjplbmRsOwogICAgfSBlbHNlIHsKICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbWFpbmluZy5zaXplKCk7ICsraSkgewogICAgICAgICAgICBzdGQ6OnN0cmluZyBuZXh0UHJlZml4ID0gcHJlZml4ICsgcmVtYWluaW5nW2ldOwogICAgICAgICAgICBzdGQ6OnN0cmluZyBuZXh0UmVtYWluaW5nID0gcmVtYWluaW5nOwogICAgICAgICAgICBuZXh0UmVtYWluaW5nLmVyYXNlKGksIDEpOwogICAgICAgICAgICBwZXJtdXRhdGlvbihuZXh0UHJlZml4LCBuZXh0UmVtYWluaW5nKTsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgc3RkOjpzdHJpbmcgbnVtYmVycyA9ICIxMjM0IjsKICAgIHBlcm11dGF0aW9uKCIiLCBudW1iZXJzKTsKICAgIHJldHVybiAwOwp9