import java.io.*;
abstract class ScalarProduct<A> {
public abstract Integer scalarProduct
(A second
); }
class Nil extends ScalarProduct<Nil>{
Nil(){}
public Integer scalarProduct
(Nil second
) { return 0;
}
}
class Cons<A extends ScalarProduct<A>> extends ScalarProduct<Cons<A>>{
public A tail;
value = _value;
tail = _tail;
}
public Integer scalarProduct
(Cons
<A
> second
){ return value * second.value + tail.scalarProduct(second.tail);
}
}
class _Test{
return _main(n, 0, new Nil(), new Nil());
}
if (n == 0) {
return first.scalarProduct(second);
} else {
return _main(n-1, i+1, new Cons<A>(2*i+1,first), new Cons<A>(i*i, second));
//return _main(n-1, i+1, first, new Cons<A>(i*i, second));
}
}
}
public class Test{
public static void main
(String [] args
){ System.
out.
print("Enter a number: "); try {
System.
out.
println(_Test.
main(val
)); System.
err.
println("Not a valid number"); System.
err.
println("Unexpected IO ERROR"); }
}
}
aW1wb3J0IGphdmEuaW8uKjsKYWJzdHJhY3QgY2xhc3MgU2NhbGFyUHJvZHVjdDxBPiB7CiAgICBwdWJsaWMgYWJzdHJhY3QgSW50ZWdlciBzY2FsYXJQcm9kdWN0KEEgc2Vjb25kKTsKfQpjbGFzcyBOaWwgZXh0ZW5kcyBTY2FsYXJQcm9kdWN0PE5pbD57CiAgICBOaWwoKXt9CiAgICBwdWJsaWMgSW50ZWdlciBzY2FsYXJQcm9kdWN0KE5pbCBzZWNvbmQpIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KfQpjbGFzcyBDb25zPEEgZXh0ZW5kcyBTY2FsYXJQcm9kdWN0PEE+PiBleHRlbmRzIFNjYWxhclByb2R1Y3Q8Q29uczxBPj57CiAgICBwdWJsaWMgSW50ZWdlciB2YWx1ZTsKICAgIHB1YmxpYyBBIHRhaWw7CiAgICBDb25zKEludGVnZXIgX3ZhbHVlLCBBIF90YWlsKSB7CiAgICAgICAgdmFsdWUgPSBfdmFsdWU7CiAgICAgICAgdGFpbCA9IF90YWlsOwogICAgfQogICAgcHVibGljIEludGVnZXIgc2NhbGFyUHJvZHVjdChDb25zPEE+IHNlY29uZCl7CiAgICAgICAgcmV0dXJuIHZhbHVlICogc2Vjb25kLnZhbHVlICsgdGFpbC5zY2FsYXJQcm9kdWN0KHNlY29uZC50YWlsKTsKICAgIH0KfQpjbGFzcyBfVGVzdHsKICAgIHB1YmxpYyBzdGF0aWMgSW50ZWdlciBtYWluKEludGVnZXIgbil7CiAgICAgICAgcmV0dXJuIF9tYWluKG4sIDAsIG5ldyBOaWwoKSwgbmV3IE5pbCgpKTsKICAgIH0KICAgIHB1YmxpYyBzdGF0aWMgPEEgZXh0ZW5kcyBTY2FsYXJQcm9kdWN0PEE+PiBJbnRlZ2VyIF9tYWluKEludGVnZXIgbiwgSW50ZWdlciBpLCBBIGZpcnN0LCBBIHNlY29uZCl7CiAgICAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICAgICByZXR1cm4gZmlyc3Quc2NhbGFyUHJvZHVjdChzZWNvbmQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBfbWFpbihuLTEsIGkrMSwgbmV3IENvbnM8QT4oMippKzEsZmlyc3QpLCBuZXcgQ29uczxBPihpKmksIHNlY29uZCkpOwogICAgICAgICAgICAvL3JldHVybiBfbWFpbihuLTEsIGkrMSwgZmlyc3QsIG5ldyBDb25zPEE+KGkqaSwgc2Vjb25kKSk7CiAgICAgICAgfQogICAgfQp9CnB1YmxpYyBjbGFzcyBUZXN0ewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIFtdIGFyZ3MpewogICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkVudGVyIGEgbnVtYmVyOiAiKTsKICAgICAgICB0cnkgewogICAgICAgICAgICBCdWZmZXJlZFJlYWRlciBpcyA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CiAgICAgICAgICAgIFN0cmluZyBsaW5lID0gaXMucmVhZExpbmUoKTsKICAgICAgICAgICAgSW50ZWdlciB2YWwgPSBJbnRlZ2VyLnBhcnNlSW50KGxpbmUpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oX1Rlc3QubWFpbih2YWwpKTsKICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJOb3QgYSB2YWxpZCBudW1iZXIiKTsKICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiVW5leHBlY3RlZCBJTyBFUlJPUiIpOwogICAgICAgIH0KICAgIH0KfQ==