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));
}
}
}
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+KGkqaSwgc2Vjb25kKSk7CiAgICAgICAgfQogICAgfQp9CmNsYXNzIFRlc3R7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgW10gYXJncyl7CiAgICAgICAgU3lzdGVtLm91dC5wcmludCgiRW50ZXIgYSBudW1iZXI6ICIpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGlzID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKICAgICAgICAgICAgU3RyaW5nIGxpbmUgPSBpcy5yZWFkTGluZSgpOwogICAgICAgICAgICBJbnRlZ2VyIHZhbCA9IEludGVnZXIucGFyc2VJbnQobGluZSk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihfVGVzdC5tYWluKHZhbCkpOwogICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIk5vdCBhIHZhbGlkIG51bWJlciIpOwogICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJVbmV4cGVjdGVkIElPIEVSUk9SIik7CiAgICAgICAgfQogICAgfQp9