#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Function to compare strings lexicographically for sorting
int compare(const void *a, const void *b) {
return strcmp((char *)a
, (char *)b
); }
// Function to generate the next lexicographical permutation
int next_permutation(char *str) {
// Step 1: Find the rightmost character which is smaller than the next character
while (i > 0 && str[i - 1] >= str[i]) {
i--;
}
// Step 2: If there is no such character, we've generated all permutations
if (i == 0) {
return 0;
}
// Step 3: Find the character to swap with (next larger character to the right)
while (str[j] <= str[i - 1]) {
j--;
}
// Step 4: Swap the characters
char temp = str[i - 1];
str[i - 1] = str[j];
str[j] = temp;
// Step 5: Reverse the suffix
while (i < j) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
return 1;
}
void generatePermutations(char *str) {
// Sort the string to get the first permutation in lexicographical order
// Print the first permutation
// Generate and print the next permutations until no more are possible
while (next_permutation(str)) {
}
}
int main() {
int T;
scanf("%d", &T
); // Read number of test cases
while (T--) {
char str[6]; // Only up to 5 characters are allowed
scanf("%s", str
); // Read the string generatePermutations(str); // Generate and print permutations
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKLy8gRnVuY3Rpb24gdG8gY29tcGFyZSBzdHJpbmdzIGxleGljb2dyYXBoaWNhbGx5IGZvciBzb3J0aW5nCmludCBjb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpIHsKICAgIHJldHVybiBzdHJjbXAoKGNoYXIgKilhLCAoY2hhciAqKWIpOwp9CgovLyBGdW5jdGlvbiB0byBnZW5lcmF0ZSB0aGUgbmV4dCBsZXhpY29ncmFwaGljYWwgcGVybXV0YXRpb24KaW50IG5leHRfcGVybXV0YXRpb24oY2hhciAqc3RyKSB7CiAgICBpbnQgaSA9IHN0cmxlbihzdHIpIC0gMTsKCiAgICAvLyBTdGVwIDE6IEZpbmQgdGhlIHJpZ2h0bW9zdCBjaGFyYWN0ZXIgd2hpY2ggaXMgc21hbGxlciB0aGFuIHRoZSBuZXh0IGNoYXJhY3RlcgogICAgd2hpbGUgKGkgPiAwICYmIHN0cltpIC0gMV0gPj0gc3RyW2ldKSB7CiAgICAgICAgaS0tOwogICAgfQoKICAgIC8vIFN0ZXAgMjogSWYgdGhlcmUgaXMgbm8gc3VjaCBjaGFyYWN0ZXIsIHdlJ3ZlIGdlbmVyYXRlZCBhbGwgcGVybXV0YXRpb25zCiAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8gU3RlcCAzOiBGaW5kIHRoZSBjaGFyYWN0ZXIgdG8gc3dhcCB3aXRoIChuZXh0IGxhcmdlciBjaGFyYWN0ZXIgdG8gdGhlIHJpZ2h0KQogICAgaW50IGogPSBzdHJsZW4oc3RyKSAtIDE7CiAgICB3aGlsZSAoc3RyW2pdIDw9IHN0cltpIC0gMV0pIHsKICAgICAgICBqLS07CiAgICB9CgogICAgLy8gU3RlcCA0OiBTd2FwIHRoZSBjaGFyYWN0ZXJzCiAgICBjaGFyIHRlbXAgPSBzdHJbaSAtIDFdOwogICAgc3RyW2kgLSAxXSA9IHN0cltqXTsKICAgIHN0cltqXSA9IHRlbXA7CgogICAgLy8gU3RlcCA1OiBSZXZlcnNlIHRoZSBzdWZmaXgKICAgIGogPSBzdHJsZW4oc3RyKSAtIDE7CiAgICB3aGlsZSAoaSA8IGopIHsKICAgICAgICB0ZW1wID0gc3RyW2ldOwogICAgICAgIHN0cltpXSA9IHN0cltqXTsKICAgICAgICBzdHJbal0gPSB0ZW1wOwogICAgICAgIGkrKzsKICAgICAgICBqLS07CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnZvaWQgZ2VuZXJhdGVQZXJtdXRhdGlvbnMoY2hhciAqc3RyKSB7CiAgICAvLyBTb3J0IHRoZSBzdHJpbmcgdG8gZ2V0IHRoZSBmaXJzdCBwZXJtdXRhdGlvbiBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIKICAgIHFzb3J0KHN0ciwgc3RybGVuKHN0ciksIHNpemVvZihjaGFyKSwgY29tcGFyZSk7CgogICAgLy8gUHJpbnQgdGhlIGZpcnN0IHBlcm11dGF0aW9uCiAgICBwcmludGYoIiVzICIsIHN0cik7CgogICAgLy8gR2VuZXJhdGUgYW5kIHByaW50IHRoZSBuZXh0IHBlcm11dGF0aW9ucyB1bnRpbCBubyBtb3JlIGFyZSBwb3NzaWJsZQogICAgd2hpbGUgKG5leHRfcGVybXV0YXRpb24oc3RyKSkgewogICAgICAgIHByaW50ZigiJXMgIiwgc3RyKTsKICAgIH0KCiAgICBwcmludGYoIlxuIik7Cn0KCmludCBtYWluKCkgewogICAgaW50IFQ7CiAgICBzY2FuZigiJWQiLCAmVCk7ICAvLyBSZWFkIG51bWJlciBvZiB0ZXN0IGNhc2VzCgogICAgd2hpbGUgKFQtLSkgewogICAgICAgIGNoYXIgc3RyWzZdOyAgLy8gT25seSB1cCB0byA1IGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKICAgICAgICBzY2FuZigiJXMiLCBzdHIpOyAgLy8gUmVhZCB0aGUgc3RyaW5nCiAgICAgICAgZ2VuZXJhdGVQZXJtdXRhdGlvbnMoc3RyKTsgIC8vIEdlbmVyYXRlIGFuZCBwcmludCBwZXJtdXRhdGlvbnMKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=