var array, encoded, value, accum, i, j, k, l;
// Example data
array=[[0,1,-1,-2,-2,0,-1,2],
[0,-1,-1,2,-1,0,2,-1],
[-2,0,-1,2,2,2,2,0],
[-1,1,-2,-2,-1,2,1,-2],
[0,2,-2,0,-2,1,1,2],
[0,0,-1,-1,0,-1,-2,1],
[0,-1,0,-2,-1,-2,-1,1],
[-2,2,-1,2,0,0,2,1],
[2,2,-2,-1,-1,1,-2,-1],
[-1,1,1,-1,1,-1,-1,-2],
[0,0,1,-2,2,2,-2,-2],
[-2,-2,-2,-1,-2,-1,2,-1],
[0,1,-2,1,1,2,1,-1],
[2,-2,-1,2,1,-2,2,-1],
[0,-1,2,-1,0,-2,1,2],
[0,2,-1,-2,0,-2,-2,0],
[2,0,-2,-2,-2,2,0,2],
[-1,-1,-1,1,-2,1,-1,-1],
[-2,2,1,0,-2,-2,-1,1],
[0,0,2,0,0,1,1,0],
[1,1,1,2,-1,2,-1,2],
[1,1,1,2,-2,1,-1,-2],
[2,-1,-2,0,0,1,-1,0],
[-2,-2,1,-1,-1,0,-1,-1],
[-2,1,-2,0,2,2,1,2],
[-2,1,0,1,0,0,0,2],
[-1,-1,-2,-2,-2,-2,-1,2],
[0,2,-2,2,0,0,0,-2],
[2,2,-2,2,1,1,2,2],
[1,-2,-1,-1,0,2,1,-2],
[-2,2,1,1,0,0,-1,1],
[-1,-1,2,-2,1,-1,-2,-1],
[2,2,-2,2,-2,-1,2,1],
[0,-1,2,0,-2,-1,2,-1],
[0,1,0,2,0,-1,1,-2],
[2,-2,-1,-1,-2,1,0,1],
[-1,2,0,2,2,-2,-2,1],
[1,0,0,1,0,0,2,2],
[1,1,2,-2,-2,1,-1,-2],
[-1,-2,2,-2,-2,-1,-1,0],
[-1,1,-1,2,-1,1,-1,-2],
[-1,2,-2,0,0,-1,-2,-2],
[-2,0,0,0,2,-2,-1,0],
[1,-2,2,2,-2,-1,0,2],
[1,-2,0,1,-2,-1,-2,1],
[0,2,-2,2,-1,1,1,-2],
[2,-2,-1,-1,-2,-2,1,-2],
[1,2,-1,1,0,0,2,0],
[1,-1,1,0,-1,-2,1,-2],
[-1,1,-2,-1,0,0,0,2],
[0,-1,-2,2,-1,-1,2,1],
[2,-2,2,0,1,1,-1,-1],
[2,-1,-2,2,-1,-1,0,0],
[-1,1,-1,-2,1,1,2,2],
[1,2,-1,0,-2,-1,-1,0],
[1,1,-1,-1,2,1,-2,0],
[0,0,2,-1,-1,1,1,1],
[0,-1,0,-2,2,2,0,-2],
[-1,2,-1,1,0,0,2,2],
[0,1,2,2,-2,2,1,-1],
[2,-1,0,-2,-2,1,-2,-2],
[-2,-1,2,1,-2,-2,1,2],
[-1,-2,-2,0,-1,-1,-2,2],
[-1,2,1,0,0,-1,2,0],
[-1,-1,1,1,0,-1,1,0],
[2,1,1,2,-2,1,-1,1],
[-1,-2,2,-2,1,1,-1,-1],
[-1,0,-2,1,2,-2,1,-2],
[0,0,1,-2,-1,-2,-1,-2],
[2,0,1,1,2,2,2,-1],
[-2,0,1,2,-2,-1,-2,2],
[1,0,0,0,-1,1,2,-1],
[1,2,-1,0,-2,-2,0,1],
[2,0,2,0,1,2,-1,2],
[1,2,-1,-1,0,0,0,-1],
[-1,2,2,2,-2,2,0,0],
[-1,0,2,0,0,-2,-1,0],
[-1,0,2,2,1,1,2,0],
[1,0,1,-2,-1,2,0,-1],
[-1,1,-1,0,-2,2,2,1],
[0,0,-2,2,2,-1,1,-1]];
// Per problem statement, some entries are known to be zero,
// but we don't know which, so this is a placeholder.
function mustBeZero(i, j) { return false; }
accum = 0;
k = 1;
l = 0;
// Using a Uint32Array where supported might be better.
// 50 is ceil(9*9*8/13) since we don't know any fixed zeros in this example
encoded = new Array(50);
for (i = 0; i !== 81; ++i) {
for (j = 0; j !== 8; ++j) {
if (mustBeZero(i, j))
continue;
value = array[i][j] + 2;
accum += k*value;
k *= 5;
if (k !== 1220703125) // 5^13
continue;
encoded[l] = accum;
accum = 0;
++l;
k = 1;
}
}
if (k !== 1) {
encoded[l] = accum;
++l;
}
print(encoded.join(",\n") + ";\n");
// Now we reconstruct the original data from this.
array = null; // forget original input
l = 0;
k = 0;
for (i = 0; i !== 81; ++i) {
array = []; // one row only
for (j = 0; j !== 8; ++j) {
if (mustBeZero(i, j))
continue;
if (k === 0) {
accum = encoded[l];
++l;
k = 13;
}
value = (accum % 5);
accum = (accum - value)/5;
--k;
array.push(value - 2);
}
print(array.join(","));
}
dmFyIGFycmF5LCBlbmNvZGVkLCB2YWx1ZSwgYWNjdW0sIGksIGosIGssIGw7CgovLyBFeGFtcGxlIGRhdGEKYXJyYXk9W1swLDEsLTEsLTIsLTIsMCwtMSwyXSwKWzAsLTEsLTEsMiwtMSwwLDIsLTFdLApbLTIsMCwtMSwyLDIsMiwyLDBdLApbLTEsMSwtMiwtMiwtMSwyLDEsLTJdLApbMCwyLC0yLDAsLTIsMSwxLDJdLApbMCwwLC0xLC0xLDAsLTEsLTIsMV0sClswLC0xLDAsLTIsLTEsLTIsLTEsMV0sClstMiwyLC0xLDIsMCwwLDIsMV0sClsyLDIsLTIsLTEsLTEsMSwtMiwtMV0sClstMSwxLDEsLTEsMSwtMSwtMSwtMl0sClswLDAsMSwtMiwyLDIsLTIsLTJdLApbLTIsLTIsLTIsLTEsLTIsLTEsMiwtMV0sClswLDEsLTIsMSwxLDIsMSwtMV0sClsyLC0yLC0xLDIsMSwtMiwyLC0xXSwKWzAsLTEsMiwtMSwwLC0yLDEsMl0sClswLDIsLTEsLTIsMCwtMiwtMiwwXSwKWzIsMCwtMiwtMiwtMiwyLDAsMl0sClstMSwtMSwtMSwxLC0yLDEsLTEsLTFdLApbLTIsMiwxLDAsLTIsLTIsLTEsMV0sClswLDAsMiwwLDAsMSwxLDBdLApbMSwxLDEsMiwtMSwyLC0xLDJdLApbMSwxLDEsMiwtMiwxLC0xLC0yXSwKWzIsLTEsLTIsMCwwLDEsLTEsMF0sClstMiwtMiwxLC0xLC0xLDAsLTEsLTFdLApbLTIsMSwtMiwwLDIsMiwxLDJdLApbLTIsMSwwLDEsMCwwLDAsMl0sClstMSwtMSwtMiwtMiwtMiwtMiwtMSwyXSwKWzAsMiwtMiwyLDAsMCwwLC0yXSwKWzIsMiwtMiwyLDEsMSwyLDJdLApbMSwtMiwtMSwtMSwwLDIsMSwtMl0sClstMiwyLDEsMSwwLDAsLTEsMV0sClstMSwtMSwyLC0yLDEsLTEsLTIsLTFdLApbMiwyLC0yLDIsLTIsLTEsMiwxXSwKWzAsLTEsMiwwLC0yLC0xLDIsLTFdLApbMCwxLDAsMiwwLC0xLDEsLTJdLApbMiwtMiwtMSwtMSwtMiwxLDAsMV0sClstMSwyLDAsMiwyLC0yLC0yLDFdLApbMSwwLDAsMSwwLDAsMiwyXSwKWzEsMSwyLC0yLC0yLDEsLTEsLTJdLApbLTEsLTIsMiwtMiwtMiwtMSwtMSwwXSwKWy0xLDEsLTEsMiwtMSwxLC0xLC0yXSwKWy0xLDIsLTIsMCwwLC0xLC0yLC0yXSwKWy0yLDAsMCwwLDIsLTIsLTEsMF0sClsxLC0yLDIsMiwtMiwtMSwwLDJdLApbMSwtMiwwLDEsLTIsLTEsLTIsMV0sClswLDIsLTIsMiwtMSwxLDEsLTJdLApbMiwtMiwtMSwtMSwtMiwtMiwxLC0yXSwKWzEsMiwtMSwxLDAsMCwyLDBdLApbMSwtMSwxLDAsLTEsLTIsMSwtMl0sClstMSwxLC0yLC0xLDAsMCwwLDJdLApbMCwtMSwtMiwyLC0xLC0xLDIsMV0sClsyLC0yLDIsMCwxLDEsLTEsLTFdLApbMiwtMSwtMiwyLC0xLC0xLDAsMF0sClstMSwxLC0xLC0yLDEsMSwyLDJdLApbMSwyLC0xLDAsLTIsLTEsLTEsMF0sClsxLDEsLTEsLTEsMiwxLC0yLDBdLApbMCwwLDIsLTEsLTEsMSwxLDFdLApbMCwtMSwwLC0yLDIsMiwwLC0yXSwKWy0xLDIsLTEsMSwwLDAsMiwyXSwKWzAsMSwyLDIsLTIsMiwxLC0xXSwKWzIsLTEsMCwtMiwtMiwxLC0yLC0yXSwKWy0yLC0xLDIsMSwtMiwtMiwxLDJdLApbLTEsLTIsLTIsMCwtMSwtMSwtMiwyXSwKWy0xLDIsMSwwLDAsLTEsMiwwXSwKWy0xLC0xLDEsMSwwLC0xLDEsMF0sClsyLDEsMSwyLC0yLDEsLTEsMV0sClstMSwtMiwyLC0yLDEsMSwtMSwtMV0sClstMSwwLC0yLDEsMiwtMiwxLC0yXSwKWzAsMCwxLC0yLC0xLC0yLC0xLC0yXSwKWzIsMCwxLDEsMiwyLDIsLTFdLApbLTIsMCwxLDIsLTIsLTEsLTIsMl0sClsxLDAsMCwwLC0xLDEsMiwtMV0sClsxLDIsLTEsMCwtMiwtMiwwLDFdLApbMiwwLDIsMCwxLDIsLTEsMl0sClsxLDIsLTEsLTEsMCwwLDAsLTFdLApbLTEsMiwyLDIsLTIsMiwwLDBdLApbLTEsMCwyLDAsMCwtMiwtMSwwXSwKWy0xLDAsMiwyLDEsMSwyLDBdLApbMSwwLDEsLTIsLTEsMiwwLC0xXSwKWy0xLDEsLTEsMCwtMiwyLDIsMV0sClswLDAsLTIsMiwyLC0xLDEsLTFdXTsKCi8vIFBlciBwcm9ibGVtIHN0YXRlbWVudCwgc29tZSBlbnRyaWVzIGFyZSBrbm93biB0byBiZSB6ZXJvLAovLyBidXQgd2UgZG9uJ3Qga25vdyB3aGljaCwgc28gdGhpcyBpcyBhIHBsYWNlaG9sZGVyLgpmdW5jdGlvbiBtdXN0QmVaZXJvKGksIGopIHsgcmV0dXJuIGZhbHNlOyB9CgphY2N1bSA9IDA7CmsgPSAxOwpsID0gMDsKLy8gVXNpbmcgYSBVaW50MzJBcnJheSB3aGVyZSBzdXBwb3J0ZWQgbWlnaHQgYmUgYmV0dGVyLgovLyA1MCBpcyBjZWlsKDkqOSo4LzEzKSBzaW5jZSB3ZSBkb24ndCBrbm93IGFueSBmaXhlZCB6ZXJvcyBpbiB0aGlzIGV4YW1wbGUKZW5jb2RlZCA9IG5ldyBBcnJheSg1MCk7CmZvciAoaSA9IDA7IGkgIT09IDgxOyArK2kpIHsKICAgIGZvciAoaiA9IDA7IGogIT09IDg7ICsraikgewogICAgICAgIGlmIChtdXN0QmVaZXJvKGksIGopKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB2YWx1ZSA9IGFycmF5W2ldW2pdICsgMjsKICAgICAgICBhY2N1bSArPSBrKnZhbHVlOwogICAgICAgIGsgKj0gNTsKICAgICAgICBpZiAoayAhPT0gMTIyMDcwMzEyNSkgLy8gNV4xMwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICBlbmNvZGVkW2xdID0gYWNjdW07CiAgICAgICAgYWNjdW0gPSAwOwogICAgICAgICsrbDsKICAgICAgICBrID0gMTsKICAgIH0KfQppZiAoayAhPT0gMSkgewogICAgZW5jb2RlZFtsXSA9IGFjY3VtOwogICAgKytsOwp9CnByaW50KGVuY29kZWQuam9pbigiLFxuIikgKyAiO1xuIik7CgovLyBOb3cgd2UgcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGRhdGEgZnJvbSB0aGlzLgphcnJheSA9IG51bGw7IC8vIGZvcmdldCBvcmlnaW5hbCBpbnB1dApsID0gMDsKayA9IDA7CmZvciAoaSA9IDA7IGkgIT09IDgxOyArK2kpIHsKICAgIGFycmF5ID0gW107IC8vIG9uZSByb3cgb25seQogICAgZm9yIChqID0gMDsgaiAhPT0gODsgKytqKSB7CiAgICAgICAgaWYgKG11c3RCZVplcm8oaSwgaikpCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGlmIChrID09PSAwKSB7CiAgICAgICAgICAgIGFjY3VtID0gZW5jb2RlZFtsXTsKICAgICAgICAgICAgKytsOwogICAgICAgICAgICBrID0gMTM7CiAgICAgICAgfQogICAgICAgIHZhbHVlID0gKGFjY3VtICUgNSk7CiAgICAgICAgYWNjdW0gPSAoYWNjdW0gLSB2YWx1ZSkvNTsKICAgICAgICAtLWs7CiAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSAtIDIpOwogICAgfQogICAgcHJpbnQoYXJyYXkuam9pbigiLCIpKTsKfQo=
452287542,
810535672,
883158650,
112522689,
1167137901,
407517654,
377176,
436773026,
579049279,
703287240,
396983000,
708282976,
946074092,
850317618,
149005011,
1099034247,
692515631,
194831137,
368674306,
1023853658,
578348605,
744463488,
621170542,
78496813,
455643851,
488862008,
546538237,
1020720894,
761815091,
74889084,
77144153,
329233659,
748629259,
900818623,
892381731,
822497163,
1062886237,
37501886,
945412548,
649864287,
772134969,
592157658,
1218188153,
612909176,
1142764616,
599521697,
1088999907,
720660762,
113794463,
16392224;
0,1,-1,-2,-2,0,-1,2
0,-1,-1,2,-1,0,2,-1
-2,0,-1,2,2,2,2,0
-1,1,-2,-2,-1,2,1,-2
0,2,-2,0,-2,1,1,2
0,0,-1,-1,0,-1,-2,1
0,-1,0,-2,-1,-2,-1,1
-2,2,-1,2,0,0,2,1
2,2,-2,-1,-1,1,-2,-1
-1,1,1,-1,1,-1,-1,-2
0,0,1,-2,2,2,-2,-2
-2,-2,-2,-1,-2,-1,2,-1
0,1,-2,1,1,2,1,-1
2,-2,-1,2,1,-2,2,-1
0,-1,2,-1,0,-2,1,2
0,2,-1,-2,0,-2,-2,0
2,0,-2,-2,-2,2,0,2
-1,-1,-1,1,-2,1,-1,-1
-2,2,1,0,-2,-2,-1,1
0,0,2,0,0,1,1,0
1,1,1,2,-1,2,-1,2
1,1,1,2,-2,1,-1,-2
2,-1,-2,0,0,1,-1,0
-2,-2,1,-1,-1,0,-1,-1
-2,1,-2,0,2,2,1,2
-2,1,0,1,0,0,0,2
-1,-1,-2,-2,-2,-2,-1,2
0,2,-2,2,0,0,0,-2
2,2,-2,2,1,1,2,2
1,-2,-1,-1,0,2,1,-2
-2,2,1,1,0,0,-1,1
-1,-1,2,-2,1,-1,-2,-1
2,2,-2,2,-2,-1,2,1
0,-1,2,0,-2,-1,2,-1
0,1,0,2,0,-1,1,-2
2,-2,-1,-1,-2,1,0,1
-1,2,0,2,2,-2,-2,1
1,0,0,1,0,0,2,2
1,1,2,-2,-2,1,-1,-2
-1,-2,2,-2,-2,-1,-1,0
-1,1,-1,2,-1,1,-1,-2
-1,2,-2,0,0,-1,-2,-2
-2,0,0,0,2,-2,-1,0
1,-2,2,2,-2,-1,0,2
1,-2,0,1,-2,-1,-2,1
0,2,-2,2,-1,1,1,-2
2,-2,-1,-1,-2,-2,1,-2
1,2,-1,1,0,0,2,0
1,-1,1,0,-1,-2,1,-2
-1,1,-2,-1,0,0,0,2
0,-1,-2,2,-1,-1,2,1
2,-2,2,0,1,1,-1,-1
2,-1,-2,2,-1,-1,0,0
-1,1,-1,-2,1,1,2,2
1,2,-1,0,-2,-1,-1,0
1,1,-1,-1,2,1,-2,0
0,0,2,-1,-1,1,1,1
0,-1,0,-2,2,2,0,-2
-1,2,-1,1,0,0,2,2
0,1,2,2,-2,2,1,-1
2,-1,0,-2,-2,1,-2,-2
-2,-1,2,1,-2,-2,1,2
-1,-2,-2,0,-1,-1,-2,2
-1,2,1,0,0,-1,2,0
-1,-1,1,1,0,-1,1,0
2,1,1,2,-2,1,-1,1
-1,-2,2,-2,1,1,-1,-1
-1,0,-2,1,2,-2,1,-2
0,0,1,-2,-1,-2,-1,-2
2,0,1,1,2,2,2,-1
-2,0,1,2,-2,-1,-2,2
1,0,0,0,-1,1,2,-1
1,2,-1,0,-2,-2,0,1
2,0,2,0,1,2,-1,2
1,2,-1,-1,0,0,0,-1
-1,2,2,2,-2,2,0,0
-1,0,2,0,0,-2,-1,0
-1,0,2,2,1,1,2,0
1,0,1,-2,-1,2,0,-1
-1,1,-1,0,-2,2,2,1
0,0,-2,2,2,-1,1,-1