#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int c = 0;
void foo(char *s1, char *s2, int n) {
int j;
if (*s1 == '\0') {
c++;
if (c == 36690094) {
printf("foo %03d %s\n", c
, s2
); }
} else {
for (j = 0; j < n; j++) {
if (s2[j] == '\0') {
s2[j] = *s1;
foo(s1 + 1, s2, n);
s2[j] = '\0';
}
}
}
}
int main(void) {
char str1[] = "ABCDEFGHIJKLMNO";
char str2[sizeof(str1)] = {0};
foo
(str1
, str2
, (int)strlen(str1
));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKaW50IGMgPSAwOwoKdm9pZCBmb28oY2hhciAqczEsIGNoYXIgKnMyLCBpbnQgbikgewoJaW50IGo7CglpZiAoKnMxID09ICdcMCcpIHsKCQljKys7CgkJaWYgKGMgPT0gMzY2OTAwOTQpIHsKCQkJcHJpbnRmKCJmb28gJTAzZCAlc1xuIiwgYywgczIpOwoJCQlleGl0KDApOwoJCX0KCX0gZWxzZSB7CgkJZm9yIChqID0gMDsgaiA8IG47IGorKykgewoJCQlpZiAoczJbal0gPT0gJ1wwJykgewoJCQkJczJbal0gPSAqczE7CgkJCQlmb28oczEgKyAxLCBzMiwgbik7CgkJCQlzMltqXSA9ICdcMCc7CgkJCX0KCQl9Cgl9Cn0KCmludCBtYWluKHZvaWQpIHsKCQoJY2hhciBzdHIxW10gPSAiQUJDREVGR0hJSktMTU5PIjsKCWNoYXIgc3RyMltzaXplb2Yoc3RyMSldID0gezB9OwoJCglmb28oc3RyMSwgc3RyMiwgKGludClzdHJsZW4oc3RyMSkpOwoJCgkKCXJldHVybiAwOwp9Cg==