/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.math.BigInteger;
import java.nio.ByteBuffer;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static byte[] multiply
(final byte[] a,
final byte[] b,
final BigInteger mod,
int maxLen
) {
byte[] res;
if(out.toByteArray().length > maxLen) {
// TODO: cheat is here. Sometimes invalid leading zero byte is included into output
// http://stackoverflow.com/questions/40657861/leading-zero-in-biginteger-multiplication
res = new byte[maxLen];
System.
arraycopy(out.
toByteArray(), out.
toByteArray().
length - maxLen, res,
0, maxLen
); System.
out.
println("Multiply: "+ Arrays.
toString(out.
toByteArray()) + "\n"); } else {
res = out.toByteArray();
}
return res;
}
public static void testMult() {
byte[] m1 = { 43, 108, 108, 97, 41, 61, 51, -99, -105, -118, 25, 32, 112, -49, 71, -81, -64, 66, -14, -52, -90, -115, 9, 123, 103, 103, -106, -44, -59, -73, -22, 16, -16, -15, 50, 17, -48, -56, 11, 29, 40, 54, -30, 40, 77, -103, 5, -80, 40, 0, 59, -29, 20, -126, 35, -5, -76, -28, -26, 68, -120, -16, 9, -98, 95, 55, 113, -61, 13, -10, 126, 36, 104, -30, -84, -45, -39, 124, 89, 1, 67, -112, 118, 33, -94, -66, 47, -114, 34, 123, 127, 44, -28, 24, 112, -68, -13, 96, -15, -108, 108, -58, -95, -87, -71, -18, 51, -34, 28, 121, 85, 71, 30, -55, -81, 104, 36, -43, -91, 78, 11, -14, 62, -36, 107, -77, 103, -121, 90, -76, 63, 110, -124, 39, 22, 114, -7, -82, -73, -38, 10, -118, -47, 0, -97, -41, -58, 92, -43, -18, 102, 50, -101, -81, 84, -83, 125, -34, -89, -63, 11, -81, 109, 11, -18, -127, 20, -95, 123, -54, 87, -33, 23, 12, -27, -54, 19, 92, 81, -111, -16, -11, 96, 13, -60, 53, -115, 118, 54, 92, 25, 14, 116, -4, 62, -72, -97, -37, -68, -36, 99, -9, -59, -68, -83, -115, -100, -64, 0, 45, 61, 20, -101, -4, 73, 87, 64, 126, 88, -3, 48, -113, 8, 4, -13, 115, -100, -55, 70, -115, -8, -110, -88, -93, -98, -44, 34, 108, 23, -72, 65, -51, -2, 67, -111, -89, 89, -126, -61, 7, 29, -106, -9, 105, -4, -59 };
byte[] m2 = { 102, -127, -18, -125, -22, 86, 87, -103, 6, 6, -42, 21, 57, 21, 38, -100, 24, 30, 7, -33, 50, -125, 120, -12, 99, 20, 127, 77, -21, 114, 26, -97, -81, 106, -86, -73, -70, 16, 98, -122, -114, -125, 127, -45, 96, 30, 89, 26, 119, -13, 19, 79, 47, 95, 37, 43, 59, 21, -26, -22, -8, 21, -127, 71, 45, -73, -1, -25, 83, -97, 92, 60, 83, -21, 93, -54, 83, -75, -34, -50, -81, 47, -46, -84, -20, 3, -7, 70, 66, 77, -55, -101, 95, -65, 30, -78, 28, 41, -63, 59, 2, -98, -118, 125, 122, -4, -62, -123, -82, -79, -30, 105, 40, -6, -21, -33, -95, 63, 69, -56, 122, -87, -118, 120, 44, 39, -125, -36, 70, 21, 11, -10, 48, -69, -108, -119, -1, -41, 123, -33, -109, -37, -69, 39, -104, 10, 10, 12, 14, 42, -38, -91, -2, 69, -128, -36, -89, -6, 41, 64, -115, 87, 91, -118, 80, 112, -1, -24, 49, 89, 88, 40, -58, -50, 57, 97, 41, -113, 21, 89, -89, 92, -42, 72, 92, -73, 2, 118, 71, 48, -92, -19, 32, 114, 101, -120, 46, -99, -35, 67, 36, 85, -116, 93, -95, -78, -10, -98, -99, -18, 94, -49, 87, 30, 24, -88, -86, -65, 96, 46, -71, 35, 97, 114, 6, 8, 22, -52, -112, -67, -107, -48, -51, 27, 81, -109, -99, -111, 47, -120, 27, 107, 104, 17, 86, -99, -50, -54, 23, -111, 124, 39, -18, 24, -89, -63};
byte[] m3 = { 16, -22, 29, -68, 35, -30, -126, 122, -95, -30, -121, -55, -90, -27, -122, -49, 127, 50, 47, -78, 96, -35, 63, 28, -113, 43, 73, 106, -19, -89, 122, 122, -67, 55, -60, 88, 46, -123, -95, -65, -12, 37, -68, 31, 10, -61, 97, -128, 30, -28, -7, 46, 49, -114, -26, 26, -34, -19, 76, 83, 111, 114, -13, 110, -33, 66, -123, -61, -69, 18, -115, -51, 12, 79, -54, -106, -47, -111, 14, -28, 98, 95, 1, -32, 2, -59, -44, -58, 7, 29, -18, -80, 7, 66, 61, 90, 40, 52, -121, 29, -43, 91, 35, 29, -59, 56, 73, -2, -26, -34, 15, 86, -108, -128, -81, -47, -101, -29, -45, 64, -126, 63, 10, 46, 3, 120, 45, -117, -104, 84, -73, 18, 122, -12, -121, 27, 8, -45, -53, -103, -7, -96, -56, 28, 97, 101, 127, -14, 48, -75, -100, -59, 99, -60, -105, 72, -73, -45, -120, -58, -9, 68, -66, 4, -32, 36, 87, -8, 10, -32, -28, -27, 21, 37, -42, -42, 109, 33, -24, -26, -31, 127, -68, -122, -49, 1, 32, 124, 126, -2, 79, -6, 8, 21, -50, -1, 105, 70, -69, 117, 79, 41, -83, -78, 61, -8, 3, -36, 41, -122, -35, 82, -19, 58, 0, 25, -44, 23, -49, -113, 97, -99, -50, 124, -124, 62, 24, 49, -125, -59, 45, -57, 106, -3, -91, 89, 12, 13, 12, 22, -102, 100, -5, -54, 76, 2, 116, 22, 10, -118, -30, -29, -22, 112, 90, -103};
byte[] m4 = { 90, 79, 64, -21, 13, -5, 3, 29, 45, 123, 48, -12, -67, -5, -64, -34, -75, -53, -36, 70, -108, -93, 107, -90, -34, -87, 40, -106, 56, -127, -56, 117, 51, 80, -45, 121, 3, 44, -120, -69, -62, -104, -115, -20, -106, 102, 10, 85, -16, 111, 110, 89, 83, 1, -103, 71, -120, 115, 30, -69, 65, -14, 123, -47, 41, -7, -20, -11, 28, 49, 18, 81, -95, -14, -51, 84, 21, -72, -47, -8, 73, -17, 1, -61, 42, -104, 14, 26, -68, -67, 106, 91, -82, -18, -125, 59, 21, -30, 74, 22, -11, -56, -82, 119, -83, 7, -60, -8, -113, -38, -113, -85, -117, -15, 105, 4, 119, -61, 31, -51, -66, 117, -115, 31, -46, 81, 17, 87, -96, 113, 75, 15, -31, 125, 43, -46, 83, 55, 87, 40, 63, 47, -103, -31, 126, -73, -84, 92, -65, 82, -50, 118, -2, 29, -128, -107, -27, -34, 74, -2, 3, 22, 36, 108, 84, 54, -39, 61, 59, 41, 26, 70, 32, 122, 74, 105, 95, -44, -69, -67, -15, 11, -127, -54, -92, -87, -32, -78, -124, -127, 0, 121, -123, -109, -55, 28, 11, 5, 13, -14, 105, -59, 35, -62, 38, -94, -18, 50, 33, 6, -120, 95, 63, 40, -106, 107, -19, 15, 73, 65, 106, 90, -67, -27, 10, -38, -126, 7, -107, -10, 18, 58, 101, -61, 96, -123, -97, -17, -53, -21, -39, 74, -26, 58, -105, 125, 26, 114, -44, 116, 1, 41, -37, -70, 123, -97};
"16351918650768978043869013339271504618848306664769786637083871417499863492621523650680395902908290692848691697426297583224262914449002372394629805288508460081625786815395630974011238042238105199176933520314793238046209458405056744497573835125168991458506069871082629403535849021448001723362252726371892637961695839791672366699134575105403064855071511479575075090590810224041268094422584578404194047140054082717484362241173803709366976384725499363410565198819506909824058153243708460440060433627618416841389222303324952075845712297535638608064468891922143510227981747143673880908282600492143501254973420544650272588129");
System.
out.
println("Multiply: "+ Arrays.
toString(multiply
(m1, m2, modulus,
256))); System.
out.
println("Multiply: "+ Arrays.
toString(multiply
(m3, m4, modulus,
256))); }
{
testMult();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CmltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CgkgcHJpdmF0ZSBzdGF0aWMgYnl0ZVtdIG11bHRpcGx5KGZpbmFsIGJ5dGVbXSBhLCBmaW5hbCBieXRlW10gYiwgZmluYWwgQmlnSW50ZWdlciBtb2QsIGludCBtYXhMZW4pIHsKICAgICAgICBCaWdJbnRlZ2VyIE0xID0gbmV3IEJpZ0ludGVnZXIoMSwgYSk7CiAgICAgICAgQmlnSW50ZWdlciBNMiA9IG5ldyBCaWdJbnRlZ2VyKDEsIGIpOwoKICAgICAgICBCaWdJbnRlZ2VyIG91dCA9IE0xLm11bHRpcGx5KE0yKS5tb2QobW9kKTsKCiAgICAgICAgYnl0ZVtdIHJlczsKCiAgICAgICAgaWYob3V0LnRvQnl0ZUFycmF5KCkubGVuZ3RoID4gbWF4TGVuKSB7CiAgICAgICAgICAgIC8vIFRPRE86IGNoZWF0IGlzIGhlcmUuIFNvbWV0aW1lcyBpbnZhbGlkIGxlYWRpbmcgemVybyBieXRlIGlzIGluY2x1ZGVkIGludG8gb3V0cHV0CiAgICAgICAgICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDA2NTc4NjEvbGVhZGluZy16ZXJvLWluLWJpZ2ludGVnZXItbXVsdGlwbGljYXRpb24KICAgICAgICAgICAgcmVzID0gbmV3IGJ5dGVbbWF4TGVuXTsKICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShvdXQudG9CeXRlQXJyYXkoKSwgb3V0LnRvQnl0ZUFycmF5KCkubGVuZ3RoIC0gbWF4TGVuLCByZXMsIDAsIG1heExlbik7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTXVsdGlwbHk6ICIrIEFycmF5cy50b1N0cmluZyhvdXQudG9CeXRlQXJyYXkoKSkgKyAiXG4iKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXMgPSBvdXQudG9CeXRlQXJyYXkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXM7CiAgICB9CiAgICAKCXB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0TXVsdCgpIHsKICAgICAgICBieXRlW10gbTEgPSB7IDQzLCAxMDgsIDEwOCwgOTcsIDQxLCA2MSwgNTEsIC05OSwgLTEwNSwgLTExOCwgMjUsIDMyLCAxMTIsIC00OSwgNzEsIC04MSwgLTY0LCA2NiwgLTE0LCAtNTIsIC05MCwgLTExNSwgOSwgMTIzLCAxMDMsIDEwMywgLTEwNiwgLTQ0LCAtNTksIC03MywgLTIyLCAxNiwgLTE2LCAtMTUsIDUwLCAxNywgLTQ4LCAtNTYsIDExLCAyOSwgNDAsIDU0LCAtMzAsIDQwLCA3NywgLTEwMywgNSwgLTgwLCA0MCwgMCwgNTksIC0yOSwgMjAsIC0xMjYsIDM1LCAtNSwgLTc2LCAtMjgsIC0yNiwgNjgsIC0xMjAsIC0xNiwgOSwgLTk4LCA5NSwgNTUsIDExMywgLTYxLCAxMywgLTEwLCAxMjYsIDM2LCAxMDQsIC0zMCwgLTg0LCAtNDUsIC0zOSwgMTI0LCA4OSwgMSwgNjcsIC0xMTIsIDExOCwgMzMsIC05NCwgLTY2LCA0NywgLTExNCwgMzQsIDEyMywgMTI3LCA0NCwgLTI4LCAyNCwgMTEyLCAtNjgsIC0xMywgOTYsIC0xNSwgLTEwOCwgMTA4LCAtNTgsIC05NSwgLTg3LCAtNzEsIC0xOCwgNTEsIC0zNCwgMjgsIDEyMSwgODUsIDcxLCAzMCwgLTU1LCAtODEsIDEwNCwgMzYsIC00MywgLTkxLCA3OCwgMTEsIC0xNCwgNjIsIC0zNiwgMTA3LCAtNzcsIDEwMywgLTEyMSwgOTAsIC03NiwgNjMsIDExMCwgLTEyNCwgMzksIDIyLCAxMTQsIC03LCAtODIsIC03MywgLTM4LCAxMCwgLTExOCwgLTQ3LCAwLCAtOTcsIC00MSwgLTU4LCA5MiwgLTQzLCAtMTgsIDEwMiwgNTAsIC0xMDEsIC04MSwgODQsIC04MywgMTI1LCAtMzQsIC04OSwgLTYzLCAxMSwgLTgxLCAxMDksIDExLCAtMTgsIC0xMjcsIDIwLCAtOTUsIDEyMywgLTU0LCA4NywgLTMzLCAyMywgMTIsIC0yNywgLTU0LCAxOSwgOTIsIDgxLCAtMTExLCAtMTYsIC0xMSwgOTYsIDEzLCAtNjAsIDUzLCAtMTE1LCAxMTgsIDU0LCA5MiwgMjUsIDE0LCAxMTYsIC00LCA2MiwgLTcyLCAtOTcsIC0zNywgLTY4LCAtMzYsIDk5LCAtOSwgLTU5LCAtNjgsIC04MywgLTExNSwgLTEwMCwgLTY0LCAwLCA0NSwgNjEsIDIwLCAtMTAxLCAtNCwgNzMsIDg3LCA2NCwgMTI2LCA4OCwgLTMsIDQ4LCAtMTEzLCA4LCA0LCAtMTMsIDExNSwgLTEwMCwgLTU1LCA3MCwgLTExNSwgLTgsIC0xMTAsIC04OCwgLTkzLCAtOTgsIC00NCwgMzQsIDEwOCwgMjMsIC03MiwgNjUsIC01MSwgLTIsIDY3LCAtMTExLCAtODksIDg5LCAtMTI2LCAtNjEsIDcsIDI5LCAtMTA2LCAtOSwgMTA1LCAtNCwgLTU5IH07CiAgICAgICAgYnl0ZVtdIG0yID0geyAxMDIsIC0xMjcsIC0xOCwgLTEyNSwgLTIyLCA4NiwgODcsIC0xMDMsIDYsIDYsIC00MiwgMjEsIDU3LCAyMSwgMzgsIC0xMDAsIDI0LCAzMCwgNywgLTMzLCA1MCwgLTEyNSwgMTIwLCAtMTIsIDk5LCAyMCwgMTI3LCA3NywgLTIxLCAxMTQsIDI2LCAtOTcsIC04MSwgMTA2LCAtODYsIC03MywgLTcwLCAxNiwgOTgsIC0xMjIsIC0xMTQsIC0xMjUsIDEyNywgLTQ1LCA5NiwgMzAsIDg5LCAyNiwgMTE5LCAtMTMsIDE5LCA3OSwgNDcsIDk1LCAzNywgNDMsIDU5LCAyMSwgLTI2LCAtMjIsIC04LCAyMSwgLTEyNywgNzEsIDQ1LCAtNzMsIC0xLCAtMjUsIDgzLCAtOTcsIDkyLCA2MCwgODMsIC0yMSwgOTMsIC01NCwgODMsIC03NSwgLTM0LCAtNTAsIC04MSwgNDcsIC00NiwgLTg0LCAtMjAsIDMsIC03LCA3MCwgNjYsIDc3LCAtNTUsIC0xMDEsIDk1LCAtNjUsIDMwLCAtNzgsIDI4LCA0MSwgLTYzLCA1OSwgMiwgLTk4LCAtMTE4LCAxMjUsIDEyMiwgLTQsIC02MiwgLTEyMywgLTgyLCAtNzksIC0zMCwgMTA1LCA0MCwgLTYsIC0yMSwgLTMzLCAtOTUsIDYzLCA2OSwgLTU2LCAxMjIsIC04NywgLTExOCwgMTIwLCA0NCwgMzksIC0xMjUsIC0zNiwgNzAsIDIxLCAxMSwgLTEwLCA0OCwgLTY5LCAtMTA4LCAtMTE5LCAtMSwgLTQxLCAxMjMsIC0zMywgLTEwOSwgLTM3LCAtNjksIDM5LCAtMTA0LCAxMCwgMTAsIDEyLCAxNCwgNDIsIC0zOCwgLTkxLCAtMiwgNjksIC0xMjgsIC0zNiwgLTg5LCAtNiwgNDEsIDY0LCAtMTE1LCA4NywgOTEsIC0xMTgsIDgwLCAxMTIsIC0xLCAtMjQsIDQ5LCA4OSwgODgsIDQwLCAtNTgsIC01MCwgNTcsIDk3LCA0MSwgLTExMywgMjEsIDg5LCAtODksIDkyLCAtNDIsIDcyLCA5MiwgLTczLCAyLCAxMTgsIDcxLCA0OCwgLTkyLCAtMTksIDMyLCAxMTQsIDEwMSwgLTEyMCwgNDYsIC05OSwgLTM1LCA2NywgMzYsIDg1LCAtMTE2LCA5MywgLTk1LCAtNzgsIC0xMCwgLTk4LCAtOTksIC0xOCwgOTQsIC00OSwgODcsIDMwLCAyNCwgLTg4LCAtODYsIC02NSwgOTYsIDQ2LCAtNzEsIDM1LCA5NywgMTE0LCA2LCA4LCAyMiwgLTUyLCAtMTEyLCAtNjcsIC0xMDcsIC00OCwgLTUxLCAyNywgODEsIC0xMDksIC05OSwgLTExMSwgNDcsIC0xMjAsIDI3LCAxMDcsIDEwNCwgMTcsIDg2LCAtOTksIC01MCwgLTU0LCAyMywgLTExMSwgMTI0LCAzOSwgLTE4LCAyNCwgLTg5LCAtNjN9OwoKICAgICAgICBieXRlW10gbTMgPSB7IDE2LCAtMjIsIDI5LCAtNjgsIDM1LCAtMzAsIC0xMjYsIDEyMiwgLTk1LCAtMzAsIC0xMjEsIC01NSwgLTkwLCAtMjcsIC0xMjIsIC00OSwgMTI3LCA1MCwgNDcsIC03OCwgOTYsIC0zNSwgNjMsIDI4LCAtMTEzLCA0MywgNzMsIDEwNiwgLTE5LCAtODksIDEyMiwgMTIyLCAtNjcsIDU1LCAtNjAsIDg4LCA0NiwgLTEyMywgLTk1LCAtNjUsIC0xMiwgMzcsIC02OCwgMzEsIDEwLCAtNjEsIDk3LCAtMTI4LCAzMCwgLTI4LCAtNywgNDYsIDQ5LCAtMTE0LCAtMjYsIDI2LCAtMzQsIC0xOSwgNzYsIDgzLCAxMTEsIDExNCwgLTEzLCAxMTAsIC0zMywgNjYsIC0xMjMsIC02MSwgLTY5LCAxOCwgLTExNSwgLTUxLCAxMiwgNzksIC01NCwgLTEwNiwgLTQ3LCAtMTExLCAxNCwgLTI4LCA5OCwgOTUsIDEsIC0zMiwgMiwgLTU5LCAtNDQsIC01OCwgNywgMjksIC0xOCwgLTgwLCA3LCA2NiwgNjEsIDkwLCA0MCwgNTIsIC0xMjEsIDI5LCAtNDMsIDkxLCAzNSwgMjksIC01OSwgNTYsIDczLCAtMiwgLTI2LCAtMzQsIDE1LCA4NiwgLTEwOCwgLTEyOCwgLTgxLCAtNDcsIC0xMDEsIC0yOSwgLTQ1LCA2NCwgLTEyNiwgNjMsIDEwLCA0NiwgMywgMTIwLCA0NSwgLTExNywgLTEwNCwgODQsIC03MywgMTgsIDEyMiwgLTEyLCAtMTIxLCAyNywgOCwgLTQ1LCAtNTMsIC0xMDMsIC03LCAtOTYsIC01NiwgMjgsIDk3LCAxMDEsIDEyNywgLTE0LCA0OCwgLTc1LCAtMTAwLCAtNTksIDk5LCAtNjAsIC0xMDUsIDcyLCAtNzMsIC00NSwgLTEyMCwgLTU4LCAtOSwgNjgsIC02NiwgNCwgLTMyLCAzNiwgODcsIC04LCAxMCwgLTMyLCAtMjgsIC0yNywgMjEsIDM3LCAtNDIsIC00MiwgMTA5LCAzMywgLTI0LCAtMjYsIC0zMSwgMTI3LCAtNjgsIC0xMjIsIC00OSwgMSwgMzIsIDEyNCwgMTI2LCAtMiwgNzksIC02LCA4LCAyMSwgLTUwLCAtMSwgMTA1LCA3MCwgLTY5LCAxMTcsIDc5LCA0MSwgLTgzLCAtNzgsIDYxLCAtOCwgMywgLTM2LCA0MSwgLTEyMiwgLTM1LCA4MiwgLTE5LCA1OCwgMCwgMjUsIC00NCwgMjMsIC00OSwgLTExMywgOTcsIC05OSwgLTUwLCAxMjQsIC0xMjQsIDYyLCAyNCwgNDksIC0xMjUsIC01OSwgNDUsIC01NywgMTA2LCAtMywgLTkxLCA4OSwgMTIsIDEzLCAxMiwgMjIsIC0xMDIsIDEwMCwgLTUsIC01NCwgNzYsIDIsIDExNiwgMjIsIDEwLCAtMTE4LCAtMzAsIC0yOSwgLTIyLCAxMTIsIDkwLCAtMTAzfTsKICAgICAgICBieXRlW10gbTQgPSB7IDkwLCA3OSwgNjQsIC0yMSwgMTMsIC01LCAzLCAyOSwgNDUsIDEyMywgNDgsIC0xMiwgLTY3LCAtNSwgLTY0LCAtMzQsIC03NSwgLTUzLCAtMzYsIDcwLCAtMTA4LCAtOTMsIDEwNywgLTkwLCAtMzQsIC04NywgNDAsIC0xMDYsIDU2LCAtMTI3LCAtNTYsIDExNywgNTEsIDgwLCAtNDUsIDEyMSwgMywgNDQsIC0xMjAsIC02OSwgLTYyLCAtMTA0LCAtMTE1LCAtMjAsIC0xMDYsIDEwMiwgMTAsIDg1LCAtMTYsIDExMSwgMTEwLCA4OSwgODMsIDEsIC0xMDMsIDcxLCAtMTIwLCAxMTUsIDMwLCAtNjksIDY1LCAtMTQsIDEyMywgLTQ3LCA0MSwgLTcsIC0yMCwgLTExLCAyOCwgNDksIDE4LCA4MSwgLTk1LCAtMTQsIC01MSwgODQsIDIxLCAtNzIsIC00NywgLTgsIDczLCAtMTcsIDEsIC02MSwgNDIsIC0xMDQsIDE0LCAyNiwgLTY4LCAtNjcsIDEwNiwgOTEsIC04MiwgLTE4LCAtMTI1LCA1OSwgMjEsIC0zMCwgNzQsIDIyLCAtMTEsIC01NiwgLTgyLCAxMTksIC04MywgNywgLTYwLCAtOCwgLTExMywgLTM4LCAtMTEzLCAtODUsIC0xMTcsIC0xNSwgMTA1LCA0LCAxMTksIC02MSwgMzEsIC01MSwgLTY2LCAxMTcsIC0xMTUsIDMxLCAtNDYsIDgxLCAxNywgODcsIC05NiwgMTEzLCA3NSwgMTUsIC0zMSwgMTI1LCA0MywgLTQ2LCA4MywgNTUsIDg3LCA0MCwgNjMsIDQ3LCAtMTAzLCAtMzEsIDEyNiwgLTczLCAtODQsIDkyLCAtNjUsIDgyLCAtNTAsIDExOCwgLTIsIDI5LCAtMTI4LCAtMTA3LCAtMjcsIC0zNCwgNzQsIC0yLCAzLCAyMiwgMzYsIDEwOCwgODQsIDU0LCAtMzksIDYxLCA1OSwgNDEsIDI2LCA3MCwgMzIsIDEyMiwgNzQsIDEwNSwgOTUsIC00NCwgLTY5LCAtNjcsIC0xNSwgMTEsIC0xMjcsIC01NCwgLTkyLCAtODcsIC0zMiwgLTc4LCAtMTI0LCAtMTI3LCAwLCAxMjEsIC0xMjMsIC0xMDksIC01NSwgMjgsIDExLCA1LCAxMywgLTE0LCAxMDUsIC01OSwgMzUsIC02MiwgMzgsIC05NCwgLTE4LCA1MCwgMzMsIDYsIC0xMjAsIDk1LCA2MywgNDAsIC0xMDYsIDEwNywgLTE5LCAxNSwgNzMsIDY1LCAxMDYsIDkwLCAtNjcsIC0yNywgMTAsIC0zOCwgLTEyNiwgNywgLTEwNywgLTEwLCAxOCwgNTgsIDEwMSwgLTYxLCA5NiwgLTEyMywgLTk3LCAtMTcsIC01MywgLTIxLCAtMzksIDc0LCAtMjYsIDU4LCAtMTA1LCAxMjUsIDI2LCAxMTQsIC00NCwgMTE2LCAxLCA0MSwgLTM3LCAtNzAsIDEyMywgLTk3fTsKCiAgICAgICAgQmlnSW50ZWdlciBtb2R1bHVzID0gbmV3IEJpZ0ludGVnZXIoCiAgICAgICAgICAgICAgICAiMTYzNTE5MTg2NTA3Njg5NzgwNDM4NjkwMTMzMzkyNzE1MDQ2MTg4NDgzMDY2NjQ3Njk3ODY2MzcwODM4NzE0MTc0OTk4NjM0OTI2MjE1MjM2NTA2ODAzOTU5MDI5MDgyOTA2OTI4NDg2OTE2OTc0MjYyOTc1ODMyMjQyNjI5MTQ0NDkwMDIzNzIzOTQ2Mjk4MDUyODg1MDg0NjAwODE2MjU3ODY4MTUzOTU2MzA5NzQwMTEyMzgwNDIyMzgxMDUxOTkxNzY5MzM1MjAzMTQ3OTMyMzgwNDYyMDk0NTg0MDUwNTY3NDQ0OTc1NzM4MzUxMjUxNjg5OTE0NTg1MDYwNjk4NzEwODI2Mjk0MDM1MzU4NDkwMjE0NDgwMDE3MjMzNjIyNTI3MjYzNzE4OTI2Mzc5NjE2OTU4Mzk3OTE2NzIzNjY2OTkxMzQ1NzUxMDU0MDMwNjQ4NTUwNzE1MTE0Nzk1NzUwNzUwOTA1OTA4MTAyMjQwNDEyNjgwOTQ0MjI1ODQ1Nzg0MDQxOTQwNDcxNDAwNTQwODI3MTc0ODQzNjIyNDExNzM4MDM3MDkzNjY5NzYzODQ3MjU0OTkzNjM0MTA1NjUxOTg4MTk1MDY5MDk4MjQwNTgxNTMyNDM3MDg0NjA0NDAwNjA0MzM2Mjc2MTg0MTY4NDEzODkyMjIzMDMzMjQ5NTIwNzU4NDU3MTIyOTc1MzU2Mzg2MDgwNjQ0Njg4OTE5MjIxNDM1MTAyMjc5ODE3NDcxNDM2NzM4ODA5MDgyODI2MDA0OTIxNDM1MDEyNTQ5NzM0MjA1NDQ2NTAyNzI1ODgxMjkiKTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJNdWx0aXBseTogIisgQXJyYXlzLnRvU3RyaW5nKG11bHRpcGx5KG0xLCBtMiwgbW9kdWx1cywgMjU2KSkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTXVsdGlwbHk6ICIrIEFycmF5cy50b1N0cmluZyhtdWx0aXBseShtMywgbTQsIG1vZHVsdXMsIDI1NikpKTsKICAgIH0KICAgIAoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJdGVzdE11bHQoKTsKCX0KfQ==
Multiply: [0, -127, 98, 115, -101, -33, -118, 24, 23, 101, -54, -18, -19, 18, 119, -57, -30, -82, 94, -67, 35, 103, 120, 116, -66, 3, -1, -28, -93, -25, 74, -57, 12, 87, -33, 114, 3, 87, -60, 62, -51, 55, 6, 76, 120, 50, -26, 7, 121, 66, 81, -101, -76, -127, 13, 92, 29, -86, -84, 2, 126, -115, 23, 123, -35, 1, 104, -112, -46, 85, -54, -25, -105, 42, -59, 67, 16, 10, -78, -46, -90, 19, -1, 74, -34, 3, -123, 16, -33, -102, 116, 78, 61, -82, 15, -98, 123, -70, -61, 66, -8, -55, -64, 0, -21, 23, 15, 68, 17, 121, 57, 99, 113, -19, -49, -116, 64, -108, -78, 116, -89, 10, 10, 126, -99, -15, 66, -91, -126, 22, -81, 1, -64, 58, 110, 19, 104, 124, -10, 5, -26, -109, -16, 24, 17, -108, -115, 30, 65, 121, -96, -32, 23, 26, 68, -47, 114, -7, 21, 10, -81, -76, -116, -87, 49, 15, -6, 43, -49, 78, -98, 32, -21, -89, -70, -32, 126, -5, 33, -89, -98, 49, -116, 40, 88, 68, 117, 123, 11, 46, 92, 87, 21, -52, 98, -54, -77, 23, 57, -127, -32, -103, -113, 89, -24, -23, -69, 48, 7, 123, -98, -5, -82, -91, 32, 19, 32, -115, 23, -101, -9, -99, -92, 44, -12, -50, 50, 41, 79, -23, 22, -123, -90, -124, 33, 70, 85, -77, -16, -95, -88, 113, -113, -100, 112, -110, 104, -79, 52, 5, 98, 27, 38, 93, -60, 94, 105]
Multiply: [-127, 98, 115, -101, -33, -118, 24, 23, 101, -54, -18, -19, 18, 119, -57, -30, -82, 94, -67, 35, 103, 120, 116, -66, 3, -1, -28, -93, -25, 74, -57, 12, 87, -33, 114, 3, 87, -60, 62, -51, 55, 6, 76, 120, 50, -26, 7, 121, 66, 81, -101, -76, -127, 13, 92, 29, -86, -84, 2, 126, -115, 23, 123, -35, 1, 104, -112, -46, 85, -54, -25, -105, 42, -59, 67, 16, 10, -78, -46, -90, 19, -1, 74, -34, 3, -123, 16, -33, -102, 116, 78, 61, -82, 15, -98, 123, -70, -61, 66, -8, -55, -64, 0, -21, 23, 15, 68, 17, 121, 57, 99, 113, -19, -49, -116, 64, -108, -78, 116, -89, 10, 10, 126, -99, -15, 66, -91, -126, 22, -81, 1, -64, 58, 110, 19, 104, 124, -10, 5, -26, -109, -16, 24, 17, -108, -115, 30, 65, 121, -96, -32, 23, 26, 68, -47, 114, -7, 21, 10, -81, -76, -116, -87, 49, 15, -6, 43, -49, 78, -98, 32, -21, -89, -70, -32, 126, -5, 33, -89, -98, 49, -116, 40, 88, 68, 117, 123, 11, 46, 92, 87, 21, -52, 98, -54, -77, 23, 57, -127, -32, -103, -113, 89, -24, -23, -69, 48, 7, 123, -98, -5, -82, -91, 32, 19, 32, -115, 23, -101, -9, -99, -92, 44, -12, -50, 50, 41, 79, -23, 22, -123, -90, -124, 33, 70, 85, -77, -16, -95, -88, 113, -113, -100, 112, -110, 104, -79, 52, 5, 98, 27, 38, 93, -60, 94, 105]
Multiply: [57, 48, -14, 126, 29, 93, 91, 17, -109, 61, -88, 54, 30, 36, -28, 118, -104, 106, -36, -16, -91, 124, -73, -81, -23, -26, -27, -20, 106, 52, -89, -118, -40, 74, -40, -6, -40, 41, 32, 60, 121, -44, -28, -67, 127, -46, -88, -41, -46, 7, 2, -118, 102, -101, -34, 101, 113, 72, -82, -40, 5, -126, -89, -86, 102, 124, 40, 45, -48, -111, 53, -116, -77, -33, 56, 65, 93, 52, -24, 64, -110, 101, -17, -2, -72, -62, 89, -90, -100, 120, 45, 119, 61, 39, 105, -120, 60, 67, 111, -70, 116, 15, 64, -85, -85, 65, -66, -127, 39, 33, -109, 58, -114, -29, -25, 80, -39, 17, 7, -7, -102, 112, 36, 111, 125, -36, 102, 58, 7, -10, 113, 20, -9, 21, -6, -61, -88, 127, -52, 126, -17, -110, -45, -5, -118, 52, 73, -77, 40, 62, 87, -100, -60, -104, -30, -33, -65, 107, -71, -68, -127, -41, -111, 127, -128, -63, -26, -78, -26, 83, 122, -31, 79, -53, -101, -39, 63, 84, -93, 103, 22, -116, 23, -80, 82, -123, 89, -70, -100, 24, 46, -113, 104, -35, 111, 75, 85, -7, 54, 3, 85, -99, 100, 48, 32, 47, -103, 122, -106, 70, 95, 109, 17, 127, -43, 95, -69, 27, -18, -13, -23, -42, 103, -54, 117, 41, -88, -36, 53, -71, -87, -27, 71, -54, -104, 87, 36, 105, -22, 64, 33, 24, 19, 98, -84, -45, -120, -79, 43, 79, 39, -9, -71, 54, 92, -7]