/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
interface NumFmt {
}
final class Hex implements NumFmt {
public static final Hex HEX = new Hex();
@Override
public String string
(byte b
) { return String.
format("0x%02X", b
); }
@Override
public String string
(short n
) { return String.
format("0x%04X", n
); }
@Override
return String.
format("0x%08X", n
); }
@Override
public String string
(long n
) { return String.
format("0x%016X", n
); }
}
final class Bin implements NumFmt {
public static final Bin BIN = new Bin();
@Override
public String string
(byte b
) { return String.
format("0b%8s",
Integer.
toBinaryString(b
)).
replace(' ',
'0'); }
@Override
public String string
(short n
) { return String.
format("0b%16s",
Integer.
toBinaryString(n
)).
replace(' ',
'0'); }
@Override
return String.
format("0b%32s",
Integer.
toBinaryString(n
)).
replace(' ',
'0'); }
@Override
public String string
(long n
) { return String.
format("0b%64s",
Long.
toBinaryString(n
)).
replace(' ',
'0'); }
}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
for (NumFmt fmt : new NumFmt[]{
Hex.HEX, Bin.BIN
}) {
fmt.string(11),
fmt.string((byte) 11),
fmt.string(11L),
}) {
}
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbnRlcmZhY2UgTnVtRm10IHsKCQoJU3RyaW5nIHN0cmluZyhieXRlIGIpOwoJU3RyaW5nIHN0cmluZyhzaG9ydCBuKTsKCVN0cmluZyBzdHJpbmcoaW50IG4pOwoJU3RyaW5nIHN0cmluZyhsb25nIG4pOwp9CgpmaW5hbCBjbGFzcyBIZXggaW1wbGVtZW50cyBOdW1GbXQgewoJCglwdWJsaWMgc3RhdGljIGZpbmFsIEhleCBIRVggPSBuZXcgSGV4KCk7CgkKCUBPdmVycmlkZQoJcHVibGljIFN0cmluZyBzdHJpbmcoYnl0ZSBiKSB7CgkJcmV0dXJuIFN0cmluZy5mb3JtYXQoIjB4JTAyWCIsIGIpOwoJfQoJCglAT3ZlcnJpZGUKCXB1YmxpYyBTdHJpbmcgc3RyaW5nKHNob3J0IG4pIHsKCQlyZXR1cm4gU3RyaW5nLmZvcm1hdCgiMHglMDRYIiwgbik7Cgl9CgkKCUBPdmVycmlkZQoJcHVibGljIFN0cmluZyBzdHJpbmcoaW50IG4pIHsKCQlyZXR1cm4gU3RyaW5nLmZvcm1hdCgiMHglMDhYIiwgbik7Cgl9CgkKCUBPdmVycmlkZQoJcHVibGljIFN0cmluZyBzdHJpbmcobG9uZyBuKSB7CgkJcmV0dXJuIFN0cmluZy5mb3JtYXQoIjB4JTAxNlgiLCBuKTsKCX0KfQoKZmluYWwgY2xhc3MgQmluIGltcGxlbWVudHMgTnVtRm10IHsKCQoJcHVibGljIHN0YXRpYyBmaW5hbCBCaW4gQklOID0gbmV3IEJpbigpOwoJCglAT3ZlcnJpZGUKCXB1YmxpYyBTdHJpbmcgc3RyaW5nKGJ5dGUgYikgewoJCXJldHVybiBTdHJpbmcuZm9ybWF0KCIwYiU4cyIsIEludGVnZXIudG9CaW5hcnlTdHJpbmcoYikpLnJlcGxhY2UoJyAnLCAnMCcpOwoJfQoJCglAT3ZlcnJpZGUKCXB1YmxpYyBTdHJpbmcgc3RyaW5nKHNob3J0IG4pIHsKCQlyZXR1cm4gU3RyaW5nLmZvcm1hdCgiMGIlMTZzIiwgSW50ZWdlci50b0JpbmFyeVN0cmluZyhuKSkucmVwbGFjZSgnICcsICcwJyk7Cgl9CgkKCUBPdmVycmlkZQoJcHVibGljIFN0cmluZyBzdHJpbmcoaW50IG4pIHsKCQlyZXR1cm4gU3RyaW5nLmZvcm1hdCgiMGIlMzJzIiwgSW50ZWdlci50b0JpbmFyeVN0cmluZyhuKSkucmVwbGFjZSgnICcsICcwJyk7Cgl9CgkKCUBPdmVycmlkZQoJcHVibGljIFN0cmluZyBzdHJpbmcobG9uZyBuKSB7CgkJcmV0dXJuIFN0cmluZy5mb3JtYXQoIjBiJTY0cyIsIExvbmcudG9CaW5hcnlTdHJpbmcobikpLnJlcGxhY2UoJyAnLCAnMCcpOwoJfQp9CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lIHsKCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uIHsKCQlmb3IgKE51bUZtdCBmbXQgOiBuZXcgTnVtRm10W117CgkJCUhleC5IRVgsIEJpbi5CSU4KCQl9KSB7CgkJCWZvciAoU3RyaW5nIHMgOiBuZXcgU3RyaW5nW117CgkJCQlmbXQuc3RyaW5nKDExKSwKCQkJCWZtdC5zdHJpbmcoKGJ5dGUpIDExKSwKCQkJCWZtdC5zdHJpbmcoMTFMKSwKCQkJfSkgewoJCQkJU3lzdGVtLm91dC5wcmludGxuKHMpOwoJCQl9CgkJfQoJfQp9