/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class A{
return ("A and D");
}
return ("A and A");
}
}
class B extends A{
return ("B and B");
}
return ("B and A");
}
}
class C extends B{}
class D extends B{}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.
out.
println(a1.
show(b
)); System.
out.
println(a1.
show(c
)); System.
out.
println(a1.
show(d
)); System.
out.
println(a2.
show(b
)); System.
out.
println(a2.
show(c
)); System.
out.
println(a2.
show(d
)); System.
out.
println(b.
show(b
)); System.
out.
println(b.
show(c
)); System.
out.
println(b.
show(d
)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgoKY2xhc3MgQXsgIAogICAgICAgICBwdWJsaWMgU3RyaW5nIHNob3coRCBvYmopeyAgCiAgICAgICAgICAgICAgICByZXR1cm4gKCJBIGFuZCBEIik7ICAKICAgICAgICAgfSAgIAogICAgICAgICBwdWJsaWMgU3RyaW5nIHNob3coQSBvYmopeyAgCiAgICAgICAgICAgICAgICByZXR1cm4gKCJBIGFuZCBBIik7ICAKICAgICAgICAgfSAgIAp9ICAgCmNsYXNzIEIgZXh0ZW5kcyBBeyAgCiAgICAgICAgIHB1YmxpYyBTdHJpbmcgc2hvdyhCIG9iail7ICAKICAgICAgICAgICAgICAgIHJldHVybiAoIkIgYW5kIEIiKTsgIAogICAgICAgICB9ICAKICAgICAgICAgcHVibGljIFN0cmluZyBzaG93KEEgb2JqKXsgIAogICAgICAgICAgICAgICAgcmV0dXJuICgiQiBhbmQgQSIpOyAgCiAgICAgICAgIH0gICAKfSAgCmNsYXNzIEMgZXh0ZW5kcyBCe30gICAKY2xhc3MgRCBleHRlbmRzIEJ7fQoKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJQSBhMSA9IG5ldyBBKCk7ICAKICAgICAgICBBIGEyID0gbmV3IEIoKTsgIAogICAgICAgIEIgYiA9IG5ldyBCKCk7ICAKICAgICAgICBDIGMgPSBuZXcgQygpOyAgIAogICAgICAgIEQgZCA9IG5ldyBEKCk7ICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGExLnNob3coYikpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhMS5zaG93KGMpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYTEuc2hvdyhkKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGEyLnNob3coYikpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhMi5zaG93KGMpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYTIuc2hvdyhkKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGIuc2hvdyhiKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGIuc2hvdyhjKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGIuc2hvdyhkKSk7Cgl9Cn0=