/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
}
static <T> List<List<T>> helfer(T[] s, int idx) {
// Rückgabe pms ist Potenzmenge von s ab index idx
List<List<T>> pms = new ArrayList<List<T>>();
if (idx >= s.length) {
// Basisfall
pms.add(new ArrayList<T>());
} else {
// aktuelles Kopfelement bestimmen
T kopf = s[idx];
// Potenzmenge der Restliste bestimmen
List<List<T>> potRest = helfer(s, idx + 1);
// Ergebnisse zusammenführen
for (List<T> ohneKopf : potRest) {
List<T> mitKopf = new ArrayList<>(ohneKopf); // *nocH* ohne Kopf
mitKopf.add(kopf);
pms.add(ohneKopf);
pms.add(mitKopf);
}
}
return pms;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN5c3RlbS5vdXQucHJpbnRsbihoZWxmZXIobmV3IFN0cmluZ1tdeyJBIiwgInUiLCAiRCJ9LCAwKSk7Cgl9CglzdGF0aWMgPFQ+IExpc3Q8TGlzdDxUPj4gaGVsZmVyKFRbXSBzLCBpbnQgaWR4KSB7CgkvLyBSw7xja2dhYmUgcG1zIGlzdCBQb3RlbnptZW5nZSB2b24gcyBhYiBpbmRleCBpZHgKCUxpc3Q8TGlzdDxUPj4gcG1zID0gbmV3IEFycmF5TGlzdDxMaXN0PFQ+PigpOwoJaWYgKGlkeCA+PSBzLmxlbmd0aCkgewoJCS8vIEJhc2lzZmFsbAoJCXBtcy5hZGQobmV3IEFycmF5TGlzdDxUPigpKTsKCX0gZWxzZSB7CgkJLy8gYWt0dWVsbGVzIEtvcGZlbGVtZW50IGJlc3RpbW1lbgoJCVQga29wZiA9IHNbaWR4XTsKIAoJCS8vIFBvdGVuem1lbmdlIGRlciBSZXN0bGlzdGUgYmVzdGltbWVuCgkJTGlzdDxMaXN0PFQ+PiBwb3RSZXN0ID0gaGVsZmVyKHMsIGlkeCArIDEpOwogCgkJLy8gRXJnZWJuaXNzZSB6dXNhbW1lbmbDvGhyZW4KCQlmb3IgKExpc3Q8VD4gb2huZUtvcGYgOiBwb3RSZXN0KSB7CgkJCUxpc3Q8VD4gbWl0S29wZiA9IG5ldyBBcnJheUxpc3Q8PihvaG5lS29wZik7IC8vICpub2NIKiBvaG5lIEtvcGYKCQkJbWl0S29wZi5hZGQoa29wZik7CiAKCQkJcG1zLmFkZChvaG5lS29wZik7CgkJCXBtcy5hZGQobWl0S29wZik7CgkJfQoJfQoJcmV0dXJuIHBtczsKfQp9
[[], [A], [u], [u, A], [D], [D, A], [D, u], [D, u, A]]