#include <iostream>
#include <string>
using namespace std;
void subs(string sub, string ans) {
// Base case: if the string is empty, print the answer
if (sub.length() == 0) {
cout << ans << endl;
return;
}
char ch = sub[0]; // Extract the first character
string ros = sub.substr(1); // The Rest Of String (ros)
// Recursive call 1: Do not include the character in the answer
subs(ros, ans);
// Recursive call 2: Include the character in the answer
subs(ros, ans + ch);
}
int main() {
string s = "abc";
// Call the function directly
subs(s, "");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBzdWJzKHN0cmluZyBzdWIsIHN0cmluZyBhbnMpIHsKICAgIC8vIEJhc2UgY2FzZTogaWYgdGhlIHN0cmluZyBpcyBlbXB0eSwgcHJpbnQgdGhlIGFuc3dlcgogICAgaWYgKHN1Yi5sZW5ndGgoKSA9PSAwKSB7CiAgICAgICAgY291dCA8PCBhbnMgPDwgZW5kbDsgCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGNoYXIgY2ggPSBzdWJbMF07ICAgICAgICAgICAgIC8vIEV4dHJhY3QgdGhlIGZpcnN0IGNoYXJhY3RlcgogICAgc3RyaW5nIHJvcyA9IHN1Yi5zdWJzdHIoMSk7ICAgLy8gVGhlIFJlc3QgT2YgU3RyaW5nIChyb3MpCgogICAgLy8gUmVjdXJzaXZlIGNhbGwgMTogRG8gbm90IGluY2x1ZGUgdGhlIGNoYXJhY3RlciBpbiB0aGUgYW5zd2VyCiAgICBzdWJzKHJvcywgYW5zKTsKICAgIAogICAgLy8gUmVjdXJzaXZlIGNhbGwgMjogSW5jbHVkZSB0aGUgY2hhcmFjdGVyIGluIHRoZSBhbnN3ZXIKICAgIHN1YnMocm9zLCBhbnMgKyBjaCk7Cn0KCmludCBtYWluKCkgewogICAgc3RyaW5nIHMgPSAiYWJjIjsKCiAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiBkaXJlY3RseQogICAgc3VicyhzLCAiIik7CiAgICAKICAgIHJldHVybiAwOwp9