import java.util.* ;
import java.lang.* ;
import java.io.* ;
abstract class Hen
{
{
return "Chicken" ;
}
abstract int eggsPerMonth( ) ;
}
class RusHen extends Hen
{
int eggsPerMonth( )
{
return 5 ;
}
private String country
= "Russia" ; {
res+= ( " Country - " + country+ " Eggs per month- " + eggsPerMonth( ) ) ;
return res;
}
}
class UkrHen extends Hen
{
int eggsPerMonth( )
{
return 8 ;
}
private String country
= "Ukraine" ; {
res+= ( " Country - " + country+ " Eggs per month- " + eggsPerMonth( ) ) ;
return res;
}
}
class MldHen extends Hen
{
int eggsPerMonth( )
{
return 4 ;
}
private String country
= "Moldova" ; {
res+= ( " Country - " + country+ " Eggs per month- " + eggsPerMonth( ) ) ;
return res;
}
}
class BelHen extends Hen
{
int eggsPerMonth( )
{
return 3 ;
}
private String country
= "Belarus" ; {
res+= ( " Country - " + country+ " Eggs per month- " + eggsPerMonth( ) ) ;
return res;
}
}
enum countries
{ RUSSIA, UKRAINE, MOLDOVA, BELARUS}
class HenFactory
{
static Hen getHen( countries country)
{
switch ( country)
{
case RUSSIA: return new RusHen( ) ;
case UKRAINE: return new UkrHen( ) ;
case MOLDOVA: return new MldHen( ) ;
case BELARUS: return new BelHen( ) ;
}
return null ;
}
}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
for ( countries country: countries.values ( ) )
System .
out .
println ( HenFactory.
getHen ( country
) .
descr ( ) ) ; }
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmFic3RyYWN0IGNsYXNzIEhlbgp7CglTdHJpbmcgZGVzY3IoKQoJewoJCXJldHVybiAiQ2hpY2tlbiI7Cgl9CglhYnN0cmFjdCBpbnQgZWdnc1Blck1vbnRoKCk7Cn0KCmNsYXNzIFJ1c0hlbiBleHRlbmRzIEhlbgp7CglpbnQgZWdnc1Blck1vbnRoKCkKCXsKCQlyZXR1cm4gNTsKCX0KCXByaXZhdGUgU3RyaW5nIGNvdW50cnk9IlJ1c3NpYSI7CglTdHJpbmcgZGVzY3IoKQoJewoJCVN0cmluZyByZXM9c3VwZXIuZGVzY3IoKTsKCQlyZXMrPSgiIENvdW50cnkgLSAiK2NvdW50cnkrIiBFZ2dzIHBlciBtb250aC0gIitlZ2dzUGVyTW9udGgoKSk7CgkJcmV0dXJuIHJlczsKCX0KfQoKY2xhc3MgVWtySGVuIGV4dGVuZHMgSGVuCnsKCWludCBlZ2dzUGVyTW9udGgoKQoJewoJCXJldHVybiA4OwoJfQoJcHJpdmF0ZSBTdHJpbmcgY291bnRyeT0iVWtyYWluZSI7CglTdHJpbmcgZGVzY3IoKQoJewoJCVN0cmluZyByZXM9c3VwZXIuZGVzY3IoKTsKCQlyZXMrPSgiIENvdW50cnkgLSAiK2NvdW50cnkrIiBFZ2dzIHBlciBtb250aC0gIitlZ2dzUGVyTW9udGgoKSk7CgkJcmV0dXJuIHJlczsKCX0KfQoKY2xhc3MgTWxkSGVuIGV4dGVuZHMgSGVuCnsKCWludCBlZ2dzUGVyTW9udGgoKQoJewoJCXJldHVybiA0OwoJfQoJcHJpdmF0ZSBTdHJpbmcgY291bnRyeT0iTW9sZG92YSI7CglTdHJpbmcgZGVzY3IoKQoJewoJCVN0cmluZyByZXM9c3VwZXIuZGVzY3IoKTsKCQlyZXMrPSgiIENvdW50cnkgLSAiK2NvdW50cnkrIiBFZ2dzIHBlciBtb250aC0gIitlZ2dzUGVyTW9udGgoKSk7CgkJcmV0dXJuIHJlczsKCX0KfQoKY2xhc3MgQmVsSGVuIGV4dGVuZHMgSGVuCnsKCWludCBlZ2dzUGVyTW9udGgoKQoJewoJCXJldHVybiAzOwoJfQoJcHJpdmF0ZSBTdHJpbmcgY291bnRyeT0iQmVsYXJ1cyI7CglTdHJpbmcgZGVzY3IoKQoJewoJCVN0cmluZyByZXM9c3VwZXIuZGVzY3IoKTsKCQlyZXMrPSgiIENvdW50cnkgLSAiK2NvdW50cnkrIiBFZ2dzIHBlciBtb250aC0gIitlZ2dzUGVyTW9udGgoKSk7CgkJcmV0dXJuIHJlczsKCX0KfQplbnVtIGNvdW50cmllcwp7UlVTU0lBLCBVS1JBSU5FLCBNT0xET1ZBLCBCRUxBUlVTfQoKY2xhc3MgSGVuRmFjdG9yeQp7CglzdGF0aWMgSGVuIGdldEhlbihjb3VudHJpZXMgY291bnRyeSkKCXsKCQlzd2l0Y2ggKGNvdW50cnkpCgkJewoJCQljYXNlIFJVU1NJQTogcmV0dXJuIG5ldyBSdXNIZW4oKTsKCQkJY2FzZSBVS1JBSU5FOiByZXR1cm4gbmV3IFVrckhlbigpOwoJCQljYXNlIE1PTERPVkE6IHJldHVybiBuZXcgTWxkSGVuKCk7CgkJCWNhc2UgQkVMQVJVUzogcmV0dXJuIG5ldyBCZWxIZW4oKTsKCQl9CgkJcmV0dXJuIG51bGw7Cgl9Cn0KCgkvKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWZvciAoY291bnRyaWVzIGNvdW50cnk6Y291bnRyaWVzLnZhbHVlcygpKQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oSGVuRmFjdG9yeS5nZXRIZW4oY291bnRyeSkuZGVzY3IoKSk7Cgl9Cn0K