/* package whatever; // don't place package name! */
import java.math.BigInteger;
import java.util.Iterator;
class Substrings{
private class SubstringIterator implements Iterator<String> {
public SubstringIterator
(String s
) { this.s = s;
}
@Override
public boolean hasNext() {
return cur.compareTo(max) < 0;
}
@Override
StringBuilder sb = new StringBuilder();
for(int i = 0x00; i < s.length(); i++) {
if(cur.testBit(i)) {
sb.append(s.charAt(i));
}
}
return sb.toString();
}
@Override
public void remove() {
}
}
public void run () {
SubstringIterator ssi = new SubstringIterator(s);
while(ssi.hasNext()) {
System.
out.
println(ssi.
next()); }
}
public static void main
(String []args
){ new Substrings().run();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOwppbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwoKY2xhc3MgU3Vic3RyaW5nc3sKCiAgICBwcml2YXRlIGNsYXNzIFN1YnN0cmluZ0l0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmF0b3I8U3RyaW5nPiB7CiAgICAKICAgICAgICBTdHJpbmcgczsKICAgICAgICBCaWdJbnRlZ2VyIGN1ciA9IEJpZ0ludGVnZXIuWkVSTzsKICAgICAgICBCaWdJbnRlZ2VyIG1heDsKICAgIAogICAgICAgIHB1YmxpYyBTdWJzdHJpbmdJdGVyYXRvcihTdHJpbmcgcykgewogICAgICAgICAgICB0aGlzLnMgPSBzOwogICAgICAgICAgICBtYXggPSBCaWdJbnRlZ2VyLk9ORS5zaGlmdExlZnQocy5sZW5ndGgoKSkuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpOwogICAgICAgIH0KICAgIAogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBib29sZWFuIGhhc05leHQoKSB7CiAgICAgICAgICAgIHJldHVybiBjdXIuY29tcGFyZVRvKG1heCkgPCAwOwogICAgICAgIH0KICAgIAogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBTdHJpbmcgbmV4dCgpIHsKICAgICAgICAgICAgY3VyID0gY3VyLmFkZChCaWdJbnRlZ2VyLk9ORSk7CiAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwogICAgICAgICAgICBmb3IoaW50IGkgPSAweDAwOyBpIDwgcy5sZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZihjdXIudGVzdEJpdChpKSkgewogICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZChzLmNoYXJBdChpKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNiLnRvU3RyaW5nKCk7CiAgICAgICAgfQogICAgCiAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlKCkgewogICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIlRoaXMgaXMgbm90IGEgY29sbGVjdGlvbiBpdGVyYXRvciIpOwogICAgICAgIH0KICAgICAgICAKICAgIAogICAgfQoKICAgIHB1YmxpYyB2b2lkIHJ1biAoKSB7CiAgICAgICAgU3RyaW5nIHMgPSAiYWJjZCI7CiAgICAgICAgU3Vic3RyaW5nSXRlcmF0b3Igc3NpID0gbmV3IFN1YnN0cmluZ0l0ZXJhdG9yKHMpOwogICAgICAgIHdoaWxlKHNzaS5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNzaS5uZXh0KCkpOwogICAgICAgIH0KICAgIH0KCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIFtdYXJncyl7CiAgICAgICAgbmV3IFN1YnN0cmluZ3MoKS5ydW4oKTsKICAgICB9Cn0=