/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.math.BigInteger;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
long x = -1501598000831384712L;
long y = -735932670715772870L;
System.
out.
println(hex
(x
) + " * " + hex
(y
) + " = " + hex
(hmul
(x, y
))); }
return String.
format("0x%016x", x
); }
static long hmulbigint(long x, long y) {
if (x < 0) xb = xb.add(c);
if (y < 0) yb = yb.add(c);
return p.shiftRight(64).longValue();
}
static long hmul(long x, long y) {
// split
long xl = x & 0xffffffffL;
long xh = x >>> 32;
long yl = y & 0xffffffffL;
long yh = y >>> 32;
// partial products
long t00 = xl * yl;
long t01 = xh * yl;
long t10 = xl * yh;
long t11 = xh * yh;
// resolve carries
t11 += (t10 >>> 32) + (t01 >>> 32);
long tc = (t10 & 0xffffffffL) + (t01 & 0xffffffffL) + (t00 >>> 32);
t11 += tc >>> 32;
return t11;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJbG9uZyB4ID0gLTE1MDE1OTgwMDA4MzEzODQ3MTJMOwoJCWxvbmcgeSA9IC03MzU5MzI2NzA3MTU3NzI4NzBMOwoJCVN5c3RlbS5vdXQucHJpbnRsbihoZXgoeCkgKyAiICogIiArIGhleCh5KSArICIgPSAiICsgaGV4KGhtdWwoeCwgeSkpKTsKCX0KCQoJc3RhdGljIFN0cmluZyBoZXgobG9uZyB4KSB7CgkJcmV0dXJuIFN0cmluZy5mb3JtYXQoIjB4JTAxNngiLCB4KTsKCX0KCnN0YXRpYyBsb25nIGhtdWxiaWdpbnQobG9uZyB4LCBsb25nIHkpIHsKCUJpZ0ludGVnZXIgYyA9IEJpZ0ludGVnZXIudmFsdWVPZigyKS5wb3coNjQpOwoJQmlnSW50ZWdlciB4YiA9IEJpZ0ludGVnZXIudmFsdWVPZih4KTsKCWlmICh4IDwgMCkgeGIgPSB4Yi5hZGQoYyk7CglCaWdJbnRlZ2VyIHliID0gQmlnSW50ZWdlci52YWx1ZU9mKHkpOwoJaWYgKHkgPCAwKSB5YiA9IHliLmFkZChjKTsKCUJpZ0ludGVnZXIgcCA9IHhiLm11bHRpcGx5KHliKTsKCXJldHVybiBwLnNoaWZ0UmlnaHQoNjQpLmxvbmdWYWx1ZSgpOwp9CgkKCXN0YXRpYyBsb25nIGhtdWwobG9uZyB4LCBsb25nIHkpIHsKICAgIC8vIHNwbGl0CiAgICBsb25nIHhsID0geCAmIDB4ZmZmZmZmZmZMOwogICAgbG9uZyB4aCA9IHggPj4+IDMyOwogICAgbG9uZyB5bCA9IHkgJiAweGZmZmZmZmZmTDsKICAgIGxvbmcgeWggPSB5ID4+PiAzMjsKICAgIC8vIHBhcnRpYWwgcHJvZHVjdHMKICAgIGxvbmcgdDAwID0geGwgKiB5bDsKICAgIGxvbmcgdDAxID0geGggKiB5bDsKICAgIGxvbmcgdDEwID0geGwgKiB5aDsKICAgIGxvbmcgdDExID0geGggKiB5aDsKICAgIC8vIHJlc29sdmUgY2FycmllcwogICAgdDExICs9ICh0MTAgPj4+IDMyKSArICh0MDEgPj4+IDMyKTsKICAgIGxvbmcgdGMgPSAodDEwICYgMHhmZmZmZmZmZkwpICsgKHQwMSAmIDB4ZmZmZmZmZmZMKSArICh0MDAgPj4+IDMyKTsKICAgIHQxMSArPSB0YyA+Pj4gMzI7CiAgICByZXR1cm4gdDExOwp9Cn0=