#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define nl '\n'
#define py cout << "YES\n"
#define pn cout << "NO\n"
#define no_dup s.erase(unique(s.begin(), s.end()), s.end());
const double eps = 1e-7;
void fastio() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
//Generate all combinations use BackTrack Algorithm
void generateBitStrings(int i, vector<int>& b, vector<vector<int>>& bitstrings) {
if (i == (int)b.size()) {
bitstrings.push_back(b);
return;
}
b[i] = 0;
generateBitStrings(i + 1, b, bitstrings);
b[i] = 1;
generateBitStrings(i + 1, b, bitstrings);
}
void solve() {
set<char> charSet = {'A', 'B', 'C'};
vector<char> s(charSet.begin(), charSet.end());
int n = s.size();
vector<int> b(n, 0);
vector<vector<int>> bitstrings;
generateBitStrings(0, b, bitstrings);
vector<vector<char>> subsets;
for (const auto& bitstring : bitstrings) {
vector<char> subset;
for (int i = 0; i < n; i++) {
if (bitstring[i] == 1) {
subset.push_back(s[i]);
}
}
subsets.push_back(subset);
}
for (const auto& subset : subsets) {
if(subset.size()==0){
cout<<"empty set"<<nl;
continue;
}
for (char value : subset) {
cout << value << " ";
}
cout << nl;
}
}
int main() {
fastio();
int t = 1;
//cin >> t;
while (t--)
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbmwgJ1xuJwojZGVmaW5lIHB5IGNvdXQgPDwgIllFU1xuIgojZGVmaW5lIHBuIGNvdXQgPDwgIk5PXG4iCiNkZWZpbmUgbm9fZHVwIHMuZXJhc2UodW5pcXVlKHMuYmVnaW4oKSwgcy5lbmQoKSksIHMuZW5kKCkpOyAKY29uc3QgZG91YmxlIGVwcyA9IDFlLTc7CgoKdm9pZCBmYXN0aW8oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBjb3V0LnRpZShudWxscHRyKTsKfQoKLy9HZW5lcmF0ZSBhbGwgY29tYmluYXRpb25zIHVzZSBCYWNrVHJhY2sgQWxnb3JpdGhtCnZvaWQgZ2VuZXJhdGVCaXRTdHJpbmdzKGludCBpLCB2ZWN0b3I8aW50PiYgYiwgdmVjdG9yPHZlY3RvcjxpbnQ+PiYgYml0c3RyaW5ncykgewogICAgaWYgKGkgPT0gKGludCliLnNpemUoKSkgewogICAgICAgIGJpdHN0cmluZ3MucHVzaF9iYWNrKGIpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGJbaV0gPSAwOwogICAgZ2VuZXJhdGVCaXRTdHJpbmdzKGkgKyAxLCBiLCBiaXRzdHJpbmdzKTsKICAgIGJbaV0gPSAxOwogICAgZ2VuZXJhdGVCaXRTdHJpbmdzKGkgKyAxLCBiLCBiaXRzdHJpbmdzKTsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIHNldDxjaGFyPiBjaGFyU2V0ID0geydBJywgJ0InLCAnQyd9OwogICAgdmVjdG9yPGNoYXI+IHMoY2hhclNldC5iZWdpbigpLCBjaGFyU2V0LmVuZCgpKTsKICAgIGludCBuID0gcy5zaXplKCk7CiAgICAKICAgIHZlY3RvcjxpbnQ+IGIobiwgMCk7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGJpdHN0cmluZ3M7CiAgICBnZW5lcmF0ZUJpdFN0cmluZ3MoMCwgYiwgYml0c3RyaW5ncyk7CiAgICAKICAgIHZlY3Rvcjx2ZWN0b3I8Y2hhcj4+IHN1YnNldHM7CiAgICBmb3IgKGNvbnN0IGF1dG8mIGJpdHN0cmluZyA6IGJpdHN0cmluZ3MpIHsKICAgICAgICB2ZWN0b3I8Y2hhcj4gc3Vic2V0OwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGlmIChiaXRzdHJpbmdbaV0gPT0gMSkgewogICAgICAgICAgICAgICAgc3Vic2V0LnB1c2hfYmFjayhzW2ldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBzdWJzZXRzLnB1c2hfYmFjayhzdWJzZXQpOwogICAgfQogICAgCiAgICBmb3IgKGNvbnN0IGF1dG8mIHN1YnNldCA6IHN1YnNldHMpIHsKICAgICAgICBpZihzdWJzZXQuc2l6ZSgpPT0wKXsKICAgICAgICAgICAgY291dDw8ImVtcHR5IHNldCI8PG5sOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZm9yIChjaGFyIHZhbHVlIDogc3Vic2V0KSB7CiAgICAgICAgICAgIGNvdXQgPDwgdmFsdWUgPDwgIiAiOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IG5sOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGZhc3RpbygpOwogICAgaW50IHQgPSAxOwogICAgLy9jaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pCiAgICAgICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9