import java.util.*;
import java.lang.*;
import java.io.*;
class A {
public int calc (double num){
return (int)(num+1);}
}
class B extends A{
public int calc (long num){
return (int)(num+2);}
}
class C extends B{
public int calc (int num){
return num+3;}
}
class D extends C{
public int calc (float num){
return (int)(num+4);}
}
class Program{
public static void main
(String[] args
){ int num1=10;
long num2 = num1;
System.
out.
println("num1 Type: "+o1.
getClass().
getName());
System.
out.
println("num2 Type: "+o2.
getClass().
getName());
A a1=new D();
A a2=new D();
System.
out.
println("a1 Type: "+a1.
getClass().
getName()); System.
out.
println("a2 Type: "+a2.
getClass().
getName());
int result = a1.calc(num1)+a2.calc(num2);
System.
out.
println("Number: "+result
); }
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBBIHsKCQlwdWJsaWMgaW50IGNhbGMgKGRvdWJsZSBudW0pewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oImNhbGMgQSIpOwoJCQlyZXR1cm4gKGludCkobnVtKzEpO30KCX0KY2xhc3MgQiBleHRlbmRzIEF7CgkJcHVibGljIGludCBjYWxjIChsb25nIG51bSl7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiY2FsYyBCIik7CgkJCXJldHVybiAoaW50KShudW0rMik7fQoJfQpjbGFzcyBDIGV4dGVuZHMgQnsKCQlwdWJsaWMgaW50IGNhbGMgKGludCBudW0pewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oImNhbGMgQyIpOwoJCQlyZXR1cm4gbnVtKzM7fQoJfQpjbGFzcyBEIGV4dGVuZHMgQ3sKCQlwdWJsaWMgaW50IGNhbGMgKGZsb2F0IG51bSl7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiY2FsYyBEIik7CgkJCXJldHVybiAoaW50KShudW0rNCk7fQoJfQoJCmNsYXNzIFByb2dyYW17CgkJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CgkJCWludCBudW0xPTEwOwoJCQlsb25nIG51bTIgPSBudW0xOwoJCQkKCQkJT2JqZWN0IG8xID0gbnVtMTsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJudW0xIFR5cGU6ICIrbzEuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOwoJCQkKCQkJT2JqZWN0IG8yID0gbnVtMjsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJudW0yIFR5cGU6ICIrbzIuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOwoJCQkKCQkJCgkJCUEgYTE9bmV3IEQoKTsKCQkJQSBhMj1uZXcgRCgpOwoJCQkKCQkJU3lzdGVtLm91dC5wcmludGxuKCJhMSBUeXBlOiAiK2ExLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJhMiBUeXBlOiAiK2EyLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKCQkJCgkJCWludCByZXN1bHQgPSBhMS5jYWxjKG51bTEpK2EyLmNhbGMobnVtMik7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiTnVtYmVyOiAiK3Jlc3VsdCk7CgkJfQoJfQ==