#include <iostream>
using namespace std;
#define swap(x,y,t) ((t)=(x), (x)=(y), (y)=(t))
void perm(char *list, int i, int n);
int main(){
char a[4]={'a','b','c'};
perm(a,0,2);
//cout<<a<<endl;
return 0;
}
void perm(char *list, int i, int n){
int j, temp;
if (i==n){
for (j=0; j<=n; j++)
printf("%c", list[j]);
printf(" ");
}
else {
for (j=i; j<=n; j++){
swap(list[i],list[j],temp);
perm(list,i+1,n);
swap(list[i],list[j],temp);
//cout<<list<<endl;
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHN3YXAoeCx5LHQpICAoKHQpPSh4KSwgKHgpPSh5KSwgKHkpPSh0KSkKdm9pZCBwZXJtKGNoYXIgKmxpc3QsIGludCBpLCBpbnQgbik7CgppbnQgbWFpbigpewogICAgY2hhciBhWzRdPXsnYScsJ2InLCdjJ307CiAgICBwZXJtKGEsMCwyKTsKICAgIC8vY291dDw8YTw8ZW5kbDsKCgogICAgcmV0dXJuIDA7Cn0KCnZvaWQgcGVybShjaGFyICpsaXN0LCBpbnQgaSwgaW50IG4pewogICAgaW50IGosIHRlbXA7CiAgICBpZiAoaT09bil7CiAgICAgICAgZm9yIChqPTA7IGo8PW47IGorKykKICAgICAgICAgICAgcHJpbnRmKCIlYyIsIGxpc3Rbal0pOwogICAgICAgIHByaW50ZigiICAgICAiKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciAoaj1pOyBqPD1uOyBqKyspewogICAgICAgICAgICBzd2FwKGxpc3RbaV0sbGlzdFtqXSx0ZW1wKTsKICAgICAgICAgICAgcGVybShsaXN0LGkrMSxuKTsKICAgICAgICAgICAgc3dhcChsaXN0W2ldLGxpc3Rbal0sdGVtcCk7CiAgICAgICAgICAgIC8vY291dDw8bGlzdDw8ZW5kbDsKICAgICAgICB9CiAgICB9Cn0K