/* 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
{
{
Map
<Integer, Integer
> map
= getCategoryMap
(); for (Map.
Entry<Integer, Integer
> entry
: map.
entrySet()) { System.
out.
println("Key = " + entry.
getKey() + ", Value = " + entry.
getValue()); }
}
public static int getBits(boolean hasOneChannel,
boolean hasValidCertificate,
boolean isTested,
boolean frequentlyUsed) {
return (hasOneChannel ? 1 << 3 : 0) |
(hasValidCertificate ? 1 << 2 : 0) |
(isTested ? 1 << 1 : 0) |
(frequentlyUsed ? 1 << 0 : 0);
}
public static Map
<Integer, Integer
> getCategoryMap
() { boolean oneChannel = true;
boolean validCertificate = true;
boolean tested = true;
boolean frequentlyUsed = true;
mp.put(getBits(oneChannel,validCertificate,tested,frequentlyUsed), 24);
mp.put(getBits(oneChannel,validCertificate,!tested,frequentlyUsed),95);
mp.put(getBits(oneChannel,!validCertificate,tested,frequentlyUsed),221);
mp.put(getBits(!oneChannel,validCertificate,tested,frequentlyUsed),2004);
mp.put(getBits(!oneChannel,validCertificate,!tested,frequentlyUsed),20044);
mp.put(getBits(!oneChannel,validCertificate,!tested,!frequentlyUsed),2003);
mp.put(getBits(oneChannel,validCertificate,tested,!frequentlyUsed),100);
mp.put(getBits(oneChannel,validCertificate,!tested,!frequentlyUsed),101);
mp.put(getBits(oneChannel,!validCertificate,tested,!frequentlyUsed),102);
mp.put(getBits(oneChannel,!validCertificate,!tested,frequentlyUsed),103);
mp.put(getBits(oneChannel,!validCertificate,!tested,!frequentlyUsed),104);
mp.put(getBits(!oneChannel,validCertificate,tested,!frequentlyUsed),105);
mp.put(getBits(!oneChannel,!validCertificate,tested,frequentlyUsed),106);
mp.put(getBits(!oneChannel,!validCertificate,tested,!frequentlyUsed),107);
mp.put(getBits(!oneChannel,!validCertificate,!tested,frequentlyUsed),108);
mp.put(getBits(!oneChannel,!validCertificate,!tested,!frequentlyUsed),109);
return mp;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCU1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBtYXAgPSBnZXRDYXRlZ29yeU1hcCgpOwogICAgICAgICAgICAgICAgZm9yIChNYXAuRW50cnk8SW50ZWdlciwgSW50ZWdlcj4gZW50cnkgOiBtYXAuZW50cnlTZXQoKSkgewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiS2V5ID0gIiArIGVudHJ5LmdldEtleSgpICsgIiwgVmFsdWUgPSAiICsgZW50cnkuZ2V0VmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgfQoJfQoJCgkKCXB1YmxpYyBzdGF0aWMgaW50IGdldEJpdHMoYm9vbGVhbiBoYXNPbmVDaGFubmVsLCAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBoYXNWYWxpZENlcnRpZmljYXRlLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGlzVGVzdGVkLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGZyZXF1ZW50bHlVc2VkKSB7CgkJcmV0dXJuICAoaGFzT25lQ2hhbm5lbCAgICAgICA/IDEgPDwgMyA6IDApIHwKICAgICAgICAgICAgICAgIChoYXNWYWxpZENlcnRpZmljYXRlID8gMSA8PCAyIDogMCkgfAogICAgICAgICAgICAgICAgKGlzVGVzdGVkICAgICAgICAgICAgPyAxIDw8IDEgOiAwKSB8CiAgICAgICAgICAgICAgICAoZnJlcXVlbnRseVVzZWQgICAgICA/IDEgPDwgMCA6IDApOwoJfQoJCglwdWJsaWMgc3RhdGljIE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBnZXRDYXRlZ29yeU1hcCgpIHsKCQlib29sZWFuIG9uZUNoYW5uZWwgPSB0cnVlOwoJCWJvb2xlYW4gdmFsaWRDZXJ0aWZpY2F0ZSA9IHRydWU7CgkJYm9vbGVhbiB0ZXN0ZWQgPSB0cnVlOwoJCWJvb2xlYW4gZnJlcXVlbnRseVVzZWQgPSB0cnVlOwoJCQoJCU1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBtcCA9IG5ldyBIYXNoTWFwPEludGVnZXIsIEludGVnZXI+KCk7CgkJbXAucHV0KGdldEJpdHMob25lQ2hhbm5lbCx2YWxpZENlcnRpZmljYXRlLHRlc3RlZCxmcmVxdWVudGx5VXNlZCksIDI0KTsKCQltcC5wdXQoZ2V0Qml0cyhvbmVDaGFubmVsLHZhbGlkQ2VydGlmaWNhdGUsIXRlc3RlZCxmcmVxdWVudGx5VXNlZCksOTUpOwoJCW1wLnB1dChnZXRCaXRzKG9uZUNoYW5uZWwsIXZhbGlkQ2VydGlmaWNhdGUsdGVzdGVkLGZyZXF1ZW50bHlVc2VkKSwyMjEpOwoJCW1wLnB1dChnZXRCaXRzKCFvbmVDaGFubmVsLHZhbGlkQ2VydGlmaWNhdGUsdGVzdGVkLGZyZXF1ZW50bHlVc2VkKSwyMDA0KTsKCQltcC5wdXQoZ2V0Qml0cyghb25lQ2hhbm5lbCx2YWxpZENlcnRpZmljYXRlLCF0ZXN0ZWQsZnJlcXVlbnRseVVzZWQpLDIwMDQ0KTsKCQltcC5wdXQoZ2V0Qml0cyghb25lQ2hhbm5lbCx2YWxpZENlcnRpZmljYXRlLCF0ZXN0ZWQsIWZyZXF1ZW50bHlVc2VkKSwyMDAzKTsKCQkKCQltcC5wdXQoZ2V0Qml0cyhvbmVDaGFubmVsLHZhbGlkQ2VydGlmaWNhdGUsdGVzdGVkLCFmcmVxdWVudGx5VXNlZCksMTAwKTsKCQltcC5wdXQoZ2V0Qml0cyhvbmVDaGFubmVsLHZhbGlkQ2VydGlmaWNhdGUsIXRlc3RlZCwhZnJlcXVlbnRseVVzZWQpLDEwMSk7CgkJbXAucHV0KGdldEJpdHMob25lQ2hhbm5lbCwhdmFsaWRDZXJ0aWZpY2F0ZSx0ZXN0ZWQsIWZyZXF1ZW50bHlVc2VkKSwxMDIpOwoJCW1wLnB1dChnZXRCaXRzKG9uZUNoYW5uZWwsIXZhbGlkQ2VydGlmaWNhdGUsIXRlc3RlZCxmcmVxdWVudGx5VXNlZCksMTAzKTsKCQltcC5wdXQoZ2V0Qml0cyhvbmVDaGFubmVsLCF2YWxpZENlcnRpZmljYXRlLCF0ZXN0ZWQsIWZyZXF1ZW50bHlVc2VkKSwxMDQpOwoJCW1wLnB1dChnZXRCaXRzKCFvbmVDaGFubmVsLHZhbGlkQ2VydGlmaWNhdGUsdGVzdGVkLCFmcmVxdWVudGx5VXNlZCksMTA1KTsKCQltcC5wdXQoZ2V0Qml0cyghb25lQ2hhbm5lbCwhdmFsaWRDZXJ0aWZpY2F0ZSx0ZXN0ZWQsZnJlcXVlbnRseVVzZWQpLDEwNik7CgkJbXAucHV0KGdldEJpdHMoIW9uZUNoYW5uZWwsIXZhbGlkQ2VydGlmaWNhdGUsdGVzdGVkLCFmcmVxdWVudGx5VXNlZCksMTA3KTsKCQltcC5wdXQoZ2V0Qml0cyghb25lQ2hhbm5lbCwhdmFsaWRDZXJ0aWZpY2F0ZSwhdGVzdGVkLGZyZXF1ZW50bHlVc2VkKSwxMDgpOwoJCW1wLnB1dChnZXRCaXRzKCFvbmVDaGFubmVsLCF2YWxpZENlcnRpZmljYXRlLCF0ZXN0ZWQsIWZyZXF1ZW50bHlVc2VkKSwxMDkpOwoJCQoJCXJldHVybiBtcDsKCX0KfQ==