#include <bits/stdc++.h>
using namespace std;
void combination(string a, int l, int r)
{
if (l == r) // Base case
cout<<a<<endl;
else
{
for (int i = l; i <= r; i++) // Permutations made
{
swap(a[l], a[i]); // Swapping done
combination(a, l+1, r); // Recursion called
swap(a[l], a[i]); //backtrack
}
}
}
int main()
{
string str = "ABC";
int n = str.size();
combination(str, 0, n-1);
return 0;
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCgp2b2lkIGNvbWJpbmF0aW9uKHN0cmluZyBhLCBpbnQgbCwgaW50IHIpIAp7IAogICAgIGlmIChsID09IHIpIC8vIEJhc2UgY2FzZSAKICAgICBjb3V0PDxhPDxlbmRsOyAKCQogICAgIGVsc2UKCXsgCgkgICAgZm9yIChpbnQgaSA9IGw7IGkgPD0gcjsgaSsrKSAgIC8vIFBlcm11dGF0aW9ucyBtYWRlIAoJICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgIHN3YXAoYVtsXSwgYVtpXSk7ICAgICAgLy8gU3dhcHBpbmcgZG9uZQoKCSAgICAgICAgICAgIGNvbWJpbmF0aW9uKGEsIGwrMSwgcik7ICAgICAvLyBSZWN1cnNpb24gY2FsbGVkIAoKCSAgICAgICAgICAgIHN3YXAoYVtsXSwgYVtpXSk7ICAgICAvL2JhY2t0cmFjawoJICAgIH0gCgl9IAp9IAoKaW50IG1haW4oKSAKeyAKICAgc3RyaW5nIHN0ciA9ICJBQkMiOyAKICAgaW50IG4gPSBzdHIuc2l6ZSgpOyAKICAgY29tYmluYXRpb24oc3RyLCAwLCBuLTEpOyAKICAgcmV0dXJuIDA7IAp9IAoK