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<Cons<A>>(i, new Cons<A>(2*i+1,first)), new Cons<Cons<A>>(i, new Cons<A>(i*i, second)));
//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+PiBJbnRlZ2VyIF9tYWluKEludGVnZXIgbiwgSW50ZWdlciBpLCBBIGZpcnN0LCBBIHNlY29uZCl7CiAgICAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICAgICByZXR1cm4gZmlyc3Quc2NhbGFyUHJvZHVjdChzZWNvbmQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBfbWFpbihuLTEsIGkrMSwgbmV3IENvbnM8Q29uczxBPj4oaSwgbmV3IENvbnM8QT4oMippKzEsZmlyc3QpKSwgbmV3IENvbnM8Q29uczxBPj4oaSwgbmV3IENvbnM8QT4oaSppLCBzZWNvbmQpKSk7CiAgICAgICAgICAgIC8vcmV0dXJuIF9tYWluKG4tMSwgaSsxLCBuZXcgQ29uczxBPigyKmkrMSxmaXJzdCksIG5ldyBDb25zPEE+KGkqaSwgc2Vjb25kKSk7CiAgICAgICAgICAgIC8vcmV0dXJuIF9tYWluKG4tMSwgaSsxLCBmaXJzdCwgbmV3IENvbnM8QT4oaSppLCBzZWNvbmQpKTsKICAgICAgICB9CiAgICB9Cn0KY2xhc3MgVGVzdHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBbXSBhcmdzKXsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJFbnRlciBhIG51bWJlcjogIik7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgQnVmZmVyZWRSZWFkZXIgaXMgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwogICAgICAgICAgICBTdHJpbmcgbGluZSA9IGlzLnJlYWRMaW5lKCk7CiAgICAgICAgICAgIEludGVnZXIgdmFsID0gSW50ZWdlci5wYXJzZUludChsaW5lKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKF9UZXN0Lm1haW4odmFsKSk7CiAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiTm90IGEgdmFsaWQgbnVtYmVyIik7CiAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewogICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlVuZXhwZWN0ZWQgSU8gRVJST1IiKTsKICAgICAgICB9CiAgICB9Cn0=