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 , ( A) new Cons< A> ( 2 * i+ 1 ,first) , 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+PiBJbnRlZ2VyIF9tYWluKEludGVnZXIgbiwgSW50ZWdlciBpLCBBIGZpcnN0LCBBIHNlY29uZCl7CiAgICAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICAgICByZXR1cm4gZmlyc3Quc2NhbGFyUHJvZHVjdChzZWNvbmQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBfbWFpbihuLTEsIGkrMSwgKEEpIG5ldyBDb25zPEE+KDIqaSsxLGZpcnN0KSwgc2Vjb25kKTsKICAgICAgICAgICAgLy9yZXR1cm4gX21haW4obi0xLCBpKzEsIG5ldyBDb25zPEE+KDIqaSsxLGZpcnN0KSwgbmV3IENvbnM8QT4oaSppLCBzZWNvbmQpKTsKICAgICAgICAgICAgLy9yZXR1cm4gX21haW4obi0xLCBpKzEsIGZpcnN0LCBuZXcgQ29uczxBPihpKmksIHNlY29uZCkpOwogICAgICAgIH0KICAgIH0KfQpjbGFzcyBUZXN0ewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIFtdIGFyZ3MpewogICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkVudGVyIGEgbnVtYmVyOiAiKTsKICAgICAgICB0cnkgewogICAgICAgICAgICBCdWZmZXJlZFJlYWRlciBpcyA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CiAgICAgICAgICAgIFN0cmluZyBsaW5lID0gaXMucmVhZExpbmUoKTsKICAgICAgICAgICAgSW50ZWdlciB2YWwgPSBJbnRlZ2VyLnBhcnNlSW50KGxpbmUpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oX1Rlc3QubWFpbih2YWwpKTsKICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJOb3QgYSB2YWxpZCBudW1iZXIiKTsKICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiVW5leHBlY3RlZCBJTyBFUlJPUiIpOwogICAgICAgIH0KICAgIH0KfQ==