aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-05 10:39:41 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-05 10:39:41 -0400
commitf0e089208e22236483747360394155dc76cf7e48 (patch)
tree6f7f782ca939ca38e93eb262c9fe19da9b5c14d6
parentcea2d535ba34acc17568004be9f87a145fd64616 (diff)
Show source of errors (primitive or compiler)
-rw-r--r--docs/bqn.js22
-rw-r--r--src/r.bqn132
2 files changed, 77 insertions, 77 deletions
diff --git a/docs/bqn.js b/docs/bqn.js
index ebf4a92f..813f4bd0 100644
--- a/docs/bqn.js
+++ b/docs/bqn.js
@@ -79,7 +79,7 @@ let run = (B,O,S) => { // Bytecode, Objects, Sections/blocks
// Runtime
let assertFn = pre => (x,w) => {
- if (x!==1) throw Error(pre + (has(w)?": "+w.join(""):""));
+ if (x!==1) throw Error(pre + (has(w)?(pre?": ":"")+w.join(""):""));
return x;
}
let arr = (r,sh) => {r.sh=sh;return r;}
@@ -94,19 +94,19 @@ let plus = (x,w) => {
if (s==="number" && t==="number") return w+x;
if (s==="number" && t==="string") return ctrans(x,w);
if (s==="string" && t==="number") return ctrans(w,x);
- if (s==="string" && t==="string") throw Error("Cannot add two characters");
- throw Error("Cannot add non-data values");
+ if (s==="string" && t==="string") throw Error("+: Cannot add two characters");
+ throw Error("+: Cannot add non-data values");
}
let minus = (x,w) => {
if (typeof x!=="number") {
if (has(w)&&typeof w==="string") return w.codePointAt(0)-x.codePointAt(0);
- throw Error("Can only negate numbers");
+ throw Error("-: Can only negate numbers");
}
if (!has(w)) return -x;
let s=typeof w;
if (s==="number") return w-x;
if (s==="string") return ctrans(w,-x);
- throw Error("Cannot subtract from non-data value");
+ throw Error("-: Cannot subtract from non-data value");
}
let lesseq = (x,w) => {
let s=typeof w, t=typeof x;
@@ -145,7 +145,7 @@ let provide = [
,(x,w) => has(w)?Math.log(x)/Math.log(w):Math.log(x) // Log
,group_len // GroupLen
,group_ord // GroupOrd
- ,assertFn("Primitive failed") // !
+ ,assertFn("") // !
,plus // +
,minus // -
,(x,w) => w*x // ×
@@ -164,19 +164,19 @@ let provide = [
];
let runtime = run(
- new Uint8Array([15,1,22,0,0,11,14,15,2,22,0,1,11,14,15,3,0,20,15,4,8,22,0,2,11,14,15,5,22,0,3,11,14,15,6,22,0,4,11,14,15,7,22,0,5,11,14,15,8,22,0,6,11,14,15,9,22,0,7,11,14,15,10,22,0,8,11,14,15,11,22,0,9,11,14,0,12,21,0,7,0,11,8,0,21,3,2,21,0,0,0,0,8,22,0,10,11,14,0,12,21,0,7,0,11,8,0,8,0,13,21,0,7,0,21,8,19,0,21,3,2,21,0,0,0,0,8,22,0,11,11,14,21,0,4,0,13,7,22,0,12,11,14,21,0,12,0,7,0,22,19,0,20,15,12,8,22,0,13,11,14,0,13,0,7,0,22,19,22,0,14,11,14,15,13,0,16,21,0,14,19,0,20,0,11,8,22,0,15,11,14,15,14,0,16,21,0,13,19,0,20,0,7,21,0,5,21,0,15,21,0,5,0,7,8,8,8,22,0,16,11,14,0,22,0,14,0,16,0,21,19,3,2,21,0,0,0,12,21,0,13,0,21,19,8,22,0,17,11,14,15,15,22,0,18,11,14,21,0,18,22,0,19,11,14,0,0,0,7,0,22,19,21,0,9,21,0,13,8,22,0,20,11,14,0,14,21,0,8,15,16,8,22,0,21,11,14,15,17,22,0,22,11,14,15,18,22,0,23,11,14,15,19,22,0,24,11,14,0,13,0,7,21,0,12,19,22,0,25,11,14,0,22,0,15,0,16,0,21,19,21,0,8,0,13,0,8,0,23,19,0,7,0,22,19,15,20,3,2,21,0,0,21,0,1,21,0,5,0,0,8,8,8,3,2,21,0,0,21,0,1,21,0,5,0,14,8,21,0,19,0,8,7,0,22,19,21,0,13,0,21,19,8,22,0,26,11,14,21,0,25,21,0,26,21,0,4,21,0,26,7,0,7,9,3,2,21,0,0,21,0,2,21,0,5,0,0,8,8,15,21,3,3,21,0,0,0,0,21,0,6,0,6,8,8,22,0,27,11,14,15,22,22,0,28,11,14,15,23,22,0,29,11,14,0,12,21,0,13,0,21,19,21,0,9,15,24,8,22,0,30,11,14,0,12,21,0,13,0,21,19,21,0,9,15,25,8,22,0,31,11,14,15,26,22,0,32,11,14,15,27,22,0,33,11,14,15,28,22,0,34,11,14,15,29,22,0,35,11,14,15,30,22,0,36,11,14,0,0,21,0,6,0,12,8,0,21,3,2,21,0,1,21,0,5,0,0,8,0,12,3,2,0,12,21,0,6,0,12,8,0,21,3,2,0,14,21,0,6,21,0,36,0,12,7,8,21,0,19,0,8,7,0,22,19,0,21,3,2,15,31,3,5,21,0,19,15,32,7,16,22,0,37,11,14,0,21,15,33,3,2,21,0,0,0,0,8,22,0,38,11,14,21,0,37,0,20,21,0,38,8,22,0,39,11,14,21,0,37,0,7,0,22,19,0,20,3,0,0,14,3,2,21,0,0,0,0,8,8,22,0,40,11,14,15,34,22,0,41,11,14,15,35,22,0,42,11,14,0,22,21,0,42,21,0,32,8,21,0,7,21,0,20,8,22,0,43,11,14,21,0,43,0,20,21,0,43,21,0,7,0,21,8,8,22,0,44,11,14,0,0,21,0,9,0,15,21,0,5,21,0,17,8,21,0,13,0,21,19,21,0,9,15,36,8,8,22,0,45,11,14,15,37,22,0,46,11,14,21,0,24,0,9,7,22,0,47,11,14,21,0,24,0,10,7,22,0,48,11,14,21,0,4,21,0,47,21,0,8,21,0,48,8,7,0,20,0,23,21,0,47,16,21,0,8,21,0,48,8,8,22,0,49,11,14,21,0,24,15,38,0,20,0,7,21,0,1,3,2,21,0,0,0,13,21,0,7,0,21,8,8,8,7,22,0,50,11,14,21,0,24,15,39,0,20,21,0,15,8,7,22,0,51,11,14,21,0,24,15,40,0,20,0,7,21,0,5,21,0,51,21,0,5,0,7,8,8,8,7,22,0,52,11,14,21,0,24,0,8,7,0,20,21,0,46,0,21,7,8,22,0,53,11,14,21,0,24,0,8,0,7,0,6,19,7,0,20,21,0,46,0,22,7,8,22,0,54,11,14,21,0,24,0,8,0,20,21,0,14,0,7,21,0,13,19,21,0,7,0,21,8,8,7,22,0,55,11,14,21,0,24,21,0,12,0,7,0,22,19,7,0,20,15,41,8,22,0,56,11,14,21,0,24,0,13,0,7,0,22,19,7,0,20,21,0,45,8,22,0,57,11,14,21,0,24,0,12,0,7,0,22,19,7,0,20,21,0,17,8,22,0,58,11,14,21,0,24,0,12,7,0,20,0,12,8,22,0,59,11,14,21,0,24,21,0,12,7,0,20,21,0,4,0,21,7,0,5,0,46,19,8,22,0,60,11,14,21,0,24,0,13,7,0,20,21,0,4,0,21,7,0,5,0,47,19,8,22,0,61,11,14,21,0,24,0,6,7,22,0,62,11,14,21,0,24,0,7,7,22,0,63,11,14,21,0,63,21,0,62,0,22,19,22,0,64,11,14,21,0,62,0,21,3,2,21,0,63,0,21,3,2,21,0,55,0,22,3,2,21,0,47,0,22,3,2,21,0,48,0,22,3,2,21,0,49,0,22,3,2,21,0,53,0,22,3,2,21,0,54,0,21,3,2,21,0,64,0,22,3,2,21,0,50,0,21,3,2,21,0,51,0,28,3,2,21,0,52,0,29,3,2,21,0,56,0,21,3,2,21,0,61,0,22,3,2,21,0,59,0,22,3,2,21,0,60,0,22,3,2,21,0,57,0,21,3,2,21,0,58,0,21,3,2,3,18,21,0,19,15,42,7,21,0,4,0,21,7,0,5,0,48,19,3,1,0,16,0,21,17,17,22,0,65,11,14,15,43,0,15,3,2,21,0,0,0,0,8,22,0,66,11,14,15,44,22,0,67,11,14,0,15,0,20,21,0,66,8,22,0,68,11,14,15,45,22,0,69,11,14,15,46,0,20,15,47,8,22,0,70,11,14,21,0,70,21,0,5,21,0,57,8,22,0,71,11,14,15,48,22,0,72,11,14,15,49,22,0,73,11,14,21,0,73,22,0,74,11,14,15,50,22,0,75,11,14,21,0,75,22,0,76,11,14,15,51,22,0,77,11,14,21,0,77,22,0,78,11,14,21,0,68,21,0,6,21,0,22,8,15,52,3,2,21,0,0,21,0,59,21,0,56,0,22,19,21,0,6,21,0,54,8,8,22,0,79,11,14,15,53,22,0,80,11,14,15,54,22,0,81,11,14,21,0,80,0,20,21,0,81,8,22,0,82,11,14,15,55,22,0,83,11,14,15,56,22,0,84,11,14,21,0,83,0,20,21,0,84,8,22,0,85,11,14,15,57,22,0,86,11,14,21,0,44,21,0,7,21,0,29,8,22,0,87,11,14,21,0,58,21,0,59,0,21,19,21,0,63,0,22,19,21,0,42,15,58,15,59,3,2,21,0,0,15,60,8,8,22,0,88,11,14,21,0,86,0,20,21,0,69,8,22,0,89,11,14,0,21,21,0,42,21,0,34,8,0,20,21,0,33,8,22,0,90,11,14,21,0,88,0,20,21,0,29,8,22,0,91,11,14,21,0,68,21,0,5,21,0,58,8,21,0,56,0,21,19,21,0,9,15,61,15,62,3,2,21,0,0,0,18,21,0,59,7,21,0,58,0,22,19,21,0,19,21,0,54,7,9,0,22,3,2,21,0,0,21,0,59,21,0,58,0,22,19,8,8,8,22,0,92,11,14,15,63,22,0,93,11,14,15,64,22,0,94,11,14,15,65,22,0,95,11,14,21,0,79,0,20,21,0,92,8,22,0,96,11,14,21,0,95,0,20,21,0,94,8,22,0,97,11,14,15,66,22,0,98,11,14,21,0,98,15,67,3,2,21,0,0,21,0,2,21,0,5,21,0,68,21,0,5,0,18,0,0,7,8,8,21,0,19,21,0,54,7,9,8,22,0,99,11,14,21,0,99,21,0,7,21,0,68,21,0,1,3,2,21,0,0,0,0,8,8,22,0,100,11,14,15,68,22,0,101,11,14,15,69,22,0,102,11,14,15,70,22,0,103,11,14,15,71,22,0,104,11,14,21,0,104,21,0,27,7,0,20,0,21,21,0,28,21,0,27,8,8,22,0,105,11,14,21,0,104,21,0,4,21,0,27,7,7,0,20,0,22,21,0,28,21,0,4,21,0,27,7,8,8,22,0,106,11,14,15,72,22,0,107,11,14,0,4,21,0,7,21,0,36,0,22,7,8,22,0,108,11,14,15,73,22,0,109,11,14,21,0,109,21,0,1,21,0,5,0,19,21,0,62,7,8,21,0,4,21,0,63,7,0,22,19,21,0,4,21,0,44,7,21,0,4,21,0,91,21,0,5,21,0,105,21,0,5,21,0,108,8,8,7,19,7,22,0,110,11,14,15,74,22,0,111,11,14,21,0,107,0,22,7,0,20,21,0,110,8,22,0,112,11,14,21,0,4,21,0,107,0,21,7,7,0,20,21,0,109,21,0,1,7,8,22,0,113,11,14,21,0,111,0,20,21,0,91,21,0,7,21,0,113,8,8,22,0,114,11,14,15,75,22,0,115,11,14,15,76,22,0,116,11,14,15,77,22,0,117,11,14,15,78,22,0,118,11,14,21,0,117,0,20,21,0,30,8,22,0,119,11,14,21,0,105,21,0,5,21,0,105,8,21,0,44,21,0,63,21,0,1,19,21,0,4,21,0,112,7,19,22,0,120,11,14,15,79,22,0,121,11,14,21,0,121,0,20,21,0,120,8,22,0,122,11,14,21,0,100,0,20,21,0,68,0,16,0,21,19,8,22,0,123,11,14,15,80,22,0,124,11,14,0,5,21,0,7,0,93,8,22,0,125,11,14,0,5,21,0,7,0,94,8,22,0,126,11,14,15,81,22,0,127,11,14,15,82,22,0,128,1,11,14,15,83,22,0,129,1,11,14,21,0,62,21,0,4,21,0,63,7,0,20,21,0,62,8,21,0,63,21,0,63,21,0,55,21,0,4,21,0,47,7,0,20,21,0,1,8,21,0,47,21,0,47,21,0,48,21,0,24,0,2,7,21,0,49,21,0,4,21,0,48,7,0,20,0,23,21,0,8,21,0,48,8,8,21,0,53,21,0,4,21,0,47,7,0,20,21,0,53,21,0,127,21,0,1,8,8,21,0,54,21,0,1,21,0,63,0,22,19,21,0,47,21,0,4,21,0,63,7,19,0,20,21,0,54,21,0,127,21,0,1,8,8,21,0,64,21,0,64,21,0,56,0,21,21,0,5,21,0,125,8,0,20,15,84,8,21,0,1,21,0,1,21,0,2,21,0,39,21,0,5,21,0,126,8,21,0,2,21,0,1,19,0,20,21,0,1,8,21,0,96,15,85,0,20,0,21,21,0,5,21,0,125,8,8,21,0,71,15,86,0,20,15,87,8,21,0,82,0,21,21,0,5,21,0,125,8,0,20,21,0,82,21,0,127,21,0,123,21,0,7,0,27,8,8,8,21,0,85,0,21,21,0,5,21,0,125,8,0,20,21,0,85,21,0,127,21,0,123,8,8,21,0,89,0,21,21,0,5,21,0,125,8,0,20,21,0,89,21,0,127,21,0,40,8,8,21,0,90,21,0,90,21,0,7,21,0,63,8,0,20,21,0,90,8,21,0,119,21,0,118,0,20,21,0,31,8,21,0,91,0,21,21,0,5,21,0,125,8,0,20,15,88,8,21,0,97,21,0,129,1,0,20,21,0,128,1,8,3,42,21,0,68,21,0,7,21,0,58,21,0,4,21,0,47,7,0,23,19,21,0,4,21,0,96,7,0,23,19,8,16,21,0,119,16,15,89,16,22,0,130,1,11,14,15,90,22,0,131,1,11,14,15,91,22,0,132,1,11,14,21,0,132,1,22,0,133,1,11,14,21,0,56,21,0,112,21,0,5,21,0,123,8,21,0,5,21,0,51,21,0,90,21,0,82,3,4,19,22,0,134,1,11,14,21,0,67,0,20,21,0,66,8,22,0,135,1,11,14,15,92,22,0,136,1,11,14,21,0,35,22,0,137,1,11,14,21,0,62,21,0,63,21,0,55,21,0,47,21,0,48,21,0,49,21,0,51,21,0,52,21,0,50,21,0,64,21,0,53,21,0,54,21,0,56,21,0,57,21,0,58,21,0,59,21,0,61,21,0,60,21,0,39,21,0,40,21,0,2,21,0,1,21,0,135,1,21,0,96,21,0,71,21,0,82,21,0,85,21,0,89,21,0,90,21,0,119,21,0,91,21,0,105,21,0,106,21,0,44,21,0,123,21,0,112,21,0,122,21,0,113,21,0,114,21,0,97,0,5,21,0,3,21,0,4,21,0,41,21,0,36,21,0,136,1,21,0,131,1,21,0,19,21,0,78,0,19,21,0,5,21,0,6,21,0,7,21,0,8,21,0,137,1,0,20,21,0,124,21,0,76,21,0,74,21,0,133,1,3,60,25,21,0,1,15,93,21,0,5,0,16,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,0,1,25,21,0,2,25,21,0,1,25,21,0,1,14,21,0,4,25,21,0,1,21,1,2,21,0,2,17,21,0,4,21,0,1,17,25,21,0,1,21,0,5,21,0,2,17,21,0,4,16,25,21,0,1,21,0,5,16,21,0,4,21,0,2,21,0,5,16,17,25,21,0,1,21,0,5,21,0,1,21,1,2,21,0,2,17,21,0,4,16,17,25,21,0,1,21,0,5,16,21,0,4,21,0,1,21,1,2,21,0,2,17,17,25,21,0,1,15,94,21,1,1,21,0,4,3,2,0,16,21,0,1,21,0,5,21,0,2,17,17,7,21,0,2,17,25,21,0,1,3,1,0,15,3,0,17,25,21,0,2,21,0,1,3,2,25,21,0,2,21,0,1,3,2,25,21,0,1,0,12,16,0,12,0,22,17,0,5,0,31,17,14,21,0,1,22,0,5,11,21,1,17,16,22,0,6,11,14,21,0,4,22,0,7,11,14,21,0,1,21,1,2,0,20,15,95,15,96,3,2,21,1,0,21,0,6,21,1,13,0,21,17,8,8,21,0,2,17,22,0,8,11,14,21,0,6,0,17,16,0,18,0,7,21,1,7,0,22,0,7,21,0,6,17,8,7,16,0,18,15,97,7,16,14,21,0,8,25,21,0,2,0,7,21,0,1,21,1,17,16,17,0,17,16,0,18,21,1,4,21,0,1,7,0,16,0,6,21,1,7,21,0,2,8,19,7,16,25,21,0,2,21,1,17,16,22,0,3,11,14,21,0,1,21,1,17,16,0,6,21,0,3,17,0,17,16,0,18,21,0,2,21,1,8,0,16,8,21,1,4,21,0,1,7,0,16,21,0,3,21,1,8,0,7,8,19,3,2,21,1,0,0,13,21,1,7,21,0,3,8,8,7,16,25,15,98,22,0,2,11,14,15,99,22,0,3,11,14,21,0,3,21,0,1,7,21,1,4,21,0,3,21,1,4,21,0,1,7,7,7,3,2,21,1,0,0,12,21,1,6,21,1,14,8,8,21,0,2,21,0,1,7,3,2,21,1,0,0,12,21,1,6,0,12,8,8,25,15,100,21,0,1,7,22,0,2,11,14,21,0,1,15,101,15,102,3,2,21,1,0,0,0,21,1,6,21,1,14,8,8,0,20,0,18,21,0,2,7,8,21,1,23,21,0,2,7,3,3,21,1,0,0,0,21,1,6,0,6,8,8,25,21,0,1,21,1,26,21,0,2,17,25,21,0,1,0,14,21,1,6,21,1,101,8,21,0,2,17,22,0,3,11,14,21,0,3,21,1,19,21,1,102,21,0,1,0,15,16,21,1,8,0,16,8,21,1,8,21,1,27,21,1,7,21,0,2,0,15,16,21,1,8,0,16,8,8,8,7,7,16,22,0,4,11,14,0,21,21,1,4,21,0,4,7,16,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,34,17,14,21,0,1,21,1,17,16,22,0,6,11,14,21,0,1,21,1,21,0,22,17,21,1,19,0,8,7,0,22,17,22,0,7,11,14,21,0,1,0,15,16,22,0,8,11,14,0,21,22,0,9,11,22,0,10,11,14,21,0,8,0,21,0,18,21,1,10,7,21,1,19,0,8,7,0,22,19,3,2,21,1,0,21,0,6,21,1,13,0,24,17,0,8,0,22,0,12,21,0,7,17,17,8,16,21,1,1,21,1,9,21,0,1,21,1,8,15,103,8,8,16,0,7,0,22,17,22,0,11,11,14,21,0,1,0,18,21,0,10,21,1,8,0,7,8,0,7,21,1,7,21,0,9,8,3,2,0,16,21,0,5,17,7,0,4,21,1,7,0,3,8,9,15,104,21,0,4,7,3,2,21,1,0,21,0,11,8,16,25,21,0,1,0,12,16,0,12,0,22,17,0,5,0,35,17,14,21,0,1,21,1,17,16,22,0,3,11,14,21,0,1,21,0,3,21,1,13,0,21,17,21,1,9,15,105,8,16,25,21,0,1,21,1,17,16,22,0,3,11,14,21,0,1,21,1,21,0,22,17,22,0,4,11,21,1,19,0,8,7,0,22,17,22,0,5,11,14,21,0,3,0,17,16,0,18,21,1,4,21,0,1,0,15,16,7,0,16,0,8,21,1,7,21,0,5,8,21,1,8,0,6,8,19,7,21,0,5,0,17,16,0,15,21,0,4,17,17,25,21,0,1,0,12,16,21,1,4,0,7,7,0,22,17,22,0,3,11,14,21,0,1,0,14,16,22,0,4,11,14,21,0,4,0,16,21,0,3,17,22,0,5,11,14,21,0,3,0,17,16,0,18,21,0,4,21,1,8,0,16,8,7,16,22,0,6,11,14,21,0,6,21,1,19,0,8,7,0,22,17,0,17,16,0,15,21,0,6,17,0,18,21,1,4,21,0,1,0,15,16,7,0,16,0,8,21,1,7,21,0,5,8,21,1,8,0,6,8,19,7,21,0,5,0,17,16,17,25,21,0,2,0,0,16,0,5,0,37,17,14,21,0,2,0,18,21,1,10,7,16,0,15,16,21,1,19,0,8,7,0,22,17,0,5,0,38,17,14,21,0,1,21,1,17,16,22,0,3,11,14,21,0,2,0,18,21,1,14,21,1,7,21,0,3,8,0,8,0,13,21,1,7,21,0,3,0,7,16,8,19,7,16,0,15,16,21,1,19,0,8,7,0,22,17,0,5,0,39,17,14,21,0,1,15,106,15,107,3,2,21,1,0,21,0,1,0,12,16,0,12,0,22,17,8,21,0,2,0,18,21,1,1,21,1,14,0,21,19,0,8,21,0,3,19,0,6,21,1,1,19,7,16,17,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,40,17,14,21,0,1,21,1,17,16,22,0,3,11,14,21,0,1,21,1,43,21,0,3,0,17,16,0,18,0,7,21,1,7,0,22,0,7,21,0,3,17,8,7,16,17,25,21,0,2,21,1,10,16,0,5,0,41,17,14,21,0,1,21,1,17,16,22,0,3,11,14,21,0,3,0,9,21,0,2,17,21,1,15,16,0,8,21,0,3,17,0,7,22,0,2,13,14,21,0,1,21,1,43,21,0,3,0,17,16,0,18,21,1,1,0,13,21,0,2,0,7,21,0,3,17,19,0,8,21,0,3,19,0,7,21,1,1,19,0,6,21,0,2,19,7,16,17,25,21,0,1,0,14,16,22,0,6,11,21,1,19,0,8,7,0,22,17,22,0,7,11,0,17,16,22,0,8,11,14,21,0,1,21,0,5,21,1,6,21,0,4,8,21,0,2,17,22,0,9,11,14,21,0,8,0,15,21,0,6,17,21,0,5,16,22,0,10,11,14,15,108,0,15,3,2,0,16,21,0,10,0,0,16,17,22,0,11,11,14,21,0,9,21,0,11,16,22,0,9,12,14,21,0,10,21,0,11,16,22,0,10,12,14,21,0,10,0,21,21,1,28,21,1,25,8,16,22,0,12,11,14,21,1,4,21,0,10,7,0,16,21,0,12,21,1,8,0,16,8,19,21,0,7,3,2,21,1,0,0,13,21,1,7,21,0,12,21,1,17,16,8,8,22,0,13,11,14,0,21,22,0,14,11,21,0,13,16,22,0,15,11,14,21,0,8,0,18,21,0,1,0,15,16,21,1,8,0,16,8,15,109,3,2,21,1,0,15,110,8,7,16,0,15,21,0,6,17,25,21,1,20,21,1,6,21,1,23,21,0,1,7,0,20,0,18,21,0,1,7,8,8,25,21,0,1,21,1,36,21,1,37,7,21,0,2,17,0,15,16,21,1,19,0,8,7,0,22,17,25,21,0,2,0,16,0,22,17,21,0,1,3,2,21,1,0,21,0,2,0,16,0,21,17,8,25,21,0,1,0,15,16,0,18,21,1,38,7,16,21,1,19,0,7,0,8,0,13,19,0,7,21,1,2,19,7,0,21,17,0,6,0,22,17,25,0,27,21,1,75,21,0,1,8,25,21,0,1,22,0,3,11,14,15,111,15,112,3,2,21,1,0,21,1,2,21,1,5,21,1,39,21,1,13,21,0,2,19,8,8,25,21,0,1,0,15,16,0,16,0,21,17,21,1,40,16,22,0,3,11,14,21,0,1,0,15,16,0,18,21,1,40,21,1,39,21,0,3,19,7,16,21,1,19,0,8,7,0,22,17,0,5,0,45,17,14,21,0,3,21,1,19,0,8,7,0,22,17,0,17,16,0,15,21,0,3,17,0,18,21,1,4,21,1,66,21,1,8,0,16,8,7,7,21,0,1,17,25,21,1,43,21,1,7,21,0,1,21,1,28,21,1,27,21,1,4,21,1,27,7,3,2,0,16,21,0,1,17,8,8,25,21,0,2,21,1,47,21,0,1,17,21,1,15,16,0,8,21,0,2,17,0,7,21,0,1,17,25,21,0,2,21,0,1,3,2,0,16,21,0,1,21,1,14,21,0,2,17,17,25,21,0,2,21,0,1,3,2,0,16,21,0,1,21,1,13,21,0,2,17,17,25,21,0,1,3,1,0,15,3,0,17,25,21,0,1,21,0,2,0,16,0,22,17,3,2,21,1,0,15,113,21,0,2,0,16,0,21,17,7,8,25,21,0,1,3,1,25,21,0,2,21,1,59,16,21,1,60,0,22,17,0,5,0,49,17,14,21,0,2,21,1,66,16,22,0,3,11,14,21,0,3,0,18,21,1,11,7,16,21,1,64,16,22,0,4,11,21,1,19,21,1,62,7,16,22,0,5,11,14,21,0,5,21,1,60,0,22,17,0,5,0,50,17,14,21,0,1,21,1,66,16,22,0,6,11,21,1,58,16,22,0,7,11,14,21,0,3,21,1,19,21,1,55,7,15,114,3,2,21,1,0,21,0,5,8,16,22,0,8,11,14,21,0,6,21,0,7,21,1,58,21,0,8,17,21,1,9,15,115,8,16,0,15,21,0,3,17,25,15,116,22,0,3,11,14,15,117,22,0,4,11,14,21,0,1,21,0,3,21,0,4,3,2,21,1,0,0,0,8,16,25,21,0,2,21,0,1,3,2,25,21,0,1,3,1,25,21,0,1,21,1,5,21,1,68,8,21,1,1,21,1,5,21,1,56,8,21,1,36,0,16,7,21,1,58,21,1,8,21,1,4,21,1,50,21,1,62,0,22,19,21,1,63,21,1,2,19,7,8,19,0,22,0,21,3,2,0,20,0,23,3,1,8,19,25,21,0,1,21,1,72,21,0,5,7,21,0,2,17,22,0,6,11,21,1,57,0,21,17,22,0,7,11,14,21,0,4,22,0,8,11,14,15,118,22,0,9,11,14,21,0,1,21,0,9,21,0,6,7,21,0,2,17,25,21,0,1,21,1,72,21,0,5,7,21,1,36,21,1,63,21,1,8,21,1,51,8,21,1,63,21,1,52,0,21,19,3,2,21,1,0,21,1,1,21,1,61,0,21,19,8,7,21,1,59,21,1,6,21,1,70,8,19,21,0,2,17,22,0,6,11,14,15,119,22,0,7,11,14,21,1,1,21,1,56,9,21,0,7,21,1,1,0,18,21,1,56,7,9,3,3,21,1,0,21,1,59,21,1,8,21,1,60,8,21,1,62,0,22,19,21,1,55,0,21,21,1,8,21,1,57,8,19,8,22,0,7,12,14,21,0,1,21,0,7,21,0,6,0,16,21,1,7,21,1,58,21,1,4,21,1,63,7,0,22,19,8,16,17,21,1,36,21,0,4,7,21,0,2,21,0,7,21,0,6,0,16,0,21,17,17,17,21,1,57,16,25,21,0,1,21,1,59,16,21,1,61,0,22,17,0,5,0,56,17,14,21,0,1,21,1,41,21,1,56,7,16,21,1,19,21,0,4,7,21,0,2,17,25,21,0,1,21,1,40,21,1,6,21,1,70,8,21,0,2,17,22,0,3,11,14,21,0,3,0,18,21,1,58,7,16,22,0,4,11,21,1,19,21,1,52,7,0,22,17,22,0,5,11,14,21,0,4,21,1,63,21,0,5,17,21,1,60,0,22,17,21,1,19,21,1,53,7,16,0,5,0,57,17,14,21,0,3,21,1,36,21,1,44,21,1,7,0,22,21,1,63,21,0,5,17,0,17,16,21,1,8,21,1,62,8,8,7,21,0,5,21,1,64,21,0,4,17,17,22,0,6,11,14,21,0,6,21,1,19,21,1,39,7,16,0,5,0,58,17,14,21,0,3,21,1,36,0,22,21,1,1,0,16,0,21,19,3,2,21,1,0,21,1,2,8,7,21,0,4,21,1,59,21,0,5,17,17,21,1,19,21,1,62,7,16,22,0,7,11,14,21,0,1,21,1,68,21,1,6,21,1,22,8,21,0,2,17,21,1,68,21,0,6,0,16,0,21,17,21,1,22,21,0,7,3,1,17,17,25,15,120,22,0,3,11,14,21,0,1,21,1,68,21,1,68,21,1,40,21,1,5,21,1,22,21,1,7,21,1,1,21,1,58,21,1,6,21,1,63,8,21,0,2,19,21,1,52,0,21,19,0,17,21,1,5,0,18,0,22,7,8,9,8,8,19,16,0,21,21,1,42,21,0,3,8,21,0,2,17,25,21,0,1,21,1,59,16,21,1,61,0,22,17,0,5,0,60,17,14,21,0,1,21,1,58,16,21,1,62,0,22,17,0,17,16,0,18,21,0,1,21,1,8,21,1,80,8,7,16,25,21,0,1,21,1,40,16,21,1,58,21,1,8,21,1,63,8,21,1,52,0,21,19,0,17,21,1,5,0,18,0,22,7,8,9,21,1,4,21,1,22,7,21,1,1,19,21,1,82,21,1,2,19,21,0,2,21,1,58,16,17,22,0,3,11,14,21,0,1,21,1,82,21,0,2,21,1,51,21,0,3,17,21,1,52,21,0,3,21,1,63,16,17,21,1,62,0,21,21,1,57,21,0,2,17,21,1,48,0,27,17,21,1,55,21,0,3,17,17,17,25,21,0,1,21,1,59,16,21,1,61,0,22,17,0,5,0,61,17,14,21,0,1,21,1,58,16,21,1,62,0,22,17,0,17,16,0,18,21,0,1,21,1,8,21,1,83,8,7,16,25,21,0,1,0,0,16,0,5,0,62,17,14,21,0,2,21,1,59,16,21,1,60,0,22,17,0,5,0,63,17,14,21,0,1,21,1,40,16,21,1,58,21,1,6,21,1,61,8,21,0,2,17,0,5,0,64,17,14,21,0,2,21,1,68,16,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,0,5,0,65,17,14,21,0,1,21,1,40,16,21,1,82,21,0,2,21,1,58,16,17,22,0,3,11,14,21,0,3,21,1,62,0,22,17,21,1,61,21,0,2,17,21,1,19,21,1,53,7,16,0,5,0,66,17,14,21,0,1,21,0,2,21,1,58,16,21,1,56,0,21,17,21,1,9,15,121,8,21,0,2,17,25,21,0,1,21,1,87,21,1,7,21,1,41,21,0,2,7,8,16,25,21,0,1,21,1,58,21,1,6,21,1,59,8,21,0,2,17,0,5,0,67,17,14,21,0,1,21,1,87,21,0,2,17,25,21,0,2,21,1,59,16,21,1,56,0,21,17,25,0,27,22,0,3,11,22,0,4,11,14,3,0,22,0,5,11,14,21,0,1,22,0,6,11,14,21,0,1,0,18,21,1,58,7,16,21,1,91,16,0,18,15,122,7,16,25,21,1,1,21,1,19,0,18,21,1,22,21,1,7,21,1,68,8,7,7,3,0,21,1,56,16,19,22,0,3,11,14,21,0,1,0,0,16,0,5,0,68,17,14,21,0,1,0,18,21,1,40,7,16,22,0,4,11,14,21,0,4,21,1,68,16,0,16,0,21,17,21,1,58,16,22,0,5,11,14,21,0,4,0,18,21,1,58,7,16,21,1,59,21,0,5,17,21,1,68,16,21,1,19,21,1,53,7,16,0,5,0,69,17,14,21,0,1,21,1,59,16,21,1,60,21,0,5,17,0,5,0,70,17,14,21,0,1,22,0,6,11,21,1,59,16,22,0,7,11,21,1,89,16,22,0,8,11,21,1,36,15,123,7,21,0,1,21,1,40,16,17,22,0,9,11,14,21,0,9,21,0,3,16,21,1,39,21,0,4,0,18,21,1,82,21,1,7,21,0,7,8,7,16,17,0,5,0,71,17,14,21,0,9,0,18,15,124,7,16,21,0,3,16,22,0,10,11,14,21,0,1,21,1,91,21,0,9,17,21,1,36,21,1,44,21,1,7,0,18,21,1,56,7,8,7,21,0,10,17,21,1,57,16,25,21,0,1,0,18,21,1,10,7,16,21,1,19,21,1,53,7,16,0,5,0,72,17,14,21,0,1,21,1,61,0,27,17,21,1,19,21,1,53,7,16,0,5,0,73,17,14,21,0,1,0,4,21,0,1,0,3,16,22,0,5,11,17,22,0,6,11,14,0,21,22,0,7,11,14,21,0,5,0,18,21,1,89,21,1,5,0,18,15,125,7,8,21,0,4,9,7,16,25,21,0,1,21,1,59,16,21,1,59,0,22,17,0,5,0,74,17,14,21,1,93,21,1,1,7,22,0,3,11,14,21,0,1,21,0,3,0,18,15,126,7,21,1,19,0,18,0,18,21,1,22,7,7,7,3,0,21,1,56,16,21,1,56,16,19,3,2,21,1,0,21,1,39,21,1,56,0,22,19,8,16,25,21,0,1,0,0,16,0,5,0,75,17,14,21,0,2,21,1,39,21,1,57,0,23,19,21,1,9,21,1,20,21,1,5,21,1,70,8,8,16,22,0,2,12,14,21,0,2,21,1,59,16,21,1,59,0,22,17,0,5,0,76,17,14,21,0,2,0,18,21,1,59,7,16,21,1,19,21,1,62,7,16,22,0,3,11,14,21,0,1,0,0,16,0,5,0,75,17,14,21,0,1,21,1,59,16,21,1,61,21,0,3,17,0,5,0,77,17,14,21,0,1,21,1,40,16,21,1,82,21,0,3,17,21,1,59,21,0,2,0,18,21,1,40,7,16,21,1,92,16,17,21,1,19,21,1,53,7,16,0,5,0,78,17,14,21,0,2,0,18,21,1,68,7,16,22,0,2,12,0,18,21,1,58,7,16,22,0,4,11,14,21,0,1,21,1,21,21,0,3,17,21,1,22,21,0,4,21,1,19,21,1,55,7,16,3,1,17,21,1,4,21,1,68,7,21,0,1,17,21,1,8,21,1,44,8,22,0,5,11,14,21,0,2,0,16,21,1,7,0,21,8,21,1,93,21,0,5,7,9,0,18,21,1,93,21,1,1,7,7,21,1,55,21,0,4,21,1,85,0,22,17,21,1,90,16,21,1,22,0,22,3,1,17,0,19,21,1,55,7,16,21,1,90,16,19,21,1,19,0,18,0,18,21,1,62,7,7,7,9,0,18,21,0,5,7,9,3,2,21,1,0,21,1,58,21,1,58,0,22,19,8,16,25,21,0,2,21,1,59,16,21,1,59,0,22,17,0,5,0,79,17,14,21,0,1,21,1,40,16,22,0,3,11,21,1,58,21,1,6,21,1,59,8,21,0,2,17,0,5,0,80,17,14,21,0,2,0,18,21,1,10,7,16,21,1,19,21,1,53,7,16,0,5,0,81,17,14,21,0,3,21,1,56,21,1,53,21,1,63,21,1,8,21,1,60,8,19,21,0,2,17,21,1,19,21,1,53,7,16,0,5,0,82,17,14,0,21,21,1,56,21,0,2,17,21,1,55,21,0,3,17,21,1,62,21,0,2,17,22,0,2,12,14,21,0,2,21,1,58,16,21,1,64,21,1,7,21,1,89,8,16,21,1,63,16,21,1,19,21,1,1,21,1,55,21,0,3,21,1,8,0,16,8,19,21,1,62,21,0,2,21,1,8,0,16,8,19,7,0,21,17,21,1,4,0,16,7,21,0,1,21,1,68,16,17,25,21,0,2,0,18,21,0,1,21,1,8,21,1,99,8,7,16,25,21,0,1,21,1,59,21,1,7,0,21,8,21,1,19,21,1,54,7,9,21,1,6,21,1,4,21,1,63,7,8,21,0,2,17,22,0,3,11,14,21,0,1,0,21,21,0,3,3,2,15,127,3,2,21,1,0,0,21,21,1,59,21,0,3,17,8,21,0,2,17,25,21,0,4,22,0,5,11,14,21,0,2,22,0,6,11,14,21,0,1,22,0,7,11,14,15,128,1,22,0,8,11,14,21,0,4,21,1,59,21,1,7,0,21,8,21,1,9,21,0,1,8,9,21,0,8,3,2,0,16,21,0,6,21,1,58,0,22,17,17,25,21,0,1,22,0,2,11,14,21,1,56,21,1,7,0,21,8,21,1,9,15,129,1,8,25,21,0,2,21,1,59,16,21,1,4,21,1,63,7,0,22,17,22,0,5,11,14,21,0,5,21,1,61,0,21,17,0,5,0,83,17,14,21,0,1,21,1,59,16,21,1,61,21,0,5,17,0,5,0,84,17,14,21,0,2,21,1,21,0,22,17,22,0,6,11,21,1,19,21,1,55,7,16,22,0,7,11,14,0,21,21,1,102,21,0,2,21,1,68,16,21,1,8,0,16,8,21,1,6,21,0,4,8,7,21,0,7,17,22,0,8,11,14,21,0,2,21,1,58,16,0,22,0,22,21,1,8,21,1,63,21,1,5,21,1,89,8,8,21,1,55,21,0,7,19,0,18,21,1,62,21,1,7,21,0,7,8,21,1,8,21,0,8,8,7,9,21,1,4,21,1,61,7,0,21,19,21,1,19,21,1,53,7,9,3,2,21,1,0,21,1,56,21,1,7,0,21,8,8,16,0,5,0,85,17,14,21,0,1,21,1,59,16,21,1,4,21,1,63,7,21,0,5,17,22,0,9,11,14,21,0,1,21,1,21,21,0,9,17,22,0,10,11,14,21,0,10,21,1,101,21,0,6,17,22,0,11,11,14,21,0,11,21,1,19,21,1,102,21,0,1,21,1,68,16,21,1,8,0,16,8,21,1,8,21,0,4,21,1,7,21,0,2,21,1,68,16,21,1,8,0,16,8,8,8,7,7,16,22,0,12,11,14,21,1,4,0,21,7,21,1,61,21,0,12,21,1,7,21,1,55,21,1,7,21,0,6,21,1,19,21,1,55,7,16,8,8,19,22,0,13,11,14,21,0,9,21,1,89,16,0,18,21,0,1,21,1,40,16,21,1,8,0,16,8,7,16,21,1,19,21,1,55,7,21,1,89,9,21,1,8,21,1,68,8,16,21,1,55,21,0,10,21,1,19,21,1,55,7,16,17,0,18,15,130,1,21,1,7,21,0,2,21,1,58,16,8,7,16,25,21,0,1,22,0,2,11,14,21,1,78,21,1,53,7,21,1,64,9,0,19,21,1,53,7,21,1,78,21,1,62,7,9,3,2,0,16,21,0,1,17,22,0,3,11,14,15,131,1,25,21,0,1,21,1,59,16,21,1,61,0,22,17,0,5,0,87,17,14,21,0,1,21,1,105,16,22,0,5,11,14,21,0,1,21,1,58,16,21,1,89,16,0,18,0,22,21,1,1,21,0,1,21,1,59,21,1,56,0,22,19,21,1,9,21,1,41,21,1,56,7,8,16,21,1,44,21,0,5,17,21,1,8,0,16,8,21,1,6,21,1,40,8,0,22,21,1,8,21,1,63,8,19,3,2,21,1,0,21,1,56,21,1,7,0,21,8,8,7,16,21,0,4,21,0,5,17,21,1,44,21,0,5,21,1,108,16,17,25,21,0,2,21,1,59,16,22,0,3,11,14,21,0,1,21,1,59,16,21,1,61,21,0,3,17,0,5,0,88,17,14,21,0,1,21,0,3,21,1,76,21,1,89,8,21,0,2,21,1,40,16,17,21,0,3,21,1,76,21,1,39,8,21,0,2,17,25,21,0,2,21,1,59,16,21,1,60,0,22,17,0,5,0,89,17,14,21,0,1,21,1,40,16,21,1,58,21,1,6,21,1,61,8,21,0,2,17,0,5,0,90,17,14,21,0,2,21,1,68,16,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,0,5,0,91,17,25,21,0,1,21,1,40,16,21,1,97,21,0,2,17,0,18,21,1,19,21,1,51,7,7,16,21,1,89,16,0,18,21,1,4,21,0,1,7,21,1,100,21,1,44,21,1,7,21,0,2,8,19,7,16,25,21,0,1,21,1,115,21,0,2,17,14,21,0,2,21,1,68,16,22,0,2,12,14,21,0,2,21,1,113,16,21,1,64,16,21,1,19,21,1,62,7,16,21,1,63,21,0,1,21,1,59,16,17,22,0,3,11,14,21,0,3,21,1,56,21,0,2,17,21,1,19,21,1,53,7,16,0,5,0,92,17,14,21,0,1,21,1,116,21,0,3,21,1,89,16,21,1,1,21,1,91,21,1,4,21,1,113,21,1,5,21,1,64,8,7,19,21,0,2,17,21,1,96,21,0,2,17,17,25,21,0,1,21,1,115,21,0,2,17,14,21,0,2,21,1,68,16,22,0,2,12,14,21,0,1,21,1,59,16,22,0,3,11,14,21,0,2,21,0,3,21,1,8,21,1,56,8,21,1,53,21,1,113,19,16,21,1,19,21,1,53,7,16,21,1,125,16,14,21,0,1,21,1,116,21,0,3,21,1,89,16,21,1,1,21,1,91,21,1,4,21,1,113,21,1,5,21,1,64,8,7,19,21,0,2,17,21,1,96,21,0,2,17,21,1,108,16,17,25,21,0,1,21,1,112,21,1,7,21,0,2,8,21,1,120,21,1,8,21,1,41,21,1,71,7,8,9,21,1,6,21,1,112,8,21,0,2,17,25,21,0,1,15,132,1,21,0,5,21,1,123,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,0,1,21,0,4,21,0,2,17,22,0,6,11,14,21,0,6,21,0,5,21,0,2,17,21,1,39,21,0,1,17,21,1,126,16,14,21,0,6,25,21,0,1,21,1,59,16,21,1,59,0,22,17,21,1,125,16,14,21,0,1,21,1,96,16,22,0,3,11,14,21,0,3,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,21,1,125,16,14,21,0,3,0,3,16,22,0,4,11,14,0,22,21,1,61,21,0,4,17,21,1,19,21,1,53,7,16,21,1,126,16,14,21,0,4,21,1,64,16,21,1,91,16,22,0,5,11,14,21,0,5,21,1,36,0,27,7,16,21,1,96,21,0,1,21,1,36,21,1,58,7,16,21,1,91,16,17,21,1,44,21,0,5,21,1,96,21,0,3,17,21,1,105,16,17,25,21,0,2,21,1,59,16,21,1,59,0,22,17,21,1,125,16,14,21,0,2,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,21,1,125,16,14,21,0,1,21,1,96,21,1,6,21,1,44,21,1,7,21,1,105,8,8,21,0,2,21,1,97,16,17,25,21,0,1,0,0,16,21,1,126,16,14,21,0,1,21,1,59,16,21,1,59,0,21,17,21,1,126,16,14,21,0,1,21,1,123,16,25,21,0,2,21,1,59,21,1,6,21,1,63,8,21,0,1,17,22,0,3,11,14,21,0,3,0,22,21,1,8,21,1,61,8,21,1,53,21,1,61,21,1,7,0,21,8,19,16,21,1,126,16,14,21,0,2,0,22,21,1,58,3,2,21,1,124,21,0,3,8,16,22,0,4,11,14,21,0,1,21,1,58,16,21,1,61,21,0,4,17,21,1,126,16,14,21,0,1,21,1,44,21,1,82,21,1,7,21,0,4,8,3,2,21,1,124,21,0,3,8,16,21,1,39,21,0,2,17,21,1,126,16,14,21,0,1,21,1,85,21,0,4,17,25,21,0,1,21,1,58,16,21,1,59,0,23,17,21,1,126,16,14,21,0,1,21,1,44,16,21,1,39,21,0,2,17,21,1,126,16,14,21,0,1,21,1,44,0,22,17,25,21,0,1,21,1,58,16,21,1,59,0,22,17,21,1,126,16,14,21,0,1,21,1,44,16,25,21,0,1,21,1,59,16,21,1,59,0,22,17,21,1,125,16,14,21,0,1,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,21,1,125,16,14,21,0,1,21,1,85,21,1,7,0,22,8,21,1,61,21,1,85,21,1,7,0,27,8,19,21,1,19,21,1,53,7,9,16,21,1,126,16,14,21,0,1,0,3,16,25,21,1,4,21,1,4,0,21,7,0,5,0,95,19,3,1,21,1,96,21,0,1,21,1,44,0,22,17,17,7,21,1,123,21,1,56,21,1,112,21,0,1,21,1,44,0,21,17,19,21,1,123,9,19,25,21,0,1,21,1,130,1,16,25,21,0,1,21,0,5,21,0,2,17,22,0,6,11,14,0,21,22,0,7,11,22,0,8,11,14,21,0,6,0,21,21,1,74,15,133,1,8,16,14,21,0,1,22,0,9,11,14,15,134,1,22,0,10,11,14,21,0,7,21,0,10,21,1,1,21,0,4,21,0,2,19,7,16,22,0,11,11,14,21,0,8,21,1,63,16,21,0,10,21,1,1,21,1,131,1,21,0,4,7,21,0,2,19,7,16,22,0,12,11,14,21,0,6,0,21,21,1,74,21,1,4,21,0,11,21,0,12,3,2,7,21,1,123,0,21,21,1,8,21,1,56,8,19,21,1,123,21,1,50,19,8,16,25,21,1,20,21,1,6,0,18,21,0,1,7,8,25,21,0,1,25,21,0,1,25,21,0,1,14,21,1,7,21,2,65,16,25,0,22,0,7,21,1,6,17,22,1,6,12,14,21,0,1,0,16,21,1,6,17,25,21,1,8,21,1,7,21,1,5,0,16,21,0,1,17,17,22,1,8,12,25,21,0,2,0,14,16,22,0,5,11,14,21,0,2,0,12,16,0,17,16,21,2,19,0,8,21,2,7,21,0,1,0,14,16,21,2,8,0,16,8,0,12,21,0,5,21,2,8,0,16,8,19,8,7,0,22,17,0,5,0,32,17,14,21,0,5,21,2,19,0,8,7,0,22,17,0,17,16,0,18,21,0,1,0,15,16,21,2,8,0,16,8,21,0,4,21,0,2,0,15,16,21,2,8,0,16,8,19,7,16,0,15,21,0,5,17,25,21,0,2,0,14,16,22,0,5,11,14,21,0,2,0,12,16,22,0,6,11,14,21,0,1,0,14,16,22,0,7,11,14,21,0,6,0,17,16,21,2,19,0,8,21,2,7,21,0,7,21,2,8,0,16,8,0,12,21,0,5,21,2,8,0,16,8,19,8,7,0,22,17,0,5,0,33,17,14,21,0,6,0,7,21,0,1,0,12,16,17,0,17,16,21,2,19,0,8,21,2,7,0,6,21,2,7,21,0,6,8,21,2,4,0,16,7,21,0,7,19,8,7,0,22,17,22,0,8,11,14,21,0,2,0,15,16,22,0,9,11,14,21,0,1,0,15,16,22,0,10,11,14,21,0,8,0,17,21,2,6,0,18,21,2,4,21,0,10,7,0,16,0,6,21,2,7,0,8,21,2,7,21,0,8,8,8,19,21,0,4,21,0,9,21,2,8,0,16,8,19,7,8,21,0,9,21,2,17,16,17,0,15,16,0,15,21,0,7,17,25,21,0,1,21,2,24,21,0,4,7,21,0,2,17,25,21,0,1,0,18,15,135,1,21,0,2,7,7,16,25,21,0,2,0,18,15,136,1,21,0,1,7,7,16,25,21,1,6,0,8,0,23,17,0,13,21,0,1,21,2,19,21,2,15,7,16,22,1,10,12,0,7,21,0,1,21,2,19,21,2,16,7,16,22,1,9,12,17,17,25,21,0,1,14,21,2,4,0,21,7,21,2,14,0,21,21,2,102,21,1,8,21,2,8,0,16,8,21,2,6,21,0,4,8,7,21,1,7,17,19,22,0,5,11,14,21,2,1,21,1,6,3,2,21,2,0,0,13,21,2,7,21,1,6,8,8,22,0,6,11,14,0,21,0,12,21,1,6,17,0,6,21,1,6,17,0,2,0,23,17,21,2,16,16,22,0,7,11,0,17,16,0,18,21,2,1,0,6,0,22,19,0,7,21,0,7,19,0,10,0,23,19,7,16,21,2,19,15,137,1,7,21,1,6,0,17,16,17,25,21,0,1,0,18,21,2,11,7,16,21,2,19,0,8,7,0,22,17,0,5,0,36,17,14,0,22,0,7,21,1,3,17,22,0,3,11,14,21,2,1,0,7,21,0,3,19,21,2,4,0,16,7,21,1,3,0,17,16,0,18,0,7,21,2,7,21,0,3,8,7,16,0,19,21,2,1,21,2,4,0,16,7,21,0,1,19,0,12,0,21,19,0,8,0,7,19,0,6,21,2,1,19,7,16,19,22,0,4,11,14,21,0,1,0,19,0,6,7,16,21,2,8,0,16,8,22,0,5,11,14,0,21,21,0,4,16,22,0,6,11,21,0,5,16,22,0,7,11,14,21,0,3,21,0,5,16,0,17,16,0,18,15,138,1,7,16,25,21,0,1,21,2,21,0,22,17,22,0,3,11,21,2,19,0,8,7,0,22,17,22,0,4,11,14,21,0,4,0,17,16,0,15,21,0,3,17,0,18,0,6,21,2,7,0,8,21,2,7,21,0,4,8,8,21,2,4,0,16,7,21,0,1,0,15,16,19,7,21,0,2,17,25,21,0,2,0,18,21,0,1,21,2,8,0,16,8,7,16,25,21,0,1,3,1,25,21,0,1,14,21,1,9,0,16,21,1,12,0,16,21,1,14,17,17,22,0,3,11,14,21,1,14,0,6,0,22,17,22,1,14,12,21,1,13,16,22,1,15,12,14,21,0,3,25,21,0,1,0,12,21,1,15,17,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,42,17,14,21,0,1,21,1,3,21,0,2,17,25,21,0,2,0,12,16,21,2,12,0,22,17,0,5,0,43,17,14,21,0,1,21,2,40,16,21,2,17,21,2,6,0,13,8,21,0,2,17,0,5,0,44,17,14,21,0,2,21,2,17,16,22,0,3,11,14,21,0,2,0,15,16,21,2,8,0,16,8,22,0,4,11,14,21,0,1,21,0,3,21,2,13,0,21,17,21,2,9,15,139,1,8,0,21,17,25,21,0,1,21,2,59,21,0,4,17,25,21,0,1,21,2,36,21,2,1,0,22,3,2,21,2,0,21,2,2,8,7,21,1,4,17,21,2,19,21,2,55,7,16,22,0,3,11,14,21,0,3,21,2,56,0,21,17,0,5,0,51,17,14,21,1,4,21,2,58,16,0,17,16,21,2,55,21,1,4,17,21,2,19,21,2,62,7,16,22,0,4,11,14,21,1,3,0,16,21,0,4,17,21,2,134,1,16,22,0,5,11,14,0,30,21,2,56,21,0,5,17,0,5,0,52,17,14,21,2,59,21,2,7,21,2,51,8,0,5,0,53,19,21,2,2,21,2,1,19,22,0,6,11,14,21,0,3,21,2,47,21,1,7,17,21,0,6,21,2,51,21,2,52,3,3,21,2,0,21,0,5,21,2,51,0,23,17,8,16,22,0,7,11,14,21,1,3,21,2,36,21,2,1,21,0,7,3,2,21,2,0,21,2,2,8,7,21,1,4,17,22,1,3,12,14,21,0,7,21,2,55,21,0,3,17,21,0,5,21,2,59,0,25,17,21,2,9,21,2,56,21,2,7,21,1,7,8,21,2,9,15,140,1,8,8,16,25,21,1,8,0,17,16,0,18,21,2,2,7,21,2,7,0,1,8,15,141,1,3,2,21,2,0,21,1,7,21,2,56,0,21,17,8,21,0,1,17,25,21,0,1,21,2,11,16,0,5,0,54,17,14,21,0,1,0,17,16,25,21,0,1,21,2,59,16,21,2,59,0,22,17,0,5,0,55,17,14,21,0,1,0,18,21,1,3,7,16,21,2,19,0,18,21,2,22,21,2,7,21,2,68,8,7,7,3,0,21,2,56,16,17,25,21,1,9,21,1,7,21,2,62,21,0,4,17,7,22,0,5,11,14,21,0,1,21,2,36,21,0,5,7,21,2,2,21,2,5,0,18,21,0,1,21,2,8,21,0,5,8,7,8,21,2,1,21,2,5,0,18,21,2,1,21,0,5,21,0,2,19,7,8,21,1,8,3,4,21,2,0,21,2,39,21,2,6,21,2,70,8,21,2,60,21,0,4,21,2,52,0,21,17,19,21,2,54,0,21,21,2,60,21,0,4,17,21,2,53,21,1,7,17,19,21,2,67,0,23,19,21,2,19,21,2,62,21,2,7,0,23,21,2,8,21,2,55,8,8,7,9,8,21,0,2,17,25,21,0,2,0,17,16,0,18,21,0,1,21,2,40,16,21,2,8,0,16,8,7,16,22,0,3,11,14,21,0,1,21,2,21,21,0,2,17,22,0,4,11,21,2,19,21,2,55,7,16,22,0,5,11,14,21,0,3,21,2,19,21,2,55,7,16,0,17,16,0,18,21,2,1,21,2,55,21,0,5,19,21,2,62,21,0,5,0,17,16,21,2,68,21,0,4,17,19,21,2,5,0,18,21,0,1,21,2,68,16,21,2,8,0,16,8,7,8,7,16,21,2,68,21,0,3,17,25,21,0,2,21,2,10,16,0,5,0,59,17,14,21,0,1,21,2,58,16,22,0,3,11,14,0,21,21,2,56,21,0,2,17,22,0,4,11,14,21,0,2,21,2,50,16,22,0,5,11,21,2,51,21,0,3,17,22,0,6,11,14,21,0,5,3,1,22,0,7,11,14,0,22,22,0,8,11,14,21,0,6,0,17,16,21,0,4,21,2,9,21,2,62,8,21,0,6,21,2,63,21,0,3,17,17,21,0,1,21,2,59,16,21,2,58,0,22,17,21,2,9,15,142,1,8,21,0,1,17,22,0,9,11,14,21,0,9,0,18,21,0,1,21,2,68,16,21,2,8,0,16,8,7,16,21,0,5,21,2,56,21,0,3,17,21,2,9,15,143,1,21,0,1,7,8,16,21,2,68,21,0,7,17,25,21,0,2,21,2,68,16,21,2,1,21,2,69,21,2,6,0,18,21,2,62,7,8,21,2,64,19,21,1,3,17,21,2,36,21,0,1,21,2,8,21,2,44,21,2,7,0,18,21,2,56,7,8,8,7,16,21,2,57,21,2,68,21,2,40,21,2,5,21,0,1,21,2,40,16,21,2,85,21,2,7,21,2,58,8,21,0,2,17,21,2,8,21,2,22,8,8,19,16,25,21,0,1,21,2,58,21,2,7,21,1,4,8,21,2,9,15,144,1,8,16,14,21,1,5,0,16,0,22,21,2,62,21,1,3,17,22,1,3,12,17,25,21,0,2,21,2,89,16,0,18,21,2,55,21,2,7,21,0,1,21,2,59,21,1,8,17,8,21,2,4,21,2,98,7,21,1,6,19,21,2,40,21,2,8,0,16,8,21,0,1,19,7,16,25,21,0,1,21,2,82,16,0,18,21,2,19,21,2,62,7,7,16,22,0,3,11,14,21,0,3,21,2,85,0,27,17,21,2,91,21,0,1,17,21,2,63,21,0,3,21,2,90,16,0,16,0,21,17,21,2,89,16,17,25,21,0,1,14,21,1,6,0,16,21,1,7,17,21,2,1,0,22,21,2,62,21,1,7,17,22,1,7,12,17,25,21,0,1,21,2,68,16,21,1,3,16,0,18,21,0,1,21,2,40,16,21,2,89,16,21,2,68,16,21,2,8,21,2,44,8,7,16,25,21,0,1,21,2,58,21,2,6,21,2,63,8,21,0,2,17,21,2,55,16,22,0,3,11,14,21,0,1,21,2,58,21,2,6,21,2,51,8,21,0,2,17,22,0,4,11,14,21,0,1,15,145,1,21,2,7,21,2,58,21,2,62,21,0,4,21,2,89,16,21,2,62,0,22,17,21,2,63,16,19,8,21,2,6,15,146,1,8,21,0,2,17,22,0,5,11,14,21,0,5,21,0,3,3,2,25,21,0,2,22,0,3,11,14,21,0,1,22,0,4,11,14,15,147,1,21,1,7,3,2,21,2,0,21,2,59,21,2,7,21,1,6,8,8,22,0,5,11,14,0,21,21,0,5,16,25,15,148,1,22,0,3,11,14,0,27,21,0,3,0,22,21,2,62,21,0,1,17,17,21,2,62,0,22,17,25,21,0,2,21,2,103,21,0,1,21,2,8,21,1,13,8,7,16,25,21,0,2,21,2,59,16,21,2,4,21,2,63,7,0,22,17,22,0,3,11,14,21,0,3,21,2,61,0,21,17,0,5,0,86,17,14,21,0,1,21,2,20,16,21,2,1,21,2,5,21,0,3,21,2,76,0,21,8,8,21,2,1,21,0,3,21,2,76,21,2,56,8,3,2,21,2,0,21,0,3,21,2,56,0,21,17,8,21,2,6,0,18,21,2,40,7,8,21,1,3,9,3,2,21,2,0,21,0,2,21,2,58,16,21,2,56,0,21,17,8,15,149,1,3,2,21,2,0,21,2,68,21,2,5,21,2,58,8,21,2,56,0,26,19,21,2,6,21,2,53,8,8,21,0,2,17,25,21,0,1,25,21,0,1,21,2,10,16,0,5,0,96,17,14,21,0,1,21,2,51,21,1,8,17,22,1,8,12,14,21,0,1,21,2,52,21,1,7,17,22,1,7,12,25,21,0,1,21,2,62,0,21,17,21,2,89,16,21,2,96,21,1,9,3,1,17,0,19,21,2,2,21,2,5,21,0,4,8,7,16,25,21,0,1,21,2,2,21,0,4,17,25,21,0,4,21,2,2,21,0,1,17,25,21,0,2,22,0,3,11,0,7,16,22,0,4,11,14,0,21,22,0,5,11,22,0,6,11,22,0,7,11,14,0,25,22,0,8,11,14,21,0,1,0,22,0,12,21,2,7,17,0,7,0,22,17,21,3,9,0,18,0,8,21,3,7,21,2,7,8,7,8,16,21,3,8,0,16,8,21,3,6,21,1,5,8,22,0,9,11,14,21,0,9,0,21,0,22,0,23,3,4,22,0,10,11,14,0,6,15,150,1,3,2,0,16,21,0,3,0,13,0,26,17,17,22,0,11,11,14,15,151,1,22,0,12,11,14,15,152,1,15,153,1,21,0,12,3,3,21,3,0,15,154,1,8,22,0,13,11,14,21,0,1,0,18,21,0,1,21,3,8,15,155,1,8,7,16,25,21,1,6,21,1,7,0,12,21,0,1,17,21,3,9,15,156,1,8,16,25,21,0,1,0,22,0,7,21,1,3,17,21,3,13,21,0,2,17,21,3,9,21,3,41,21,0,0,21,3,7,21,0,2,0,6,0,22,17,8,7,8,16,21,2,3,21,0,2,21,1,4,16,17,25,21,2,7,21,3,63,21,0,1,17,0,17,16,0,18,21,2,6,0,1,16,7,16,21,3,22,22,2,6,13,14,21,2,7,25,21,0,1,21,3,50,21,2,7,17,0,18,21,2,6,21,3,8,0,16,8,7,16,25,21,0,2,21,3,21,0,22,17,22,0,3,11,21,3,22,22,1,7,13,14,21,0,3,21,3,19,21,3,55,7,16,22,1,8,12,21,3,1,21,3,5,0,17,8,0,18,21,3,62,7,21,3,55,19,21,0,1,17,25,21,1,6,21,3,63,21,1,5,17,21,3,55,21,1,8,17,0,17,16,0,18,21,0,4,0,1,16,21,3,68,16,0,16,0,21,17,7,16,21,3,22,21,3,4,21,3,22,7,3,2,21,3,0,21,1,4,8,21,0,1,21,3,68,16,17,25,21,0,1,22,2,4,12,21,3,4,0,16,7,21,2,6,17,22,2,5,12,14,0,27,22,2,3,12,25,21,0,2,0,18,21,0,1,21,3,8,0,16,8,7,16,25,21,0,1,21,3,59,21,0,2,17,0,19,21,3,53,7,16,21,3,19,21,3,62,7,16,22,0,3,11,14,21,0,3,21,3,89,16,0,18,21,0,2,21,3,8,0,16,8,7,16,21,3,19,21,3,55,7,16,22,0,4,11,14,21,0,3,21,3,57,21,3,7,21,1,4,8,21,3,9,21,0,2,21,0,1,3,2,21,3,8,21,3,36,0,16,7,8,21,3,5,15,157,1,8,8,16,14,21,0,4,25,21,1,4,21,3,62,21,3,7,21,0,1,8,21,3,6,21,2,5,8,21,1,3,17,21,3,59,21,3,7,0,21,8,21,3,9,21,0,1,21,3,62,0,22,17,21,3,5,21,1,5,8,8,16,25,21,0,1,0,22,21,3,8,21,3,57,8,21,3,9,15,158,1,8,21,0,2,17,25,21,0,2,21,3,106,16,21,3,90,16,22,0,3,11,14,21,0,1,21,3,105,21,0,2,21,3,44,21,0,3,17,17,21,3,4,21,3,63,7,0,22,17,21,3,52,0,21,17,21,3,4,21,3,44,7,21,0,3,17,22,0,4,11,14,21,0,1,21,1,3,21,3,76,21,3,39,8,21,0,2,21,3,44,21,0,4,17,17,21,2,2,21,3,9,21,3,55,21,3,7,21,3,63,21,3,7,21,0,4,8,8,21,3,62,21,3,2,19,8,21,0,2,21,3,58,16,17,25,21,0,1,21,1,8,0,7,0,22,17,21,4,9,21,1,9,0,7,0,22,19,21,4,9,15,159,1,8,8,0,22,0,7,21,0,1,17,17,25,21,0,2,0,6,21,1,3,17,22,1,4,12,14,21,0,1,0,6,21,1,3,17,22,1,7,12,21,2,6,16,22,1,6,12,0,6,21,1,3,17,21,2,6,16,22,1,5,12,14,21,1,7,0,13,21,3,6,17,22,1,8,12,14,21,1,6,21,1,11,16,14,21,1,7,21,1,13,21,1,4,17,25,21,0,2,0,6,0,22,17,22,1,4,12,0,12,21,1,6,17,0,8,0,23,17,0,6,22,1,8,13,14,21,0,2,25,21,0,1,0,6,0,22,17,22,1,7,12,0,12,21,1,5,17,0,6,22,1,8,13,14,21,0,1,25,21,0,1,21,1,10,21,4,0,21,1,8,8,21,0,2,17,25,21,0,1,0,16,21,1,7,21,1,13,21,1,4,17,17,25,0,22,0,6,21,0,1,17,21,2,4,16,22,2,6,12,21,2,5,16,22,2,7,12,14,21,2,6,25,21,0,1,21,4,19,21,4,63,7,16,21,4,55,16,22,2,3,12,14,21,0,1,21,4,19,21,4,51,7,16,21,4,55,21,1,4,17,22,1,4,12,25,0,23,21,4,47,21,0,2,17,21,4,51,16,22,0,3,11,21,4,62,21,0,1,17,22,0,4,11,21,3,2,16,22,0,5,11,14,21,0,1,21,0,4,3,2,0,16,21,0,5,17,21,2,3,21,0,2,21,4,50,0,23,17,21,4,55,21,0,5,17,21,4,62,21,0,3,17,17,25,21,0,1,14,0,23,22,2,8,12,14,21,2,4,22,2,7,12,14,21,0,1,22,2,4,12,25])
- ,provide.concat([0,1,2,32,3,8,-1,Infinity,-Infinity,4,str("Argument to fold must be a list"),str("Equal-rank argument shapes don\'t agree"),str("Argument shape prefixes don\'t agree"),str("Grade argument must have rank at least 1"),str("Replication argument in Indices or Replicate must have rank 1"),str("Amounts to replicate must be natural numbers"),str("Right argument to Select must be an array"),str("Indices in Select must be integers"),str("Select indices out of range"),str("Reverse argument must have rank at least 1"),str("Amount to rotate must be an integer"),str("First-axis function right argument must have rank at least 1"),str("Left argument must have rank at most 1"),str("Left argument length must be at most right argument rank"),str("Elements in Merge argument must have matching shapes"),str("No monadic form: ≥"),str("No monadic form: ≤"),str("Identity not found"),str("Shape argument to Reshape must have rank at most 1"),str("Shape in Reshape must consist of natural numbers"),str("Can\'t compute axis length in Reshape when rest of shape is empty"),str("Shape in Reshape must be a natural number or ∘ ⌊ ⌽ ↑"),str("Shape must be exact when reshaping with ∘"),str("Range argument must consist of natural numbers"),str("Range argument must be a number or list"),str("Insert argument must have rank at least 1"),str("Rank of joined arguments must differ by at most 1"),str("Cell shapes of joined arguments must match"),str("Left argument to Take or Drop must be an integer"),str("Prefixes argument must have rank at least 1"),str("Suffixes argument must have rank at least 1"),str("Windows right argument must be an array"),str("Windows left argument must have rank at most 1"),str("Windows left argument length must be at most right argument rank"),str("Windows left argument must consist of natural numbers"),str("Window length must be at most axis length plus one"),str("Replicate argument lengths must match"),str("Join argument must be an array"),str("Join argument elements must all have the same rank"),str("Join argument element rank must be at least argument rank"),str("Join argument element shapes must be compatible"),str("Grouping argument must consist of integers"),str("Grouping argument values cannot be less than ¯1"),str("Group Indices argument must be a list"),str("Group right argument must be an array"),str("Compound group left argument must be a list"),str("Group left argument total rank must be at most right argument rank"),str("Group argument lengths must be compatible"),str("Indices in compound Pick must be lists"),str("Pick index length must match right argument rank"),str("Pick indices must consist of integers"),str("Pick index out of range"),str("Bins argument must have rank at least 1"),str("Bins right argument rank is too small"),str("Bins left argument must be sorted"),str("Search principal argument must have rank at least 1"),str("Unique mask argument must have rank at least 1"),str("Find left argument rank cannot exceed right argument rank"),str("Left argument to Reorder Axes must have rank at most 1"),str("Reorder Axes left argument length must not exceed right argument rank"),str("Reorder Axes left argument must consist of natural numbers"),str("No such axis in Reorder Axes"),str("Inverse failed"),str("Inverse does not exist"),str("Inverse not found"),str("Repetition numbers must be integers")])
- ,[[0,1,0,138],[2,0,2935,6],[0,0,2962,3],[0,0,2966,3],[0,0,2970,3],[1,0,2974,5],[1,0,2982,5],[2,0,3000,6],[2,0,3015,6],[2,0,3034,6],[2,0,3056,6],[2,0,3078,6],[0,0,3110,3],[0,0,3121,3],[0,0,3130,3],[1,0,3139,9],[0,0,3252,3],[0,0,3292,4],[1,1,3368,4],[1,1,3441,3],[0,0,3505,3],[0,0,3516,5],[2,0,3600,12],[0,0,3806,4],[0,0,3855,6],[0,0,3945,7],[0,0,4074,4],[0,0,4230,4],[0,0,4291,4],[2,0,4393,16],[1,1,4623,2],[0,0,4647,3],[0,0,4674,3],[0,0,4700,3],[1,1,4739,2],[2,1,4749,4],[0,0,4785,4],[1,1,4882,2],[0,0,4915,3],[0,0,4942,3],[0,0,4964,3],[0,0,4986,3],[0,0,4997,3],[0,0,5026,3],[0,0,5032,9],[0,0,5183,5],[0,0,5216,3],[0,0,5225,3],[1,1,5231,2],[2,0,5300,10],[2,0,5359,8],[1,0,5552,5],[0,0,5594,8],[0,0,5830,4],[0,0,5911,3],[0,0,5961,4],[0,0,6082,3],[0,0,6132,4],[0,0,6298,3],[0,0,6317,3],[0,0,6351,3],[0,0,6365,7],[0,0,6412,11],[1,0,6677,8],[0,0,6776,4],[0,0,6859,6],[0,0,7202,4],[0,0,7415,3],[0,0,7433,4],[1,0,7505,9],[1,1,7575,3],[1,0,7600,14],[1,1,8035,4],[1,0,8085,6],[0,0,8224,4],[0,0,8292,3],[0,0,8366,3],[0,0,8421,4],[0,0,8550,4],[0,0,8670,3],[2,0,8710,6],[2,0,8739,7],[0,0,8780,6],[0,0,8930,3],[0,0,9000,3],[0,0,9037,5],[0,0,9181,3],[0,0,9228,3],[0,0,9254,3],[0,0,9341,3],[1,1,9396,2],[2,0,9405,13],[1,1,9559,2],[1,1,9573,2],[1,1,9577,2],[0,0,9581,3],[0,0,9593,3],[0,0,9616,3],[1,0,9637,6],[1,0,9754,11],[1,0,9975,5],[0,0,9990,3],[0,0,10005,3],[0,0,10020,3],[1,0,10065,8],[0,0,10204,8],[0,0,10372,5],[0,0,10447,3],[0,0,10464,3],[0,0,10470,4],[0,0,10519,3],[0,0,10529,3],[0,0,10557,5],[1,0,10653,5],[0,0,10664,8],[0,0,10921,3],[0,0,10962,3],[0,0,10982,3],[1,0,11036,6],[0,0,11189,6],[0,0,11317,10],[0,0,11502,3],[0,0,11602,3],[0,0,11644,3],[0,0,11697,4],[0,0,11757,3],[0,0,11788,3],[0,0,11826,6],[0,0,11933,6],[0,0,11983,4],[0,0,12013,3],[0,0,12032,4],[1,1,12190,2],[0,0,12194,3],[1,0,12237,5],[1,0,12274,5],[1,0,12285,5],[0,0,12296,14],[0,0,12472,3],[0,0,12493,3],[0,0,12547,3],[0,0,12582,3],[0,0,12606,4],[1,0,12666,5],[0,0,12733,3],[0,0,12762,3],[0,0,12779,5],[0,0,12890,3],[0,0,12945,3],[0,0,12969,5],[0,0,13098,3],[0,0,13138,3],[0,0,13221,3],[0,0,13255,3],[0,0,13284,3],[0,0,13302,3],[0,0,13319,3],[0,0,13348,3],[0,0,13391,6],[0,0,13470,3]]
+ new Uint8Array([15,1,22,0,0,11,14,15,2,22,0,1,11,14,15,3,0,20,15,4,8,22,0,2,11,14,15,5,22,0,3,11,14,15,6,22,0,4,11,14,15,7,22,0,5,11,14,15,8,22,0,6,11,14,15,9,22,0,7,11,14,15,10,22,0,8,11,14,15,11,22,0,9,11,14,0,12,21,0,7,0,11,8,0,21,3,2,21,0,0,0,0,8,22,0,10,11,14,0,12,21,0,7,0,11,8,0,8,0,13,21,0,7,0,21,8,19,0,21,3,2,21,0,0,0,0,8,22,0,11,11,14,21,0,4,0,13,7,22,0,12,11,14,21,0,12,0,7,0,22,19,0,20,15,12,8,22,0,13,11,14,0,13,0,7,0,22,19,22,0,14,11,14,15,13,0,16,21,0,14,19,0,20,0,11,8,22,0,15,11,14,15,14,0,16,21,0,13,19,0,20,0,7,21,0,5,21,0,15,21,0,5,0,7,8,8,8,22,0,16,11,14,0,22,0,14,0,16,0,21,19,3,2,21,0,0,0,12,21,0,13,0,21,19,8,22,0,17,11,14,15,15,22,0,18,11,14,21,0,18,22,0,19,11,14,0,0,0,7,0,22,19,21,0,9,21,0,13,8,22,0,20,11,14,0,14,21,0,8,15,16,8,22,0,21,11,14,15,17,22,0,22,11,14,15,18,22,0,23,11,14,15,19,22,0,24,11,14,0,13,0,7,21,0,12,19,22,0,25,11,14,0,22,0,15,0,16,0,21,19,21,0,8,0,13,0,8,0,23,19,0,7,0,22,19,15,20,3,2,21,0,0,21,0,1,21,0,5,0,0,8,8,8,3,2,21,0,0,21,0,1,21,0,5,0,14,8,21,0,19,0,8,7,0,22,19,21,0,13,0,21,19,8,22,0,26,11,14,21,0,25,21,0,26,21,0,4,21,0,26,7,0,7,9,3,2,21,0,0,21,0,2,21,0,5,0,0,8,8,15,21,3,3,21,0,0,0,0,21,0,6,0,6,8,8,22,0,27,11,14,15,22,22,0,28,11,14,15,23,22,0,29,11,14,0,12,21,0,13,0,21,19,21,0,9,15,24,8,22,0,30,11,14,0,12,21,0,13,0,21,19,21,0,9,15,25,8,22,0,31,11,14,15,26,22,0,32,11,14,15,27,22,0,33,11,14,15,28,22,0,34,11,14,15,29,22,0,35,11,14,15,30,22,0,36,11,14,0,0,21,0,6,0,12,8,0,21,3,2,21,0,1,21,0,5,0,0,8,0,12,3,2,0,12,21,0,6,0,12,8,0,21,3,2,0,14,21,0,6,21,0,36,0,12,7,8,21,0,19,0,8,7,0,22,19,0,21,3,2,15,31,3,5,21,0,19,15,32,7,16,22,0,37,11,14,0,21,15,33,3,2,21,0,0,0,0,8,22,0,38,11,14,21,0,37,0,20,21,0,38,8,22,0,39,11,14,21,0,37,0,7,0,22,19,0,20,3,0,0,14,3,2,21,0,0,0,0,8,8,22,0,40,11,14,15,34,22,0,41,11,14,15,35,22,0,42,11,14,0,22,21,0,42,21,0,32,8,21,0,7,21,0,20,8,22,0,43,11,14,21,0,43,0,20,21,0,43,21,0,7,0,21,8,8,22,0,44,11,14,0,0,21,0,9,0,15,21,0,5,21,0,17,8,21,0,13,0,21,19,21,0,9,15,36,8,8,22,0,45,11,14,15,37,22,0,46,11,14,21,0,24,0,9,7,22,0,47,11,14,21,0,24,0,10,7,22,0,48,11,14,21,0,4,21,0,47,21,0,8,21,0,48,8,7,0,20,0,23,21,0,47,16,21,0,8,21,0,48,8,8,22,0,49,11,14,21,0,24,15,38,0,20,0,7,21,0,1,3,2,21,0,0,0,13,21,0,7,0,21,8,8,8,7,22,0,50,11,14,21,0,24,15,39,0,20,21,0,15,8,7,22,0,51,11,14,21,0,24,15,40,0,20,0,7,21,0,5,21,0,51,21,0,5,0,7,8,8,8,7,22,0,52,11,14,21,0,24,0,8,7,0,20,21,0,46,0,21,7,8,22,0,53,11,14,21,0,24,0,8,0,7,0,6,19,7,0,20,21,0,46,0,22,7,8,22,0,54,11,14,21,0,24,0,8,0,20,21,0,14,0,7,21,0,13,19,21,0,7,0,21,8,8,7,22,0,55,11,14,21,0,24,21,0,12,0,7,0,22,19,7,0,20,15,41,8,22,0,56,11,14,21,0,24,0,13,0,7,0,22,19,7,0,20,21,0,45,8,22,0,57,11,14,21,0,24,0,12,0,7,0,22,19,7,0,20,21,0,17,8,22,0,58,11,14,21,0,24,0,12,7,0,20,0,12,8,22,0,59,11,14,21,0,24,21,0,12,7,0,20,21,0,4,0,21,7,0,5,0,46,19,8,22,0,60,11,14,21,0,24,0,13,7,0,20,21,0,4,0,21,7,0,5,0,47,19,8,22,0,61,11,14,21,0,24,0,6,7,22,0,62,11,14,21,0,24,0,7,7,22,0,63,11,14,21,0,63,21,0,62,0,22,19,22,0,64,11,14,21,0,62,0,21,3,2,21,0,63,0,21,3,2,21,0,55,0,22,3,2,21,0,47,0,22,3,2,21,0,48,0,22,3,2,21,0,49,0,22,3,2,21,0,53,0,22,3,2,21,0,54,0,21,3,2,21,0,64,0,22,3,2,21,0,50,0,21,3,2,21,0,51,0,28,3,2,21,0,52,0,29,3,2,21,0,56,0,21,3,2,21,0,61,0,22,3,2,21,0,59,0,22,3,2,21,0,60,0,22,3,2,21,0,57,0,21,3,2,21,0,58,0,21,3,2,3,18,21,0,19,15,42,7,21,0,4,0,21,7,0,5,0,48,19,3,1,0,16,0,21,17,17,22,0,65,11,14,15,43,0,15,3,2,21,0,0,0,0,8,22,0,66,11,14,15,44,22,0,67,11,14,0,15,0,20,21,0,66,8,22,0,68,11,14,15,45,22,0,69,11,14,15,46,0,20,15,47,8,22,0,70,11,14,21,0,70,21,0,5,21,0,57,8,22,0,71,11,14,15,48,22,0,72,11,14,15,49,22,0,73,11,14,21,0,73,22,0,74,11,14,15,50,22,0,75,11,14,21,0,75,22,0,76,11,14,15,51,22,0,77,11,14,21,0,77,22,0,78,11,14,21,0,68,21,0,6,21,0,22,8,15,52,3,2,21,0,0,21,0,59,21,0,56,0,22,19,21,0,6,21,0,54,8,8,22,0,79,11,14,15,53,22,0,80,11,14,15,54,22,0,81,11,14,21,0,80,0,20,21,0,81,8,22,0,82,11,14,15,55,22,0,83,11,14,15,56,22,0,84,11,14,21,0,83,0,20,21,0,84,8,22,0,85,11,14,15,57,22,0,86,11,14,21,0,44,21,0,7,21,0,29,8,22,0,87,11,14,21,0,58,21,0,59,0,21,19,21,0,63,0,22,19,21,0,42,15,58,15,59,3,2,21,0,0,15,60,8,8,22,0,88,11,14,21,0,86,0,20,21,0,69,8,22,0,89,11,14,0,21,21,0,42,21,0,34,8,0,20,21,0,33,8,22,0,90,11,14,21,0,88,0,20,21,0,29,8,22,0,91,11,14,21,0,68,21,0,5,21,0,58,8,21,0,56,0,21,19,21,0,9,15,61,15,62,3,2,21,0,0,0,18,21,0,59,7,21,0,58,0,22,19,21,0,19,21,0,54,7,9,0,22,3,2,21,0,0,21,0,59,21,0,58,0,22,19,8,8,8,22,0,92,11,14,15,63,22,0,93,11,14,15,64,22,0,94,11,14,15,65,22,0,95,11,14,21,0,79,0,20,21,0,92,8,22,0,96,11,14,21,0,95,0,20,21,0,94,8,22,0,97,11,14,15,66,22,0,98,11,14,21,0,98,15,67,3,2,21,0,0,21,0,2,21,0,5,21,0,68,21,0,5,0,18,0,0,7,8,8,21,0,19,21,0,54,7,9,8,22,0,99,11,14,21,0,99,21,0,7,21,0,68,21,0,1,3,2,21,0,0,0,0,8,8,22,0,100,11,14,15,68,22,0,101,11,14,15,69,22,0,102,11,14,15,70,22,0,103,11,14,15,71,22,0,104,11,14,21,0,104,21,0,27,7,0,20,0,21,21,0,28,21,0,27,8,8,22,0,105,11,14,21,0,104,21,0,4,21,0,27,7,7,0,20,0,22,21,0,28,21,0,4,21,0,27,7,8,8,22,0,106,11,14,15,72,22,0,107,11,14,0,4,21,0,7,21,0,36,0,22,7,8,22,0,108,11,14,15,73,22,0,109,11,14,21,0,109,21,0,1,21,0,5,0,19,21,0,62,7,8,21,0,4,21,0,63,7,0,22,19,21,0,4,21,0,44,7,21,0,4,21,0,91,21,0,5,21,0,105,21,0,5,21,0,108,8,8,7,19,7,22,0,110,11,14,15,74,22,0,111,11,14,21,0,107,0,22,7,0,20,21,0,110,8,22,0,112,11,14,21,0,4,21,0,107,0,21,7,7,0,20,21,0,109,21,0,1,7,8,22,0,113,11,14,21,0,111,0,20,21,0,91,21,0,7,21,0,113,8,8,22,0,114,11,14,15,75,22,0,115,11,14,15,76,22,0,116,11,14,15,77,22,0,117,11,14,15,78,22,0,118,11,14,21,0,117,0,20,21,0,30,8,22,0,119,11,14,21,0,105,21,0,5,21,0,105,8,21,0,44,21,0,63,21,0,1,19,21,0,4,21,0,112,7,19,22,0,120,11,14,15,79,22,0,121,11,14,21,0,121,0,20,21,0,120,8,22,0,122,11,14,21,0,100,0,20,21,0,68,0,16,0,21,19,8,22,0,123,11,14,15,80,22,0,124,11,14,0,5,21,0,7,0,93,8,22,0,125,11,14,0,5,21,0,7,0,94,8,22,0,126,11,14,15,81,22,0,127,11,14,15,82,22,0,128,1,11,14,15,83,22,0,129,1,11,14,21,0,62,21,0,4,21,0,63,7,0,20,21,0,62,8,21,0,63,21,0,63,21,0,55,21,0,4,21,0,47,7,0,20,21,0,1,8,21,0,47,21,0,47,21,0,48,21,0,24,0,2,7,21,0,49,21,0,4,21,0,48,7,0,20,0,23,21,0,8,21,0,48,8,8,21,0,53,21,0,4,21,0,47,7,0,20,21,0,53,21,0,127,21,0,1,8,8,21,0,54,21,0,1,21,0,63,0,22,19,21,0,47,21,0,4,21,0,63,7,19,0,20,21,0,54,21,0,127,21,0,1,8,8,21,0,64,21,0,64,21,0,56,0,21,21,0,5,21,0,125,8,0,20,15,84,8,21,0,1,21,0,1,21,0,2,21,0,39,21,0,5,21,0,126,8,21,0,2,21,0,1,19,0,20,21,0,1,8,21,0,96,15,85,0,20,0,21,21,0,5,21,0,125,8,8,21,0,71,15,86,0,20,15,87,8,21,0,82,0,21,21,0,5,21,0,125,8,0,20,21,0,82,21,0,127,21,0,123,21,0,7,0,27,8,8,8,21,0,85,0,21,21,0,5,21,0,125,8,0,20,21,0,85,21,0,127,21,0,123,8,8,21,0,89,0,21,21,0,5,21,0,125,8,0,20,21,0,89,21,0,127,21,0,40,8,8,21,0,90,21,0,90,21,0,7,21,0,63,8,0,20,21,0,90,8,21,0,119,21,0,118,0,20,21,0,31,8,21,0,91,0,21,21,0,5,21,0,125,8,0,20,15,88,8,21,0,97,21,0,129,1,0,20,21,0,128,1,8,3,42,21,0,68,21,0,7,21,0,58,21,0,4,21,0,47,7,0,23,19,21,0,4,21,0,96,7,0,23,19,8,16,21,0,119,16,15,89,16,22,0,130,1,11,14,15,90,22,0,131,1,11,14,15,91,22,0,132,1,11,14,21,0,132,1,22,0,133,1,11,14,21,0,56,21,0,112,21,0,5,21,0,123,8,21,0,5,21,0,51,21,0,90,21,0,82,3,4,19,22,0,134,1,11,14,21,0,67,0,20,21,0,66,8,22,0,135,1,11,14,15,92,22,0,136,1,11,14,21,0,35,22,0,137,1,11,14,21,0,62,21,0,63,21,0,55,21,0,47,21,0,48,21,0,49,21,0,51,21,0,52,21,0,50,21,0,64,21,0,53,21,0,54,21,0,56,21,0,57,21,0,58,21,0,59,21,0,61,21,0,60,21,0,39,21,0,40,21,0,2,21,0,1,21,0,135,1,21,0,96,21,0,71,21,0,82,21,0,85,21,0,89,21,0,90,21,0,119,21,0,91,21,0,105,21,0,106,21,0,44,21,0,123,21,0,112,21,0,122,21,0,113,21,0,114,21,0,97,0,5,21,0,3,21,0,4,21,0,41,21,0,36,21,0,136,1,21,0,131,1,21,0,19,21,0,78,0,19,21,0,5,21,0,6,21,0,7,21,0,8,21,0,137,1,0,20,21,0,124,21,0,76,21,0,74,21,0,133,1,3,60,25,21,0,1,15,93,21,0,5,0,16,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,0,1,25,21,0,2,25,21,0,1,25,21,0,1,14,21,0,4,25,21,0,1,21,1,2,21,0,2,17,21,0,4,21,0,1,17,25,21,0,1,21,0,5,21,0,2,17,21,0,4,16,25,21,0,1,21,0,5,16,21,0,4,21,0,2,21,0,5,16,17,25,21,0,1,21,0,5,21,0,1,21,1,2,21,0,2,17,21,0,4,16,17,25,21,0,1,21,0,5,16,21,0,4,21,0,1,21,1,2,21,0,2,17,17,25,21,0,1,15,94,21,1,1,21,0,4,3,2,0,16,21,0,1,21,0,5,21,0,2,17,17,7,21,0,2,17,25,21,0,1,3,1,0,15,3,0,17,25,21,0,2,21,0,1,3,2,25,21,0,2,21,0,1,3,2,25,21,0,1,0,12,16,0,12,0,22,17,0,5,0,31,17,14,21,0,1,22,0,5,11,21,1,17,16,22,0,6,11,14,21,0,4,22,0,7,11,14,21,0,1,21,1,2,0,20,15,95,15,96,3,2,21,1,0,21,0,6,21,1,13,0,21,17,8,8,21,0,2,17,22,0,8,11,14,21,0,6,0,17,16,0,18,0,7,21,1,7,0,22,0,7,21,0,6,17,8,7,16,0,18,15,97,7,16,14,21,0,8,25,21,0,2,0,7,21,0,1,21,1,17,16,17,0,17,16,0,18,21,1,4,21,0,1,7,0,16,0,6,21,1,7,21,0,2,8,19,7,16,25,21,0,2,21,1,17,16,22,0,3,11,14,21,0,1,21,1,17,16,0,6,21,0,3,17,0,17,16,0,18,21,0,2,21,1,8,0,16,8,21,1,4,21,0,1,7,0,16,21,0,3,21,1,8,0,7,8,19,3,2,21,1,0,0,13,21,1,7,21,0,3,8,8,7,16,25,15,98,22,0,2,11,14,15,99,22,0,3,11,14,21,0,3,21,0,1,7,21,1,4,21,0,3,21,1,4,21,0,1,7,7,7,3,2,21,1,0,0,12,21,1,6,21,1,14,8,8,21,0,2,21,0,1,7,3,2,21,1,0,0,12,21,1,6,0,12,8,8,25,15,100,21,0,1,7,22,0,2,11,14,21,0,1,15,101,15,102,3,2,21,1,0,0,0,21,1,6,21,1,14,8,8,0,20,0,18,21,0,2,7,8,21,1,23,21,0,2,7,3,3,21,1,0,0,0,21,1,6,0,6,8,8,25,21,0,1,21,1,26,21,0,2,17,25,21,0,1,0,14,21,1,6,21,1,101,8,21,0,2,17,22,0,3,11,14,21,0,3,21,1,19,21,1,102,21,0,1,0,15,16,21,1,8,0,16,8,21,1,8,21,1,27,21,1,7,21,0,2,0,15,16,21,1,8,0,16,8,8,8,7,7,16,22,0,4,11,14,0,21,21,1,4,21,0,4,7,16,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,34,17,14,21,0,1,21,1,17,16,22,0,6,11,14,21,0,1,21,1,21,0,22,17,21,1,19,0,8,7,0,22,17,22,0,7,11,14,21,0,1,0,15,16,22,0,8,11,14,0,21,22,0,9,11,22,0,10,11,14,21,0,8,0,21,0,18,21,1,10,7,21,1,19,0,8,7,0,22,19,3,2,21,1,0,21,0,6,21,1,13,0,24,17,0,8,0,22,0,12,21,0,7,17,17,8,16,21,1,1,21,1,9,21,0,1,21,1,8,15,103,8,8,16,0,7,0,22,17,22,0,11,11,14,21,0,1,0,18,21,0,10,21,1,8,0,7,8,0,7,21,1,7,21,0,9,8,3,2,0,16,21,0,5,17,7,0,4,21,1,7,0,3,8,9,15,104,21,0,4,7,3,2,21,1,0,21,0,11,8,16,25,21,0,1,0,12,16,0,12,0,22,17,0,5,0,35,17,14,21,0,1,21,1,17,16,22,0,3,11,14,21,0,1,21,0,3,21,1,13,0,21,17,21,1,9,15,105,8,16,25,21,0,1,21,1,17,16,22,0,3,11,14,21,0,1,21,1,21,0,22,17,22,0,4,11,21,1,19,0,8,7,0,22,17,22,0,5,11,14,21,0,3,0,17,16,0,18,21,1,4,21,0,1,0,15,16,7,0,16,0,8,21,1,7,21,0,5,8,21,1,8,0,6,8,19,7,21,0,5,0,17,16,0,15,21,0,4,17,17,25,21,0,1,0,12,16,21,1,4,0,7,7,0,22,17,22,0,3,11,14,21,0,1,0,14,16,22,0,4,11,14,21,0,4,0,16,21,0,3,17,22,0,5,11,14,21,0,3,0,17,16,0,18,21,0,4,21,1,8,0,16,8,7,16,22,0,6,11,14,21,0,6,21,1,19,0,8,7,0,22,17,0,17,16,0,15,21,0,6,17,0,18,21,1,4,21,0,1,0,15,16,7,0,16,0,8,21,1,7,21,0,5,8,21,1,8,0,6,8,19,7,21,0,5,0,17,16,17,25,21,0,2,0,0,16,0,5,0,37,17,14,21,0,2,0,18,21,1,10,7,16,0,15,16,21,1,19,0,8,7,0,22,17,0,5,0,38,17,14,21,0,1,21,1,17,16,22,0,3,11,14,21,0,2,0,18,21,1,14,21,1,7,21,0,3,8,0,8,0,13,21,1,7,21,0,3,0,7,16,8,19,7,16,0,15,16,21,1,19,0,8,7,0,22,17,0,5,0,39,17,14,21,0,1,15,106,15,107,3,2,21,1,0,21,0,1,0,12,16,0,12,0,22,17,8,21,0,2,0,18,21,1,1,21,1,14,0,21,19,0,8,21,0,3,19,0,6,21,1,1,19,7,16,17,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,40,17,14,21,0,1,21,1,17,16,22,0,3,11,14,21,0,1,21,1,43,21,0,3,0,17,16,0,18,0,7,21,1,7,0,22,0,7,21,0,3,17,8,7,16,17,25,21,0,2,21,1,10,16,0,5,0,41,17,14,21,0,1,21,1,17,16,22,0,3,11,14,21,0,3,0,9,21,0,2,17,21,1,15,16,0,8,21,0,3,17,0,7,22,0,2,13,14,21,0,1,21,1,43,21,0,3,0,17,16,0,18,21,1,1,0,13,21,0,2,0,7,21,0,3,17,19,0,8,21,0,3,19,0,7,21,1,1,19,0,6,21,0,2,19,7,16,17,25,21,0,1,0,14,16,22,0,6,11,21,1,19,0,8,7,0,22,17,22,0,7,11,0,17,16,22,0,8,11,14,21,0,1,21,0,5,21,1,6,21,0,4,8,21,0,2,17,22,0,9,11,14,21,0,8,0,15,21,0,6,17,21,0,5,16,22,0,10,11,14,15,108,0,15,3,2,0,16,21,0,10,0,0,16,17,22,0,11,11,14,21,0,9,21,0,11,16,22,0,9,12,14,21,0,10,21,0,11,16,22,0,10,12,14,21,0,10,0,21,21,1,28,21,1,25,8,16,22,0,12,11,14,21,1,4,21,0,10,7,0,16,21,0,12,21,1,8,0,16,8,19,21,0,7,3,2,21,1,0,0,13,21,1,7,21,0,12,21,1,17,16,8,8,22,0,13,11,14,0,21,22,0,14,11,21,0,13,16,22,0,15,11,14,21,0,8,0,18,21,0,1,0,15,16,21,1,8,0,16,8,15,109,3,2,21,1,0,15,110,8,7,16,0,15,21,0,6,17,25,21,1,20,21,1,6,21,1,23,21,0,1,7,0,20,0,18,21,0,1,7,8,8,25,21,0,1,21,1,36,21,1,37,7,21,0,2,17,0,15,16,21,1,19,0,8,7,0,22,17,25,21,0,2,0,16,0,22,17,21,0,1,3,2,21,1,0,21,0,2,0,16,0,21,17,8,25,21,0,1,0,15,16,0,18,21,1,38,7,16,21,1,19,0,7,0,8,0,13,19,0,7,21,1,2,19,7,0,21,17,0,6,0,22,17,25,0,27,21,1,75,21,0,1,8,25,21,0,1,22,0,3,11,14,15,111,15,112,3,2,21,1,0,21,1,2,21,1,5,21,1,39,21,1,13,21,0,2,19,8,8,25,21,0,1,0,15,16,0,16,0,21,17,21,1,40,16,22,0,3,11,14,21,0,1,0,15,16,0,18,21,1,40,21,1,39,21,0,3,19,7,16,21,1,19,0,8,7,0,22,17,0,5,0,45,17,14,21,0,3,21,1,19,0,8,7,0,22,17,0,17,16,0,15,21,0,3,17,0,18,21,1,4,21,1,66,21,1,8,0,16,8,7,7,21,0,1,17,25,21,1,43,21,1,7,21,0,1,21,1,28,21,1,27,21,1,4,21,1,27,7,3,2,0,16,21,0,1,17,8,8,25,21,0,2,21,1,47,21,0,1,17,21,1,15,16,0,8,21,0,2,17,0,7,21,0,1,17,25,21,0,2,21,0,1,3,2,0,16,21,0,1,21,1,14,21,0,2,17,17,25,21,0,2,21,0,1,3,2,0,16,21,0,1,21,1,13,21,0,2,17,17,25,21,0,1,3,1,0,15,3,0,17,25,21,0,1,21,0,2,0,16,0,22,17,3,2,21,1,0,15,113,21,0,2,0,16,0,21,17,7,8,25,21,0,1,3,1,25,21,0,2,21,1,59,16,21,1,60,0,22,17,0,5,0,49,17,14,21,0,2,21,1,66,16,22,0,3,11,14,21,0,3,0,18,21,1,11,7,16,21,1,64,16,22,0,4,11,21,1,19,21,1,62,7,16,22,0,5,11,14,21,0,5,21,1,60,0,22,17,0,5,0,50,17,14,21,0,1,21,1,66,16,22,0,6,11,21,1,58,16,22,0,7,11,14,21,0,3,21,1,19,21,1,55,7,15,114,3,2,21,1,0,21,0,5,8,16,22,0,8,11,14,21,0,6,21,0,7,21,1,58,21,0,8,17,21,1,9,15,115,8,16,0,15,21,0,3,17,25,15,116,22,0,3,11,14,15,117,22,0,4,11,14,21,0,1,21,0,3,21,0,4,3,2,21,1,0,0,0,8,16,25,21,0,2,21,0,1,3,2,25,21,0,1,3,1,25,21,0,1,21,1,5,21,1,68,8,21,1,1,21,1,5,21,1,56,8,21,1,36,0,16,7,21,1,58,21,1,8,21,1,4,21,1,50,21,1,62,0,22,19,21,1,63,21,1,2,19,7,8,19,0,22,0,21,3,2,0,20,0,23,3,1,8,19,25,21,0,1,21,1,72,21,0,5,7,21,0,2,17,22,0,6,11,21,1,57,0,21,17,22,0,7,11,14,21,0,4,22,0,8,11,14,15,118,22,0,9,11,14,21,0,1,21,0,9,21,0,6,7,21,0,2,17,25,21,0,1,21,1,72,21,0,5,7,21,1,36,21,1,63,21,1,8,21,1,51,8,21,1,63,21,1,52,0,21,19,3,2,21,1,0,21,1,1,21,1,61,0,21,19,8,7,21,1,59,21,1,6,21,1,70,8,19,21,0,2,17,22,0,6,11,14,15,119,22,0,7,11,14,21,1,1,21,1,56,9,21,0,7,21,1,1,0,18,21,1,56,7,9,3,3,21,1,0,21,1,59,21,1,8,21,1,60,8,21,1,62,0,22,19,21,1,55,0,21,21,1,8,21,1,57,8,19,8,22,0,7,12,14,21,0,1,21,0,7,21,0,6,0,16,21,1,7,21,1,58,21,1,4,21,1,63,7,0,22,19,8,16,17,21,1,36,21,0,4,7,21,0,2,21,0,7,21,0,6,0,16,0,21,17,17,17,21,1,57,16,25,21,0,1,21,1,59,16,21,1,61,0,22,17,0,5,0,56,17,14,21,0,1,21,1,41,21,1,56,7,16,21,1,19,21,0,4,7,21,0,2,17,25,21,0,1,21,1,40,21,1,6,21,1,70,8,21,0,2,17,22,0,3,11,14,21,0,3,0,18,21,1,58,7,16,22,0,4,11,21,1,19,21,1,52,7,0,22,17,22,0,5,11,14,21,0,4,21,1,63,21,0,5,17,21,1,60,0,22,17,21,1,19,21,1,53,7,16,0,5,0,57,17,14,21,0,3,21,1,36,21,1,44,21,1,7,0,22,21,1,63,21,0,5,17,0,17,16,21,1,8,21,1,62,8,8,7,21,0,5,21,1,64,21,0,4,17,17,22,0,6,11,14,21,0,6,21,1,19,21,1,39,7,16,0,5,0,58,17,14,21,0,3,21,1,36,0,22,21,1,1,0,16,0,21,19,3,2,21,1,0,21,1,2,8,7,21,0,4,21,1,59,21,0,5,17,17,21,1,19,21,1,62,7,16,22,0,7,11,14,21,0,1,21,1,68,21,1,6,21,1,22,8,21,0,2,17,21,1,68,21,0,6,0,16,0,21,17,21,1,22,21,0,7,3,1,17,17,25,15,120,22,0,3,11,14,21,0,1,21,1,68,21,1,68,21,1,40,21,1,5,21,1,22,21,1,7,21,1,1,21,1,58,21,1,6,21,1,63,8,21,0,2,19,21,1,52,0,21,19,0,17,21,1,5,0,18,0,22,7,8,9,8,8,19,16,0,21,21,1,42,21,0,3,8,21,0,2,17,25,21,0,1,21,1,59,16,21,1,61,0,22,17,0,5,0,60,17,14,21,0,1,21,1,58,16,21,1,62,0,22,17,0,17,16,0,18,21,0,1,21,1,8,21,1,80,8,7,16,25,21,0,1,21,1,40,16,21,1,58,21,1,8,21,1,63,8,21,1,52,0,21,19,0,17,21,1,5,0,18,0,22,7,8,9,21,1,4,21,1,22,7,21,1,1,19,21,1,82,21,1,2,19,21,0,2,21,1,58,16,17,22,0,3,11,14,21,0,1,21,1,82,21,0,2,21,1,51,21,0,3,17,21,1,52,21,0,3,21,1,63,16,17,21,1,62,0,21,21,1,57,21,0,2,17,21,1,48,0,27,17,21,1,55,21,0,3,17,17,17,25,21,0,1,21,1,59,16,21,1,61,0,22,17,0,5,0,61,17,14,21,0,1,21,1,58,16,21,1,62,0,22,17,0,17,16,0,18,21,0,1,21,1,8,21,1,83,8,7,16,25,21,0,1,0,0,16,0,5,0,62,17,14,21,0,2,21,1,59,16,21,1,60,0,22,17,0,5,0,63,17,14,21,0,1,21,1,40,16,21,1,58,21,1,6,21,1,61,8,21,0,2,17,0,5,0,64,17,14,21,0,2,21,1,68,16,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,0,5,0,65,17,14,21,0,1,21,1,40,16,21,1,82,21,0,2,21,1,58,16,17,22,0,3,11,14,21,0,3,21,1,62,0,22,17,21,1,61,21,0,2,17,21,1,19,21,1,53,7,16,0,5,0,66,17,14,21,0,1,21,0,2,21,1,58,16,21,1,56,0,21,17,21,1,9,15,121,8,21,0,2,17,25,21,0,1,21,1,87,21,1,7,21,1,41,21,0,2,7,8,16,25,21,0,1,21,1,58,21,1,6,21,1,59,8,21,0,2,17,0,5,0,67,17,14,21,0,1,21,1,87,21,0,2,17,25,21,0,2,21,1,59,16,21,1,56,0,21,17,25,0,27,22,0,3,11,22,0,4,11,14,3,0,22,0,5,11,14,21,0,1,22,0,6,11,14,21,0,1,0,18,21,1,58,7,16,21,1,91,16,0,18,15,122,7,16,25,21,1,1,21,1,19,0,18,21,1,22,21,1,7,21,1,68,8,7,7,3,0,21,1,56,16,19,22,0,3,11,14,21,0,1,0,0,16,0,5,0,68,17,14,21,0,1,0,18,21,1,40,7,16,22,0,4,11,14,21,0,4,21,1,68,16,0,16,0,21,17,21,1,58,16,22,0,5,11,14,21,0,4,0,18,21,1,58,7,16,21,1,59,21,0,5,17,21,1,68,16,21,1,19,21,1,53,7,16,0,5,0,69,17,14,21,0,1,21,1,59,16,21,1,60,21,0,5,17,0,5,0,70,17,14,21,0,1,22,0,6,11,21,1,59,16,22,0,7,11,21,1,89,16,22,0,8,11,21,1,36,15,123,7,21,0,1,21,1,40,16,17,22,0,9,11,14,21,0,9,21,0,3,16,21,1,39,21,0,4,0,18,21,1,82,21,1,7,21,0,7,8,7,16,17,0,5,0,71,17,14,21,0,9,0,18,15,124,7,16,21,0,3,16,22,0,10,11,14,21,0,1,21,1,91,21,0,9,17,21,1,36,21,1,44,21,1,7,0,18,21,1,56,7,8,7,21,0,10,17,21,1,57,16,25,21,0,1,0,18,21,1,10,7,16,21,1,19,21,1,53,7,16,0,5,0,72,17,14,21,0,1,21,1,61,0,27,17,21,1,19,21,1,53,7,16,0,5,0,73,17,14,21,0,1,0,4,21,0,1,0,3,16,22,0,5,11,17,22,0,6,11,14,0,21,22,0,7,11,14,21,0,5,0,18,21,1,89,21,1,5,0,18,15,125,7,8,21,0,4,9,7,16,25,21,0,1,21,1,59,16,21,1,59,0,22,17,0,5,0,74,17,14,21,1,93,21,1,1,7,22,0,3,11,14,21,0,1,21,0,3,0,18,15,126,7,21,1,19,0,18,0,18,21,1,22,7,7,7,3,0,21,1,56,16,21,1,56,16,19,3,2,21,1,0,21,1,39,21,1,56,0,22,19,8,16,25,21,0,1,0,0,16,0,5,0,75,17,14,21,0,2,21,1,39,21,1,57,0,23,19,21,1,9,21,1,20,21,1,5,21,1,70,8,8,16,22,0,2,12,14,21,0,2,21,1,59,16,21,1,59,0,22,17,0,5,0,76,17,14,21,0,2,0,18,21,1,59,7,16,21,1,19,21,1,62,7,16,22,0,3,11,14,21,0,1,21,1,59,16,21,1,61,21,0,3,17,0,5,0,77,17,14,21,0,1,21,1,40,16,21,1,82,21,0,3,17,21,1,59,21,0,2,0,18,21,1,40,7,16,21,1,92,16,17,21,1,19,21,1,53,7,16,0,5,0,78,17,14,21,0,2,0,18,21,1,68,7,16,22,0,2,12,0,18,21,1,58,7,16,22,0,4,11,14,21,0,1,21,1,21,21,0,3,17,21,1,22,21,0,4,21,1,19,21,1,55,7,16,3,1,17,21,1,4,21,1,68,7,21,0,1,17,21,1,8,21,1,44,8,22,0,5,11,14,21,0,2,0,16,21,1,7,0,21,8,21,1,93,21,0,5,7,9,0,18,21,1,93,21,1,1,7,7,21,1,55,21,0,4,21,1,85,0,22,17,21,1,90,16,21,1,22,0,22,3,1,17,0,19,21,1,55,7,16,21,1,90,16,19,21,1,19,0,18,0,18,21,1,62,7,7,7,9,0,18,21,0,5,7,9,3,2,21,1,0,21,1,58,21,1,58,0,22,19,8,16,25,21,0,2,21,1,59,16,21,1,59,0,22,17,0,5,0,79,17,14,21,0,1,21,1,40,16,22,0,3,11,21,1,58,21,1,6,21,1,59,8,21,0,2,17,0,5,0,80,17,14,21,0,2,0,18,21,1,10,7,16,21,1,19,21,1,53,7,16,0,5,0,81,17,14,21,0,3,21,1,56,21,1,53,21,1,63,21,1,8,21,1,60,8,19,21,0,2,17,21,1,19,21,1,53,7,16,0,5,0,82,17,14,0,21,21,1,56,21,0,2,17,21,1,55,21,0,3,17,21,1,62,21,0,2,17,22,0,2,12,14,21,0,2,21,1,58,16,21,1,64,21,1,7,21,1,89,8,16,21,1,63,16,21,1,19,21,1,1,21,1,55,21,0,3,21,1,8,0,16,8,19,21,1,62,21,0,2,21,1,8,0,16,8,19,7,0,21,17,21,1,4,0,16,7,21,0,1,21,1,68,16,17,25,21,0,2,0,18,21,0,1,21,1,8,21,1,99,8,7,16,25,21,0,1,21,1,59,21,1,7,0,21,8,21,1,19,21,1,54,7,9,21,1,6,21,1,4,21,1,63,7,8,21,0,2,17,22,0,3,11,14,21,0,1,0,21,21,0,3,3,2,15,127,3,2,21,1,0,0,21,21,1,59,21,0,3,17,8,21,0,2,17,25,21,0,4,22,0,5,11,14,21,0,2,22,0,6,11,14,21,0,1,22,0,7,11,14,15,128,1,22,0,8,11,14,21,0,4,21,1,59,21,1,7,0,21,8,21,1,9,21,0,1,8,9,21,0,8,3,2,0,16,21,0,6,21,1,58,0,22,17,17,25,21,0,1,22,0,2,11,14,21,1,56,21,1,7,0,21,8,21,1,9,15,129,1,8,25,21,0,2,21,1,59,16,21,1,4,21,1,63,7,0,22,17,22,0,5,11,14,21,0,5,21,1,61,0,21,17,0,5,0,83,17,14,21,0,1,21,1,59,16,21,1,61,21,0,5,17,0,5,0,84,17,14,21,0,2,21,1,21,0,22,17,22,0,6,11,21,1,19,21,1,55,7,16,22,0,7,11,14,0,21,21,1,102,21,0,2,21,1,68,16,21,1,8,0,16,8,21,1,6,21,0,4,8,7,21,0,7,17,22,0,8,11,14,21,0,2,21,1,58,16,0,22,0,22,21,1,8,21,1,63,21,1,5,21,1,89,8,8,21,1,55,21,0,7,19,0,18,21,1,62,21,1,7,21,0,7,8,21,1,8,21,0,8,8,7,9,21,1,4,21,1,61,7,0,21,19,21,1,19,21,1,53,7,9,3,2,21,1,0,21,1,56,21,1,7,0,21,8,8,16,0,5,0,85,17,14,21,0,1,21,1,59,16,21,1,4,21,1,63,7,21,0,5,17,22,0,9,11,14,21,0,1,21,1,21,21,0,9,17,22,0,10,11,14,21,0,10,21,1,101,21,0,6,17,22,0,11,11,14,21,0,11,21,1,19,21,1,102,21,0,1,21,1,68,16,21,1,8,0,16,8,21,1,8,21,0,4,21,1,7,21,0,2,21,1,68,16,21,1,8,0,16,8,8,8,7,7,16,22,0,12,11,14,21,1,4,0,21,7,21,1,61,21,0,12,21,1,7,21,1,55,21,1,7,21,0,6,21,1,19,21,1,55,7,16,8,8,19,22,0,13,11,14,21,0,9,21,1,89,16,0,18,21,0,1,21,1,40,16,21,1,8,0,16,8,7,16,21,1,19,21,1,55,7,21,1,89,9,21,1,8,21,1,68,8,16,21,1,55,21,0,10,21,1,19,21,1,55,7,16,17,0,18,15,130,1,21,1,7,21,0,2,21,1,58,16,8,7,16,25,21,0,1,22,0,2,11,14,21,1,78,21,1,53,7,21,1,64,9,0,19,21,1,53,7,21,1,78,21,1,62,7,9,3,2,0,16,21,0,1,17,22,0,3,11,14,15,131,1,25,21,0,1,21,1,59,16,21,1,61,0,22,17,0,5,0,87,17,14,21,0,1,21,1,105,16,22,0,5,11,14,21,0,1,21,1,58,16,21,1,89,16,0,18,0,22,21,1,1,21,0,1,21,1,59,21,1,56,0,22,19,21,1,9,21,1,41,21,1,56,7,8,16,21,1,44,21,0,5,17,21,1,8,0,16,8,21,1,6,21,1,40,8,0,22,21,1,8,21,1,63,8,19,3,2,21,1,0,21,1,56,21,1,7,0,21,8,8,7,16,21,0,4,21,0,5,17,21,1,44,21,0,5,21,1,108,16,17,25,21,0,2,21,1,59,16,22,0,3,11,14,21,0,1,21,1,59,16,21,1,61,21,0,3,17,0,5,0,88,17,14,21,0,1,21,0,3,21,1,76,21,1,89,8,21,0,2,21,1,40,16,17,21,0,3,21,1,76,21,1,39,8,21,0,2,17,25,21,0,2,21,1,59,16,21,1,60,0,22,17,0,5,0,89,17,14,21,0,1,21,1,40,16,21,1,58,21,1,6,21,1,61,8,21,0,2,17,0,5,0,90,17,14,21,0,2,21,1,68,16,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,0,5,0,91,17,25,21,0,1,21,1,40,16,21,1,97,21,0,2,17,0,18,21,1,19,21,1,51,7,7,16,21,1,89,16,0,18,21,1,4,21,0,1,7,21,1,100,21,1,44,21,1,7,21,0,2,8,19,7,16,25,21,0,1,21,1,115,21,0,2,17,14,21,0,2,21,1,68,16,22,0,2,12,14,21,0,2,21,1,113,16,21,1,64,16,21,1,19,21,1,62,7,16,21,1,63,21,0,1,21,1,59,16,17,22,0,3,11,14,21,0,3,21,1,56,21,0,2,17,21,1,19,21,1,53,7,16,0,5,0,92,17,14,21,0,1,21,1,116,21,0,3,21,1,89,16,21,1,1,21,1,91,21,1,4,21,1,113,21,1,5,21,1,64,8,7,19,21,0,2,17,21,1,96,21,0,2,17,17,25,21,0,1,21,1,115,21,0,2,17,14,21,0,2,21,1,68,16,22,0,2,12,14,21,0,1,21,1,59,16,22,0,3,11,14,21,0,2,21,0,3,21,1,8,21,1,56,8,21,1,53,21,1,113,19,16,21,1,19,21,1,53,7,16,21,1,125,16,14,21,0,1,21,1,116,21,0,3,21,1,89,16,21,1,1,21,1,91,21,1,4,21,1,113,21,1,5,21,1,64,8,7,19,21,0,2,17,21,1,96,21,0,2,17,21,1,108,16,17,25,21,0,1,21,1,112,21,1,7,21,0,2,8,21,1,120,21,1,8,21,1,41,21,1,71,7,8,9,21,1,6,21,1,112,8,21,0,2,17,25,21,0,1,15,132,1,21,0,5,21,1,123,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,0,1,21,0,4,21,0,2,17,22,0,6,11,14,21,0,6,21,0,5,21,0,2,17,21,1,39,21,0,1,17,21,1,126,16,14,21,0,6,25,21,0,1,21,1,59,16,21,1,59,0,22,17,21,1,125,16,14,21,0,1,21,1,96,16,22,0,3,11,14,21,0,3,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,21,1,125,16,14,21,0,3,0,3,16,22,0,4,11,14,0,22,21,1,61,21,0,4,17,21,1,19,21,1,53,7,16,21,1,126,16,14,21,0,4,21,1,64,16,21,1,91,16,22,0,5,11,14,21,0,5,21,1,36,0,27,7,16,21,1,96,21,0,1,21,1,36,21,1,58,7,16,21,1,91,16,17,21,1,44,21,0,5,21,1,96,21,0,3,17,21,1,105,16,17,25,21,0,2,21,1,59,16,21,1,59,0,22,17,21,1,125,16,14,21,0,2,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,21,1,125,16,14,21,0,1,21,1,96,21,1,6,21,1,44,21,1,7,21,1,105,8,8,21,0,2,21,1,97,16,17,25,21,0,1,0,0,16,21,1,126,16,14,21,0,1,21,1,59,16,21,1,59,0,21,17,21,1,126,16,14,21,0,1,21,1,123,16,25,21,0,2,21,1,59,21,1,6,21,1,63,8,21,0,1,17,22,0,3,11,14,21,0,3,0,22,21,1,8,21,1,61,8,21,1,53,21,1,61,21,1,7,0,21,8,19,16,21,1,126,16,14,21,0,2,0,22,21,1,58,3,2,21,1,124,21,0,3,8,16,22,0,4,11,14,21,0,1,21,1,58,16,21,1,61,21,0,4,17,21,1,126,16,14,21,0,1,21,1,44,21,1,82,21,1,7,21,0,4,8,3,2,21,1,124,21,0,3,8,16,21,1,39,21,0,2,17,21,1,126,16,14,21,0,1,21,1,85,21,0,4,17,25,21,0,1,21,1,58,16,21,1,59,0,23,17,21,1,126,16,14,21,0,1,21,1,44,16,21,1,39,21,0,2,17,21,1,126,16,14,21,0,1,21,1,44,0,22,17,25,21,0,1,21,1,58,16,21,1,59,0,22,17,21,1,126,16,14,21,0,1,21,1,44,16,25,21,0,1,21,1,59,16,21,1,59,0,22,17,21,1,125,16,14,21,0,1,0,18,21,1,11,7,16,21,1,19,21,1,53,7,16,21,1,125,16,14,21,0,1,21,1,85,21,1,7,0,22,8,21,1,61,21,1,85,21,1,7,0,27,8,19,21,1,19,21,1,53,7,9,16,21,1,126,16,14,21,0,1,0,3,16,25,21,1,4,21,1,4,0,21,7,0,5,0,95,19,3,1,21,1,96,21,0,1,21,1,44,0,22,17,17,7,21,1,123,21,1,56,21,1,112,21,0,1,21,1,44,0,21,17,19,21,1,123,9,19,25,21,0,1,21,1,130,1,16,25,21,0,1,21,0,5,21,0,2,17,22,0,6,11,14,0,21,22,0,7,11,22,0,8,11,14,21,0,6,0,21,21,1,74,15,133,1,8,16,14,21,0,1,22,0,9,11,14,15,134,1,22,0,10,11,14,21,0,7,21,0,10,21,1,1,21,0,4,21,0,2,19,7,16,22,0,11,11,14,21,0,8,21,1,63,16,21,0,10,21,1,1,21,1,131,1,21,0,4,7,21,0,2,19,7,16,22,0,12,11,14,21,0,6,0,21,21,1,74,21,1,4,21,0,11,21,0,12,3,2,7,21,1,123,0,21,21,1,8,21,1,56,8,19,21,1,123,21,1,50,19,8,16,25,21,1,20,21,1,6,0,18,21,0,1,7,8,25,21,0,1,25,21,0,1,25,21,0,1,14,21,1,7,21,2,65,16,25,0,22,0,7,21,1,6,17,22,1,6,12,14,21,0,1,0,16,21,1,6,17,25,21,1,8,21,1,7,21,1,5,0,16,21,0,1,17,17,22,1,8,12,25,21,0,2,0,14,16,22,0,5,11,14,21,0,2,0,12,16,0,17,16,21,2,19,0,8,21,2,7,21,0,1,0,14,16,21,2,8,0,16,8,0,12,21,0,5,21,2,8,0,16,8,19,8,7,0,22,17,0,5,0,32,17,14,21,0,5,21,2,19,0,8,7,0,22,17,0,17,16,0,18,21,0,1,0,15,16,21,2,8,0,16,8,21,0,4,21,0,2,0,15,16,21,2,8,0,16,8,19,7,16,0,15,21,0,5,17,25,21,0,2,0,14,16,22,0,5,11,14,21,0,2,0,12,16,22,0,6,11,14,21,0,1,0,14,16,22,0,7,11,14,21,0,6,0,17,16,21,2,19,0,8,21,2,7,21,0,7,21,2,8,0,16,8,0,12,21,0,5,21,2,8,0,16,8,19,8,7,0,22,17,0,5,0,33,17,14,21,0,6,0,7,21,0,1,0,12,16,17,0,17,16,21,2,19,0,8,21,2,7,0,6,21,2,7,21,0,6,8,21,2,4,0,16,7,21,0,7,19,8,7,0,22,17,22,0,8,11,14,21,0,2,0,15,16,22,0,9,11,14,21,0,1,0,15,16,22,0,10,11,14,21,0,8,0,17,21,2,6,0,18,21,2,4,21,0,10,7,0,16,0,6,21,2,7,0,8,21,2,7,21,0,8,8,8,19,21,0,4,21,0,9,21,2,8,0,16,8,19,7,8,21,0,9,21,2,17,16,17,0,15,16,0,15,21,0,7,17,25,21,0,1,21,2,24,21,0,4,7,21,0,2,17,25,21,0,1,0,18,15,135,1,21,0,2,7,7,16,25,21,0,2,0,18,15,136,1,21,0,1,7,7,16,25,21,1,6,0,8,0,23,17,0,13,21,0,1,21,2,19,21,2,15,7,16,22,1,10,12,0,7,21,0,1,21,2,19,21,2,16,7,16,22,1,9,12,17,17,25,21,0,1,14,21,2,4,0,21,7,21,2,14,0,21,21,2,102,21,1,8,21,2,8,0,16,8,21,2,6,21,0,4,8,7,21,1,7,17,19,22,0,5,11,14,21,2,1,21,1,6,3,2,21,2,0,0,13,21,2,7,21,1,6,8,8,22,0,6,11,14,0,21,0,12,21,1,6,17,0,6,21,1,6,17,0,2,0,23,17,21,2,16,16,22,0,7,11,0,17,16,0,18,21,2,1,0,6,0,22,19,0,7,21,0,7,19,0,10,0,23,19,7,16,21,2,19,15,137,1,7,21,1,6,0,17,16,17,25,21,0,1,0,18,21,2,11,7,16,21,2,19,0,8,7,0,22,17,0,5,0,36,17,14,0,22,0,7,21,1,3,17,22,0,3,11,14,21,2,1,0,7,21,0,3,19,21,2,4,0,16,7,21,1,3,0,17,16,0,18,0,7,21,2,7,21,0,3,8,7,16,0,19,21,2,1,21,2,4,0,16,7,21,0,1,19,0,12,0,21,19,0,8,0,7,19,0,6,21,2,1,19,7,16,19,22,0,4,11,14,21,0,1,0,19,0,6,7,16,21,2,8,0,16,8,22,0,5,11,14,0,21,21,0,4,16,22,0,6,11,21,0,5,16,22,0,7,11,14,21,0,3,21,0,5,16,0,17,16,0,18,15,138,1,7,16,25,21,0,1,21,2,21,0,22,17,22,0,3,11,21,2,19,0,8,7,0,22,17,22,0,4,11,14,21,0,4,0,17,16,0,15,21,0,3,17,0,18,0,6,21,2,7,0,8,21,2,7,21,0,4,8,8,21,2,4,0,16,7,21,0,1,0,15,16,19,7,21,0,2,17,25,21,0,2,0,18,21,0,1,21,2,8,0,16,8,7,16,25,21,0,1,3,1,25,21,0,1,14,21,1,9,0,16,21,1,12,0,16,21,1,14,17,17,22,0,3,11,14,21,1,14,0,6,0,22,17,22,1,14,12,21,1,13,16,22,1,15,12,14,21,0,3,25,21,0,1,0,12,21,1,15,17,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,42,17,14,21,0,1,21,1,3,21,0,2,17,25,21,0,2,0,12,16,21,2,12,0,22,17,0,5,0,43,17,14,21,0,1,21,2,40,16,21,2,17,21,2,6,0,13,8,21,0,2,17,0,5,0,44,17,14,21,0,2,21,2,17,16,22,0,3,11,14,21,0,2,0,15,16,21,2,8,0,16,8,22,0,4,11,14,21,0,1,21,0,3,21,2,13,0,21,17,21,2,9,15,139,1,8,0,21,17,25,21,0,1,21,2,59,21,0,4,17,25,21,0,1,21,2,36,21,2,1,0,22,3,2,21,2,0,21,2,2,8,7,21,1,4,17,21,2,19,21,2,55,7,16,22,0,3,11,14,21,0,3,21,2,56,0,21,17,0,5,0,51,17,14,21,1,4,21,2,58,16,0,17,16,21,2,55,21,1,4,17,21,2,19,21,2,62,7,16,22,0,4,11,14,21,1,3,0,16,21,0,4,17,21,2,134,1,16,22,0,5,11,14,0,30,21,2,56,21,0,5,17,0,5,0,52,17,14,21,2,59,21,2,7,21,2,51,8,0,5,0,53,19,21,2,2,21,2,1,19,22,0,6,11,14,21,0,3,21,2,47,21,1,7,17,21,0,6,21,2,51,21,2,52,3,3,21,2,0,21,0,5,21,2,51,0,23,17,8,16,22,0,7,11,14,21,1,3,21,2,36,21,2,1,21,0,7,3,2,21,2,0,21,2,2,8,7,21,1,4,17,22,1,3,12,14,21,0,7,21,2,55,21,0,3,17,21,0,5,21,2,59,0,25,17,21,2,9,21,2,56,21,2,7,21,1,7,8,21,2,9,15,140,1,8,8,16,25,21,1,8,0,17,16,0,18,21,2,2,7,21,2,7,0,1,8,15,141,1,3,2,21,2,0,21,1,7,21,2,56,0,21,17,8,21,0,1,17,25,21,0,1,21,2,11,16,0,5,0,54,17,14,21,0,1,0,17,16,25,21,0,1,21,2,59,16,21,2,59,0,22,17,0,5,0,55,17,14,21,0,1,0,18,21,1,3,7,16,21,2,19,0,18,21,2,22,21,2,7,21,2,68,8,7,7,3,0,21,2,56,16,17,25,21,1,9,21,1,7,21,2,62,21,0,4,17,7,22,0,5,11,14,21,0,1,21,2,36,21,0,5,7,21,2,2,21,2,5,0,18,21,0,1,21,2,8,21,0,5,8,7,8,21,2,1,21,2,5,0,18,21,2,1,21,0,5,21,0,2,19,7,8,21,1,8,3,4,21,2,0,21,2,39,21,2,6,21,2,70,8,21,2,60,21,0,4,21,2,52,0,21,17,19,21,2,54,0,21,21,2,60,21,0,4,17,21,2,53,21,1,7,17,19,21,2,67,0,23,19,21,2,19,21,2,62,21,2,7,0,23,21,2,8,21,2,55,8,8,7,9,8,21,0,2,17,25,21,0,2,0,17,16,0,18,21,0,1,21,2,40,16,21,2,8,0,16,8,7,16,22,0,3,11,14,21,0,1,21,2,21,21,0,2,17,22,0,4,11,21,2,19,21,2,55,7,16,22,0,5,11,14,21,0,3,21,2,19,21,2,55,7,16,0,17,16,0,18,21,2,1,21,2,55,21,0,5,19,21,2,62,21,0,5,0,17,16,21,2,68,21,0,4,17,19,21,2,5,0,18,21,0,1,21,2,68,16,21,2,8,0,16,8,7,8,7,16,21,2,68,21,0,3,17,25,21,0,2,21,2,10,16,0,5,0,59,17,14,21,0,1,21,2,58,16,22,0,3,11,14,0,21,21,2,56,21,0,2,17,22,0,4,11,14,21,0,2,21,2,50,16,22,0,5,11,21,2,51,21,0,3,17,22,0,6,11,14,21,0,5,3,1,22,0,7,11,14,0,22,22,0,8,11,14,21,0,6,0,17,16,21,0,4,21,2,9,21,2,62,8,21,0,6,21,2,63,21,0,3,17,17,21,0,1,21,2,59,16,21,2,58,0,22,17,21,2,9,15,142,1,8,21,0,1,17,22,0,9,11,14,21,0,9,0,18,21,0,1,21,2,68,16,21,2,8,0,16,8,7,16,21,0,5,21,2,56,21,0,3,17,21,2,9,15,143,1,21,0,1,7,8,16,21,2,68,21,0,7,17,25,21,0,2,21,2,68,16,21,2,1,21,2,69,21,2,6,0,18,21,2,62,7,8,21,2,64,19,21,1,3,17,21,2,36,21,0,1,21,2,8,21,2,44,21,2,7,0,18,21,2,56,7,8,8,7,16,21,2,57,21,2,68,21,2,40,21,2,5,21,0,1,21,2,40,16,21,2,85,21,2,7,21,2,58,8,21,0,2,17,21,2,8,21,2,22,8,8,19,16,25,21,0,1,21,2,58,21,2,7,21,1,4,8,21,2,9,15,144,1,8,16,14,21,1,5,0,16,0,22,21,2,62,21,1,3,17,22,1,3,12,17,25,21,0,2,21,2,89,16,0,18,21,2,55,21,2,7,21,0,1,21,2,59,21,1,8,17,8,21,2,4,21,2,98,7,21,1,6,19,21,2,40,21,2,8,0,16,8,21,0,1,19,7,16,25,21,0,1,21,2,82,16,0,18,21,2,19,21,2,62,7,7,16,22,0,3,11,14,21,0,3,21,2,85,0,27,17,21,2,91,21,0,1,17,21,2,63,21,0,3,21,2,90,16,0,16,0,21,17,21,2,89,16,17,25,21,0,1,14,21,1,6,0,16,21,1,7,17,21,2,1,0,22,21,2,62,21,1,7,17,22,1,7,12,17,25,21,0,1,21,2,68,16,21,1,3,16,0,18,21,0,1,21,2,40,16,21,2,89,16,21,2,68,16,21,2,8,21,2,44,8,7,16,25,21,0,1,21,2,58,21,2,6,21,2,63,8,21,0,2,17,21,2,55,16,22,0,3,11,14,21,0,1,21,2,58,21,2,6,21,2,51,8,21,0,2,17,22,0,4,11,14,21,0,1,15,145,1,21,2,7,21,2,58,21,2,62,21,0,4,21,2,89,16,21,2,62,0,22,17,21,2,63,16,19,8,21,2,6,15,146,1,8,21,0,2,17,22,0,5,11,14,21,0,5,21,0,3,3,2,25,21,0,2,22,0,3,11,14,21,0,1,22,0,4,11,14,15,147,1,21,1,7,3,2,21,2,0,21,2,59,21,2,7,21,1,6,8,8,22,0,5,11,14,0,21,21,0,5,16,25,15,148,1,22,0,3,11,14,0,27,21,0,3,0,22,21,2,62,21,0,1,17,17,21,2,62,0,22,17,25,21,0,2,21,2,103,21,0,1,21,2,8,21,1,13,8,7,16,25,21,0,2,21,2,59,16,21,2,4,21,2,63,7,0,22,17,22,0,3,11,14,21,0,3,21,2,61,0,21,17,0,5,0,86,17,14,21,0,1,21,2,20,16,21,2,1,21,2,5,21,0,3,21,2,76,0,21,8,8,21,2,1,21,0,3,21,2,76,21,2,56,8,3,2,21,2,0,21,0,3,21,2,56,0,21,17,8,21,2,6,0,18,21,2,40,7,8,21,1,3,9,3,2,21,2,0,21,0,2,21,2,58,16,21,2,56,0,21,17,8,15,149,1,3,2,21,2,0,21,2,68,21,2,5,21,2,58,8,21,2,56,0,26,19,21,2,6,21,2,53,8,8,21,0,2,17,25,21,0,1,25,21,0,1,21,2,10,16,0,5,0,96,17,14,21,0,1,21,2,51,21,1,8,17,22,1,8,12,14,21,0,1,21,2,52,21,1,7,17,22,1,7,12,25,21,0,1,21,2,62,0,21,17,21,2,89,16,21,2,96,21,1,9,3,1,17,0,19,21,2,2,21,2,5,21,0,4,8,7,16,25,21,0,1,21,2,2,21,0,4,17,25,21,0,4,21,2,2,21,0,1,17,25,21,0,2,22,0,3,11,0,7,16,22,0,4,11,14,0,21,22,0,5,11,22,0,6,11,22,0,7,11,14,0,25,22,0,8,11,14,21,0,1,0,22,0,12,21,2,7,17,0,7,0,22,17,21,3,9,0,18,0,8,21,3,7,21,2,7,8,7,8,16,21,3,8,0,16,8,21,3,6,21,1,5,8,22,0,9,11,14,21,0,9,0,21,0,22,0,23,3,4,22,0,10,11,14,0,6,15,150,1,3,2,0,16,21,0,3,0,13,0,26,17,17,22,0,11,11,14,15,151,1,22,0,12,11,14,15,152,1,15,153,1,21,0,12,3,3,21,3,0,15,154,1,8,22,0,13,11,14,21,0,1,0,18,21,0,1,21,3,8,15,155,1,8,7,16,25,21,1,6,21,1,7,0,12,21,0,1,17,21,3,9,15,156,1,8,16,25,21,0,1,0,22,0,7,21,1,3,17,21,3,13,21,0,2,17,21,3,9,21,3,41,21,0,0,21,3,7,21,0,2,0,6,0,22,17,8,7,8,16,21,2,3,21,0,2,21,1,4,16,17,25,21,2,7,21,3,63,21,0,1,17,0,17,16,0,18,21,2,6,0,1,16,7,16,21,3,22,22,2,6,13,14,21,2,7,25,21,0,1,21,3,50,21,2,7,17,0,18,21,2,6,21,3,8,0,16,8,7,16,25,21,0,2,21,3,21,0,22,17,22,0,3,11,21,3,22,22,1,7,13,14,21,0,3,21,3,19,21,3,55,7,16,22,1,8,12,21,3,1,21,3,5,0,17,8,0,18,21,3,62,7,21,3,55,19,21,0,1,17,25,21,1,6,21,3,63,21,1,5,17,21,3,55,21,1,8,17,0,17,16,0,18,21,0,4,0,1,16,21,3,68,16,0,16,0,21,17,7,16,21,3,22,21,3,4,21,3,22,7,3,2,21,3,0,21,1,4,8,21,0,1,21,3,68,16,17,25,21,0,1,22,2,4,12,21,3,4,0,16,7,21,2,6,17,22,2,5,12,14,0,27,22,2,3,12,25,21,0,2,0,18,21,0,1,21,3,8,0,16,8,7,16,25,21,0,1,21,3,59,21,0,2,17,0,19,21,3,53,7,16,21,3,19,21,3,62,7,16,22,0,3,11,14,21,0,3,21,3,89,16,0,18,21,0,2,21,3,8,0,16,8,7,16,21,3,19,21,3,55,7,16,22,0,4,11,14,21,0,3,21,3,57,21,3,7,21,1,4,8,21,3,9,21,0,2,21,0,1,3,2,21,3,8,21,3,36,0,16,7,8,21,3,5,15,157,1,8,8,16,14,21,0,4,25,21,1,4,21,3,62,21,3,7,21,0,1,8,21,3,6,21,2,5,8,21,1,3,17,21,3,59,21,3,7,0,21,8,21,3,9,21,0,1,21,3,62,0,22,17,21,3,5,21,1,5,8,8,16,25,21,0,1,0,22,21,3,8,21,3,57,8,21,3,9,15,158,1,8,21,0,2,17,25,21,0,2,21,3,106,16,21,3,90,16,22,0,3,11,14,21,0,1,21,3,105,21,0,2,21,3,44,21,0,3,17,17,21,3,4,21,3,63,7,0,22,17,21,3,52,0,21,17,21,3,4,21,3,44,7,21,0,3,17,22,0,4,11,14,21,0,1,21,1,3,21,3,76,21,3,39,8,21,0,2,21,3,44,21,0,4,17,17,21,2,2,21,3,9,21,3,55,21,3,7,21,3,63,21,3,7,21,0,4,8,8,21,3,62,21,3,2,19,8,21,0,2,21,3,58,16,17,25,21,0,1,21,1,8,0,7,0,22,17,21,4,9,21,1,9,0,7,0,22,19,21,4,9,15,159,1,8,8,0,22,0,7,21,0,1,17,17,25,21,0,2,0,6,21,1,3,17,22,1,4,12,14,21,0,1,0,6,21,1,3,17,22,1,7,12,21,2,6,16,22,1,6,12,0,6,21,1,3,17,21,2,6,16,22,1,5,12,14,21,1,7,0,13,21,3,6,17,22,1,8,12,14,21,1,6,21,1,11,16,14,21,1,7,21,1,13,21,1,4,17,25,21,0,2,0,6,0,22,17,22,1,4,12,0,12,21,1,6,17,0,8,0,23,17,0,6,22,1,8,13,14,21,0,2,25,21,0,1,0,6,0,22,17,22,1,7,12,0,12,21,1,5,17,0,6,22,1,8,13,14,21,0,1,25,21,0,1,21,1,10,21,4,0,21,1,8,8,21,0,2,17,25,21,0,1,0,16,21,1,7,21,1,13,21,1,4,17,17,25,0,22,0,6,21,0,1,17,21,2,4,16,22,2,6,12,21,2,5,16,22,2,7,12,14,21,2,6,25,21,0,1,21,4,19,21,4,63,7,16,21,4,55,16,22,2,3,12,14,21,0,1,21,4,19,21,4,51,7,16,21,4,55,21,1,4,17,22,1,4,12,25,0,23,21,4,47,21,0,2,17,21,4,51,16,22,0,3,11,21,4,62,21,0,1,17,22,0,4,11,21,3,2,16,22,0,5,11,14,21,0,1,21,0,4,3,2,0,16,21,0,5,17,21,2,3,21,0,2,21,4,50,0,23,17,21,4,55,21,0,5,17,21,4,62,21,0,3,17,17,25,21,0,1,14,0,23,22,2,8,12,14,21,2,4,22,2,7,12,14,21,0,1,22,2,4,12,25])
+ ,provide.concat([0,1,2,32,3,8,-1,Infinity,-Infinity,4,str("´: 𝕩 must be a list"),str("Mapping: Equal-rank argument shapes don\'t agree"),str("Mapping: Argument shape prefixes don\'t agree"),str("⍋𝕩: 𝕩 must have rank at least 1"),str("/: Replication argument must have rank 1"),str("/: Amounts to replicate must be natural numbers"),str("𝕨⊏𝕩: 𝕩 must be an array"),str("𝕨⊏𝕩: Indices in 𝕨 must be integers"),str("𝕨⊏𝕩: Indices out of range"),str("⌽𝕩: 𝕩 must have rank at least 1"),str("𝕨⌽𝕩: 𝕨 must consist of integers"),str("First-axis primitive: 𝕩 must have rank at least 1"),str("Multi-axis primitive: 𝕨 must have rank at most 1"),str("Multi-axis primitive: length of 𝕨 must be at most rank of 𝕩"),str(">𝕩: Elements of 𝕩 must have matching shapes"),str("≥: No monadic form"),str("≤: No monadic form"),str("´: Identity not found"),str("𝕨⥊𝕩: 𝕨 must have rank at most 1"),str("𝕨⥊𝕩: 𝕨 must consist of natural numbers"),str("𝕨⥊𝕩: Can\'t compute axis length when rest of shape is empty"),str("𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑"),str("𝕨⥊𝕩: Shape must be exact when reshaping with ∘"),str("↕𝕩: 𝕩 must consist of natural numbers"),str("↕𝕩: 𝕩 must be a number or list"),str("˝: 𝕩 must have rank at least 1"),str("𝕨∾𝕩: Rank of 𝕨 and 𝕩 must differ by at most 1"),str("𝕨∾𝕩: Cell shapes of 𝕨 and 𝕩 must match"),str("↑ or ↓: 𝕨 must be an integer"),str("↑𝕩: 𝕩 must have rank at least 1"),str("↓𝕩: 𝕩 must have rank at least 1"),str("𝕨↕𝕩: 𝕩 must be an array"),str("𝕨↕𝕩: 𝕨 must have rank at most 1"),str("𝕨↕𝕩: length of 𝕨 must be at most rank of 𝕩"),str("𝕨↕𝕩: 𝕨 must consist of natural numbers"),str("𝕨↕𝕩: Window length 𝕨 must be at most axis length plus one"),str("𝕨/𝕩: lengths of components of 𝕨 must match 𝕩"),str("∾𝕩: 𝕩 must be an array"),str("∾𝕩: elements of 𝕩 must all have the same rank"),str("∾𝕩: 𝕩 element rank must be at least argument rank"),str("∾𝕩: 𝕩 element shapes must be compatible"),str("⊔: Grouping argument must consist of integers"),str("⊔: Grouping argument values cannot be less than ¯1"),str("⊔𝕩: 𝕩 must be a list"),str("𝕨⊔𝕩: 𝕩 must be an array"),str("𝕨⊔𝕩: Compound 𝕨 must be a list"),str("𝕨⊔𝕩: Total rank of 𝕨 must be at most rank of 𝕩"),str("𝕨⊔𝕩: Lengths of components of 𝕨 must be compatible with 𝕩"),str("𝕨⊑𝕩: Indices in compound 𝕨 must be lists"),str("𝕨⊑𝕩: Index length in 𝕨 must match rank of 𝕩"),str("𝕨⊑𝕩: Indices in 𝕨 must consist of integers"),str("𝕨⊑𝕩: Index out of range"),str("⍋ or ⍒: Rank of 𝕨 must be at least 1"),str("⍋ or ⍒: Rank of 𝕩 must be at least cell rank of 𝕨"),str("⍋ or ⍒: 𝕨 must be sorted"),str("p⊐𝕩 or 𝕨∊p: p must have rank at least 1"),str("∊𝕩 or ⊐𝕩: 𝕩 must have rank at least 1"),str("⍷𝕩: Rank of 𝕨 cannot exceed rank of 𝕩"),str("𝕨⍉𝕩: 𝕨 must have rank at most 1"),str("𝕨⍉𝕩: Length of 𝕨 must not exceed rank of 𝕩"),str("𝕨⍉𝕩: 𝕨 must consist of natural numbers"),str("𝕨⍉𝕩: Skipped result axis"),str("⁼: Inverse failed"),str("⁼: Inverse does not exist"),str("⁼: Inverse not found"),str("⍟: Repetition numbers in 𝕨 must be integers")])
+ ,[[0,1,0,138],[2,0,2935,6],[0,0,2962,3],[0,0,2966,3],[0,0,2970,3],[1,0,2974,5],[1,0,2982,5],[2,0,3000,6],[2,0,3015,6],[2,0,3034,6],[2,0,3056,6],[2,0,3078,6],[0,0,3110,3],[0,0,3121,3],[0,0,3130,3],[1,0,3139,9],[0,0,3252,3],[0,0,3292,4],[1,1,3368,4],[1,1,3441,3],[0,0,3505,3],[0,0,3516,5],[2,0,3600,12],[0,0,3806,4],[0,0,3855,6],[0,0,3945,7],[0,0,4074,4],[0,0,4230,4],[0,0,4291,4],[2,0,4393,16],[1,1,4623,2],[0,0,4647,3],[0,0,4674,3],[0,0,4700,3],[1,1,4739,2],[2,1,4749,4],[0,0,4785,4],[1,1,4882,2],[0,0,4915,3],[0,0,4942,3],[0,0,4964,3],[0,0,4986,3],[0,0,4997,3],[0,0,5026,3],[0,0,5032,9],[0,0,5183,5],[0,0,5216,3],[0,0,5225,3],[1,1,5231,2],[2,0,5300,10],[2,0,5359,8],[1,0,5552,5],[0,0,5594,8],[0,0,5830,4],[0,0,5911,3],[0,0,5961,4],[0,0,6082,3],[0,0,6132,4],[0,0,6298,3],[0,0,6317,3],[0,0,6351,3],[0,0,6365,7],[0,0,6412,11],[1,0,6677,8],[0,0,6776,4],[0,0,6859,6],[0,0,7190,4],[0,0,7403,3],[0,0,7421,4],[1,0,7493,9],[1,1,7563,3],[1,0,7588,14],[1,1,8023,4],[1,0,8073,6],[0,0,8212,4],[0,0,8280,3],[0,0,8354,3],[0,0,8409,4],[0,0,8538,4],[0,0,8658,3],[2,0,8698,6],[2,0,8727,7],[0,0,8768,6],[0,0,8918,3],[0,0,8988,3],[0,0,9025,5],[0,0,9169,3],[0,0,9216,3],[0,0,9242,3],[0,0,9329,3],[1,1,9384,2],[2,0,9393,13],[1,1,9547,2],[1,1,9561,2],[1,1,9565,2],[0,0,9569,3],[0,0,9581,3],[0,0,9604,3],[1,0,9625,6],[1,0,9742,11],[1,0,9963,5],[0,0,9978,3],[0,0,9993,3],[0,0,10008,3],[1,0,10053,8],[0,0,10192,8],[0,0,10360,5],[0,0,10435,3],[0,0,10452,3],[0,0,10458,4],[0,0,10507,3],[0,0,10517,3],[0,0,10545,5],[1,0,10641,5],[0,0,10652,8],[0,0,10909,3],[0,0,10950,3],[0,0,10970,3],[1,0,11024,6],[0,0,11177,6],[0,0,11305,10],[0,0,11490,3],[0,0,11590,3],[0,0,11632,3],[0,0,11685,4],[0,0,11745,3],[0,0,11776,3],[0,0,11814,6],[0,0,11921,6],[0,0,11971,4],[0,0,12001,3],[0,0,12020,4],[1,1,12178,2],[0,0,12182,3],[1,0,12225,5],[1,0,12262,5],[1,0,12273,5],[0,0,12284,14],[0,0,12460,3],[0,0,12481,3],[0,0,12535,3],[0,0,12570,3],[0,0,12594,4],[1,0,12654,5],[0,0,12721,3],[0,0,12750,3],[0,0,12767,5],[0,0,12878,3],[0,0,12933,3],[0,0,12957,5],[0,0,13086,3],[0,0,13126,3],[0,0,13209,3],[0,0,13243,3],[0,0,13272,3],[0,0,13290,3],[0,0,13307,3],[0,0,13336,3],[0,0,13379,6],[0,0,13458,3]]
);
// Compiler
-runtime[40] = assertFn("Compilation failed");
+runtime[40] = assertFn("Compiler");
let compile = run(
new Uint8Array([0,53,0,0,0,52,17,22,0,0,11,14,0,74,22,0,1,11,0,75,0,76,0,77,0,21,21,0,0,17,0,78,0,79,0,80,0,81,0,82,0,83,0,53,0,25,16,0,0,0,84,17,0,85,0,54,22,0,2,11,0,25,16,0,40,0,0,7,0,87,17,0,20,16,0,37,0,21,7,0,86,17,0,55,0,0,0,52,17,0,21,0,88,17,3,14,22,0,3,11,0,21,16,22,0,4,11,14,15,1,22,0,5,11,14,15,2,21,0,4,7,22,0,6,11,14,21,0,3,0,39,0,13,7,16,0,19,0,21,0,57,19,0,23,0,13,19,0,44,0,0,7,9,0,48,0,37,0,39,0,22,7,7,8,16,22,0,7,22,0,8,22,0,9,22,0,10,22,0,11,22,0,12,22,0,13,22,0,14,22,0,15,22,0,16,22,0,17,22,0,18,22,0,19,22,0,20,4,14,11,14,21,0,19,0,30,16,0,0,0,58,17,22,0,21,11,14,0,30,0,48,0,1,8,0,12,0,9,0,15,0,47,0,57,8,19,0,30,0,47,0,56,8,19,22,0,22,11,14,21,0,3,0,23,0,55,17,0,39,0,13,7,16,0,42,0,0,7,16,22,0,23,11,14,0,57,0,21,0,61,0,25,16,0,26,16,0,27,0,60,17,17,0,21,21,0,3,0,23,0,59,17,0,39,0,13,7,16,0,21,0,57,17,0,27,16,0,23,21,0,15,0,30,0,56,17,0,1,21,0,23,17,17,17,22,0,24,11,14,0,59,0,57,3,2,0,40,0,1,7,0,59,0,60,0,62,3,3,17,0,20,16,22,0,25,11,14,15,3,22,0,26,11,14,15,4,22,0,27,11,14,0,52,0,30,0,47,0,56,8,0,24,0,47,0,56,8,21,0,27,3,4,0,50,0,29,0,31,21,0,16,0,30,16,0,90,0,91,3,3,19,0,30,9,8,22,0,28,11,14,15,5,22,0,29,11,14,15,6,22,0,30,11,14,15,7,22,0,31,11,14,15,8,22,0,32,11,14,15,9,22,0,33,11,25,21,0,1,0,33,0,90,0,91,3,2,17,0,42,0,10,7,16,0,8,16,0,36,0,89,17,14,0,57,0,36,0,47,0,21,8,0,92,21,0,1,0,13,16,0,11,0,56,17,0,37,0,27,7,0,93,17,0,94,21,0,1,3,4,17,25,21,0,1,0,48,0,29,8,0,48,0,17,0,51,0,18,0,27,0,13,19,0,45,21,1,5,8,8,8,0,18,0,19,19,22,0,2,11,14,21,0,1,0,28,16,22,0,3,11,14,0,19,0,28,21,0,1,0,29,21,0,3,17,19,0,6,0,56,19,0,37,0,1,7,0,56,19,0,37,0,29,7,21,0,3,19,21,0,2,0,19,19,25,0,95,0,14,21,0,1,17,22,0,3,11,14,0,90,0,14,21,0,1,17,0,9,0,47,0,24,0,47,0,61,8,0,23,0,13,19,8,16,0,27,16,22,0,4,11,14,0,91,0,14,21,0,1,17,22,0,5,11,0,27,16,22,0,6,11,14,21,0,4,21,0,6,0,24,0,63,17,21,0,3,0,27,16,3,3,0,21,16,22,0,7,11,0,28,16,22,0,8,11,14,21,0,7,0,29,21,0,8,17,22,0,7,12,14,21,0,4,0,0,0,61,17,21,0,6,0,24,0,56,17,0,56,0,21,21,1,0,0,14,21,0,1,17,17,0,27,16,0,27,0,47,21,0,3,0,44,0,0,7,16,0,21,0,57,17,0,48,0,29,0,45,0,19,0,21,0,57,19,0,24,0,63,19,0,1,0,19,19,8,8,8,16,3,3,0,21,16,0,29,21,0,8,17,22,0,9,11,14,15,10,0,51,15,11,8,22,0,10,11,14,21,0,9,0,28,21,0,7,17,0,13,0,48,0,21,8,16,0,13,0,37,0,23,7,0,56,19,0,48,21,0,10,8,16,0,24,0,63,17,22,0,11,11,14,21,0,9,0,38,0,21,7,21,0,7,17,0,27,21,0,11,17,22,0,12,11,14,0,20,0,37,0,21,7,21,0,1,0,13,16,19,0,41,0,27,7,9,0,24,0,63,19,22,0,13,11,14,21,0,12,21,0,13,16,22,0,14,11,0,44,0,13,7,16,0,8,16,22,0,15,11,14,21,0,5,0,9,0,47,0,19,0,37,0,21,7,0,57,19,0,24,0,56,19,8,16,0,9,21,0,14,17,0,9,21,0,15,17,22,0,16,11,0,8,16,0,9,22,0,15,13,14,21,0,12,0,27,21,0,3,0,29,21,0,7,0,27,21,0,11,17,17,0,8,16,17,22,0,17,11,14,21,0,17,21,0,13,16,0,44,0,13,7,16,0,2,21,0,17,0,38,0,30,7,16,21,0,13,16,0,37,0,1,7,21,0,16,17,0,44,0,0,7,16,17,0,37,0,1,7,0,56,17,0,37,0,35,7,21,0,1,17,22,0,18,11,0,34,16,22,0,19,11,14,21,0,17,0,38,0,26,0,45,0,30,8,7,16,21,0,13,16,0,27,21,0,15,17,22,0,20,11,14,21,0,1,0,27,21,0,15,17,0,27,0,47,21,0,20,8,0,49,0,39,21,1,4,0,30,16,7,8,16,21,1,6,16,0,37,0,1,7,21,0,20,17,22,0,21,11,14,21,1,17,21,1,18,21,1,19,3,3,0,39,0,30,7,0,56,17,0,42,0,0,7,16,0,22,21,1,17,0,30,16,17,21,1,22,21,0,21,17,22,0,22,11,0,11,0,47,0,19,0,21,0,57,19,0,23,0,13,19,8,16,22,0,23,11,14,21,1,16,0,30,16,0,14,21,0,21,17,22,0,24,11,14,21,0,24,0,0,22,0,22,13,14,21,0,24,0,0,22,0,23,13,14,21,1,19,0,42,0,0,7,16,0,0,0,63,17,0,14,21,0,21,17,22,0,25,11,14,21,0,21,0,15,0,47,21,1,19,0,30,16,0,48,0,0,8,8,0,2,0,18,19,0,1,0,19,19,21,1,2,17,0,35,21,0,23,0,44,0,0,7,16,0,2,21,0,22,0,11,21,0,25,17,17,0,37,0,1,7,0,56,17,17,22,0,26,11,14,21,0,21,0,27,21,0,23,17,0,37,0,1,7,21,1,19,0,30,16,17,0,37,0,3,0,45,0,5,8,7,21,1,2,17,22,0,27,11,14,21,0,26,0,31,16,22,0,28,11,0,11,0,47,0,44,0,6,7,0,21,0,63,19,0,23,0,13,19,8,16,22,0,29,11,14,21,0,27,0,27,21,0,29,17,0,12,0,57,17,22,0,30,11,0,13,16,22,0,31,11,14,21,0,27,0,6,0,57,17,0,14,0,47,0,61,8,0,48,0,9,8,0,0,0,19,19,21,0,22,0,11,0,47,0,19,0,37,0,21,7,0,57,19,0,24,0,56,19,8,16,0,37,0,27,7,21,0,25,17,17,22,0,27,12,14,21,0,21,0,27,0,47,21,0,20,8,0,49,21,0,18,0,31,21,0,19,17,0,0,21,0,31,17,0,0,21,1,23,17,8,16,0,27,0,47,21,0,23,8,0,49,21,0,30,0,28,16,0,28,16,0,29,21,0,28,17,0,0,21,1,23,17,8,16,0,27,21,1,20,21,1,22,21,0,21,17,0,10,21,0,22,17,0,8,16,0,10,21,0,23,17,17,22,0,21,12,14,21,1,10,21,1,22,21,0,21,17,0,9,0,47,0,19,0,10,21,1,12,0,30,16,0,0,0,61,0,58,3,2,17,0,33,21,0,21,17,19,0,21,0,56,19,0,23,0,13,19,8,16,0,8,16,0,37,0,27,7,22,0,21,13,14,21,1,10,21,1,22,21,0,21,17,0,9,21,1,12,0,30,16,0,0,0,59,0,60,3,2,17,0,33,21,0,21,17,0,37,0,21,7,0,56,17,0,24,0,56,17,17,0,8,16,0,37,0,27,7,22,0,21,13,14,21,1,23,0,1,21,0,21,17,21,0,31,0,48,0,11,8,0,9,0,15,0,47,0,57,8,19,16,22,0,32,11,14,21,1,24,0,29,21,0,21,0,5,21,1,23,17,17,0,27,0,47,21,0,32,8,0,49,21,0,27,8,16,22,0,33,11,14,21,1,15,0,30,16,0,37,0,22,7,0,60,17,21,1,22,21,0,21,17,0,2,0,60,17,0,0,22,0,21,13,14,21,0,21,21,0,33,21,0,30,0,8,16,0,42,0,0,7,16,21,0,19,0,21,21,0,26,0,29,21,0,29,0,27,16,0,27,21,0,30,17,17,17,3,4,25,21,1,18,0,30,16,0,0,0,47,0,25,8,0,58,17,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,1,17,0,30,16,0,48,0,1,8,0,26,0,45,0,42,0,2,0,47,0,53,8,0,48,0,0,8,7,8,9,22,0,7,11,14,21,0,7,0,24,0,47,0,56,8,21,0,7,9,0,1,9,3,2,0,50,0,30,0,14,21,0,3,19,8,22,0,8,11,14,0,24,0,47,0,56,0,48,0,0,8,8,0,57,0,13,0,4,0,53,19,0,3,21,0,7,19,3,2,0,50,0,13,0,11,0,57,19,8,9,0,0,0,23,0,45,21,0,7,8,19,0,47,21,0,4,0,11,16,0,48,0,31,8,8,22,0,9,11,14,0,64,0,65,21,0,9,3,3,0,50,0,29,0,31,21,0,5,21,0,6,3,2,19,0,30,9,8,22,0,10,11,14,21,1,21,0,31,21,0,1,17,0,30,16,22,0,11,11,14,21,0,1,0,23,21,0,11,17,21,0,10,0,24,0,47,0,56,8,21,0,10,9,0,1,9,3,2,0,50,0,30,0,14,21,0,3,19,8,16,22,0,12,11,14,21,0,12,21,0,1,0,13,16,0,11,21,0,11,17,0,51,0,37,0,18,0,24,0,56,0,0,21,0,11,17,19,21,0,8,9,0,4,0,53,19,0,48,0,2,8,7,8,21,0,1,17,25,0,66,22,0,3,11,14,21,0,1,0,6,0,56,17,0,41,0,4,7,21,0,3,17,0,5,16,22,0,4,11,14,21,0,4,0,0,0,56,17,0,44,0,0,7,0,48,0,19,0,21,0,57,19,0,23,0,13,19,0,48,0,27,8,0,1,0,19,0,30,0,63,19,0,25,9,19,8,16,0,28,16,0,28,16,22,0,5,11,14,21,0,1,15,12,21,0,4,17,0,29,21,0,5,17,25,0,40,0,14,7,0,43,15,13,7,0,19,0,45,0,38,0,57,7,8,19,0,30,0,63,19,22,0,3,11,14,15,14,22,0,4,11,14,0,57,21,0,4,0,97,8,0,37,0,56,21,0,4,0,98,8,7,3,2,0,50,0,13,0,46,0,12,8,8,22,0,5,11,14,21,0,1,21,0,5,0,99,3,2,0,50,0,13,0,46,0,5,8,0,11,21,0,3,19,8,21,0,2,17,0,37,0,36,7,0,57,17,25,0,93,0,27,21,0,1,0,13,16,0,11,0,56,17,17,0,21,0,100,17,0,37,0,36,7,0,57,17,25,21,0,2,22,0,3,22,0,4,4,2,11,14,21,1,12,0,30,0,48,0,1,8,0,7,0,61,19,0,4,0,63,19,0,2,21,1,22,19,21,0,1,17,22,0,5,11,0,44,0,0,7,16,22,0,6,11,0,28,16,22,0,7,11,14,21,1,12,0,30,16,0,0,0,61,17,0,37,0,22,7,0,61,17,21,1,22,21,0,1,17,0,2,21,0,5,17,22,0,8,11,14,21,0,1,0,29,0,47,21,0,7,8,0,46,0,27,0,47,0,63,0,48,0,14,8,8,0,37,0,1,7,0,56,19,0,17,0,51,21,1,30,8,0,27,0,47,0,56,0,48,0,14,8,8,19,8,21,0,5,17,14,21,0,6,0,30,21,0,7,0,30,16,17,0,15,0,57,17,0,36,0,101,17,14,21,1,13,21,1,22,21,0,1,17,0,10,0,47,0,26,0,47,0,56,8,8,16,22,0,9,11,14,21,0,9,0,29,0,47,21,0,7,8,0,49,0,26,0,47,0,63,8,8,16,22,0,10,11,14,21,0,10,0,10,21,0,9,17,22,0,11,11,14,21,0,9,0,29,21,0,7,17,0,28,16,0,37,0,29,7,22,0,7,13,14,21,0,11,0,8,16,0,2,22,0,4,13,14,0,57,0,12,21,0,5,17,22,0,12,11,14,21,1,12,0,30,16,0,0,0,56,17,0,14,21,0,1,17,0,11,21,0,11,17,22,0,13,11,14,21,1,10,21,1,22,21,0,1,17,0,10,21,0,9,17,0,10,21,0,12,17,0,29,0,37,0,21,7,0,1,0,21,0,45,0,44,0,0,7,8,19,0,56,19,0,28,0,48,0,28,0,48,0,37,0,29,7,8,0,1,0,37,0,29,7,19,0,29,0,47,0,28,8,0,18,19,8,0,18,0,21,0,63,19,19,21,0,7,17,0,24,0,63,17,0,0,0,56,17,0,44,0,0,7,16,0,28,16,22,0,14,11,14,21,0,8,0,29,21,0,14,17,0,44,0,0,7,16,22,0,15,11,0,28,16,22,0,16,11,14,21,0,16,0,37,0,29,7,22,0,14,13,14,21,0,16,0,37,0,29,7,22,0,15,13,14,21,0,14,0,37,0,29,7,22,0,1,13,14,21,0,8,0,29,21,0,14,17,22,0,17,11,14,0,57,0,11,21,0,17,17,0,27,16,22,0,18,11,14,0,57,0,12,21,0,17,17,22,0,19,11,0,44,0,0,7,16,22,0,20,11,14,0,57,0,48,0,21,8,0,44,0,0,7,9,0,27,0,56,0,21,21,0,19,17,19,0,19,0,21,0,57,19,0,23,0,13,19,0,48,0,1,8,9,22,0,21,11,14,0,14,0,45,21,0,21,8,0,24,0,56,19,0,11,0,57,19,22,0,22,11,14,21,0,1,0,28,21,1,15,0,30,16,0,0,0,60,17,0,0,0,57,0,59,0,58,0,60,3,4,17,17,21,0,22,0,47,0,59,8,0,2,0,61,19,0,6,21,0,22,0,47,0,61,8,19,0,2,0,61,19,0,0,21,0,22,0,47,0,56,8,19,0,21,0,57,19,16,22,0,23,11,14,21,1,25,0,29,21,0,23,17,22,0,24,11,14,21,0,4,0,29,0,47,21,0,14,0,29,21,0,18,17,8,0,49,0,58,0,25,16,0,27,0,47,0,15,0,47,0,61,8,0,0,0,56,19,8,16,0,29,21,0,23,0,24,0,56,17,17,8,16,22,0,4,12,14,21,0,4,0,15,0,56,17,0,10,21,0,4,0,14,0,59,17,0,29,0,47,21,0,7,8,0,49,0,26,0,47,0,63,8,8,16,17,0,19,0,2,0,47,0,13,0,45,0,25,8,0,0,0,56,19,8,0,44,0,6,7,9,0,46,0,14,8,0,10,0,47,0,8,8,19,0,9,0,18,19,21,0,13,17,0,0,22,0,4,13,14,21,1,23,0,1,21,0,1,17,22,0,25,11,21,0,3,0,48,0,11,8,0,9,0,15,0,47,0,57,8,19,16,22,0,26,11,0,27,16,22,0,27,11,14,21,0,1,0,29,21,0,27,17,22,0,28,11,14,21,1,15,21,1,22,21,0,1,17,0,27,16,22,0,29,11,14,21,1,11,0,30,16,0,14,21,0,1,17,0,29,21,1,11,21,1,22,21,0,1,17,0,2,0,47,0,13,0,45,0,25,8,8,16,0,44,0,6,7,16,17,22,0,30,11,14,21,0,8,0,1,21,0,5,17,0,29,21,0,14,17,0,44,0,0,7,16,0,28,16,22,0,7,12,14,21,0,14,0,29,21,0,7,17,22,0,31,11,14,21,0,9,0,1,21,0,10,17,0,29,21,0,31,17,0,12,0,27,0,46,0,1,8,0,11,19,0,57,17,0,37,0,3,7,0,61,17,0,0,0,56,17,22,0,32,11,14,21,1,12,0,30,16,0,0,0,60,17,0,14,21,0,1,17,0,29,21,0,7,17,0,27,16,22,0,33,11,14,21,0,9,0,29,21,0,31,17,0,28,16,22,0,34,11,0,37,0,29,7,22,0,7,13,14,21,0,14,0,29,21,0,7,17,22,0,31,12,14,21,0,7,0,37,0,29,7,22,0,1,13,14,21,0,31,0,37,0,29,7,22,0,4,13,14,21,0,31,0,37,0,29,7,22,0,12,13,14,21,0,9,0,12,21,0,10,17,0,29,21,0,31,17,0,27,16,22,0,35,11,14,21,0,7,0,28,16,22,0,36,11,14,21,0,34,0,28,16,0,29,22,0,33,13,14,21,1,10,21,1,22,21,0,1,17,22,0,37,11,14,21,0,9,0,29,21,0,31,17,0,10,21,0,12,17,0,10,21,0,37,17,22,0,38,11,14,21,1,11,0,30,16,0,37,0,22,7,0,61,17,21,1,22,21,0,1,17,22,0,39,11,14,21,0,39,0,10,21,0,38,17,0,1,22,0,4,13,14,0,61,0,16,21,0,4,17,22,0,40,11,14,0,59,0,14,21,0,4,17,0,26,0,56,17,0,10,0,56,0,16,21,0,4,17,17,22,0,41,11,14,21,0,41,0,29,21,0,38,0,26,0,63,17,0,2,0,47,0,13,0,45,0,25,8,8,16,0,44,0,6,7,16,17,22,0,42,11,14,21,0,41,0,26,0,56,17,0,9,21,1,11,0,30,16,0,0,0,56,17,0,14,21,0,1,17,17,0,11,21,0,42,17,22,0,43,11,14,0,59,0,14,21,0,4,17,0,26,0,56,17,0,11,21,0,39,17,0,10,21,0,40,17,22,0,44,11,14,21,0,43,0,10,21,0,44,17,0,8,16,0,26,16,0,2,0,45,0,44,0,6,7,8,0,1,0,18,19,0,47,0,13,0,45,0,25,8,8,16,0,26,16,22,0,45,11,14,21,0,39,0,27,16,21,0,45,0,48,0,29,8,0,0,0,56,19,0,0,0,19,19,16,22,0,46,11,14,0,56,0,1,21,0,46,17,0,37,0,21,7,21,0,1,0,13,16,17,0,41,0,27,7,16,0,24,0,63,17,0,19,0,21,0,57,19,0,23,0,13,19,0,48,0,1,8,16,0,29,21,0,36,17,0,44,0,0,7,16,0,26,0,63,17,22,0,47,11,0,29,21,0,7,17,22,0,48,11,14,21,0,4,0,27,0,47,21,0,48,8,0,49,0,39,0,63,7,8,16,22,0,4,12,14,21,0,44,0,8,16,0,44,0,0,7,0,2,0,45,0,44,0,6,7,8,0,1,0,19,19,21,0,38,19,0,15,0,11,0,7,19,0,61,19,0,9,0,19,19,16,0,9,21,0,38,0,2,0,47,0,13,0,45,0,25,8,0,0,0,56,19,8,0,44,0,6,7,9,0,46,0,15,8,21,0,39,17,17,22,0,49,11,14,21,0,39,0,10,21,0,38,17,0,37,0,21,7,0,57,17,0,24,0,56,17,0,12,21,0,40,17,22,0,50,11,14,21,0,50,0,27,16,0,26,16,22,0,51,11,14,21,0,50,0,26,0,63,17,0,11,21,0,40,17,0,10,0,56,0,14,21,0,4,17,17,0,11,21,0,50,0,26,0,56,17,0,9,21,0,44,17,17,0,9,21,0,42,0,8,16,0,10,21,0,49,17,17,0,11,21,0,48,0,26,0,56,17,17,0,27,16,22,0,52,11,14,0,57,0,14,21,0,4,17,0,11,21,0,44,17,0,10,0,57,0,16,21,0,4,17,0,9,21,0,42,17,17,0,9,21,1,14,0,30,16,0,13,21,0,1,17,17,0,37,0,21,7,0,57,17,0,24,0,56,17,0,29,21,0,52,17,22,0,53,11,14,21,0,3,0,0,21,1,23,17,0,16,21,0,1,17,22,0,54,11,14,21,1,9,0,42,0,0,7,16,0,0,0,63,17,0,15,21,0,1,17,0,10,21,0,54,17,0,27,16,22,0,55,11,14,21,0,1,0,29,21,0,55,17,22,0,56,11,0,34,16,0,9,16,22,0,57,11,14,21,1,12,0,30,16,0,0,0,58,17,0,14,21,0,1,0,27,21,0,12,17,17,22,0,58,11,14,0,56,0,21,21,0,38,17,0,9,21,0,12,0,21,0,56,17,17,0,1,0,57,0,21,21,0,37,17,17,0,44,0,0,7,16,0,27,0,56,0,21,21,0,12,17,17,0,24,0,47,0,1,8,0,1,0,24,19,0,56,17,0,27,21,0,58,17,0,0,0,56,17,22,0,59,11,14,21,0,58,0,21,0,57,17,0,29,0,47,0,44,0,0,7,8,21,0,12,17,0,12,21,0,37,17,0,27,16,22,0,60,11,14,21,1,12,0,30,16,0,0,0,61,17,0,14,21,0,1,17,0,27,16,22,0,61,11,14,21,0,47,0,9,21,0,30,17,0,9,21,0,26,17,22,0,62,11,0,29,21,0,27,17,22,0,63,11,14,21,0,62,21,0,21,16,22,0,64,11,14,21,0,20,0,29,21,0,27,17,0,37,21,0,16,0,29,21,0,18,17,0,21,21,0,1,0,13,16,17,7,0,29,0,27,0,47,21,0,63,8,19,0,21,21,0,16,0,27,21,0,19,17,0,21,0,63,17,0,48,0,29,8,19,16,22,0,65,11,14,21,0,65,0,28,16,0,29,0,47,21,0,28,0,27,0,47,21,0,63,8,0,48,0,21,8,16,22,0,66,11,0,48,0,29,8,0,28,9,8,16,22,0,67,11,14,21,0,65,0,19,0,29,21,0,67,0,27,0,47,0,15,0,47,21,0,27,0,13,16,8,8,16,19,0,13,0,47,0,19,0,21,0,57,19,0,23,0,13,19,8,9,0,46,0,10,8,21,0,66,17,0,42,0,9,7,0,56,17,0,36,0,102,17,14,21,0,67,0,29,0,47,21,0,63,0,37,0,27,7,16,0,1,16,0,21,21,0,63,17,0,48,0,29,0,45,0,44,0,0,7,8,8,0,28,9,8,16,0,27,0,47,21,0,27,0,13,16,0,48,0,11,8,8,16,22,0,67,12,14,21,0,67,0,37,0,29,7,22,0,63,13,14,21,0,28,0,29,21,0,67,17,0,13,0,47,0,19,0,21,0,57,19,0,23,0,13,19,8,0,11,21,0,63,19,0,48,0,19,0,42,0,10,7,0,57,19,0,51,0,37,0,27,0,45,21,1,31,8,7,8,8,16,14,21,0,27,0,29,0,47,21,0,67,8,0,49,0,29,0,47,21,0,63,0,2,0,47,0,13,0,45,0,25,8,8,16,0,44,0,6,7,16,8,8,16,22,0,68,11,14,21,0,25,0,29,21,0,29,17,0,0,0,61,17,0,15,0,47,0,57,8,0,48,0,0,8,16,0,0,21,0,23,0,7,0,61,17,0,2,0,59,17,0,29,21,0,20,0,29,21,0,29,17,17,17,0,21,21,0,62,0,44,0,0,7,16,0,8,0,47,0,2,0,47,21,0,19,8,0,44,0,6,7,9,8,16,0,1,21,0,24,0,29,21,0,20,17,17,0,29,21,0,68,17,17,22,0,69,11,14,21,0,29,0,21,21,0,27,17,22,0,70,11,0,11,16,0,20,0,59,17,0,21,16,22,0,71,11,14,21,0,47,0,29,21,0,70,17,0,0,0,67,17,21,0,29,0,39,0,57,7,16,0,21,21,0,68,21,0,15,0,48,0,29,8,0,46,0,1,8,21,0,27,17,17,21,0,69,3,3,22,0,72,11,14,21,0,36,0,29,22,0,18,13,14,21,0,55,21,0,55,21,0,18,21,0,18,21,0,61,21,0,60,21,0,33,21,0,33,21,0,35,21,0,35,21,0,46,21,0,45,0,29,21,0,51,17,0,6,0,56,17,0,0,21,0,51,17,21,0,53,0,0,21,0,52,17,0,0,0,47,21,0,45,0,48,0,29,8,0,2,21,0,53,19,8,16,3,13,0,21,16,0,37,0,29,7,21,0,7,17,0,21,21,0,71,17,0,28,16,22,0,73,11,14,21,0,55,0,39,0,57,7,16,21,0,56,0,31,21,0,57,17,21,0,18,0,39,0,68,7,16,21,0,18,0,13,16,0,25,16,0,0,0,56,17,3,4,0,21,21,0,72,17,0,21,16,22,0,74,11,14,21,0,61,0,39,0,69,7,16,21,0,60,0,39,0,70,7,16,21,0,48,0,29,21,0,33,17,0,0,0,59,17,21,0,59,21,0,48,0,29,21,0,35,17,0,0,0,59,17,21,0,32,21,0,1,0,0,21,0,43,17,0,27,21,0,39,17,0,0,21,1,11,0,30,16,0,1,0,71,17,17,21,0,4,0,29,21,0,51,17,0,0,0,60,17,21,0,42,0,29,21,0,52,17,0,2,0,73,17,0,1,21,0,53,17,0,0,0,72,17,0,14,0,47,0,53,8,0,2,0,55,19,0,0,0,19,19,16,3,9,0,21,16,0,21,21,0,74,17,0,29,21,0,73,17,22,0,75,11,14,21,0,24,0,0,21,0,64,17,0,39,0,11,0,46,0,22,8,7,21,0,61,0,13,0,46,0,22,8,21,0,74,17,21,1,22,21,0,73,17,0,21,0,56,17,0,27,16,0,37,0,29,7,21,0,75,0,6,0,56,17,0,41,0,4,7,0,66,17,0,5,16,0,0,0,56,17,0,21,0,57,17,0,44,0,0,7,16,17,17,0,39,0,21,7,0,61,0,25,0,46,0,26,0,48,0,40,0,22,7,8,8,0,59,17,0,20,16,0,29,21,0,23,17,17,22,0,76,11,14,0,69,0,21,21,0,75,17,21,1,29,16,21,0,57,21,0,76,3,3,25,21,0,1,21,1,26,16,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,0,3,21,1,32,21,0,5,21,0,4,3,2,17,22,0,7,22,0,8,22,0,9,4,3,11,14,21,0,6,0,39,21,1,28,7,16,0,21,21,0,2,17,0,29,21,1,23,0,16,21,0,8,17,0,2,21,0,2,0,13,16,0,1,21,0,5,17,0,0,21,1,23,17,17,0,1,21,0,8,17,17,22,0,10,11,14,21,0,7,21,0,10,21,0,9,3,3,25,21,0,1,0,26,16,0,30,16,0,14,0,57,17,25,21,0,1,0,29,0,47,21,0,2,0,27,21,0,1,17,8,0,49,0,39,0,56,7,8,16,21,1,10,21,0,2,0,37,0,29,7,16,17,25,21,0,2,0,2,16,22,0,3,11,14,21,0,1,21,0,3,0,42,0,10,7,16,0,51,0,27,0,47,21,0,3,8,0,46,21,1,3,0,48,0,3,8,0,5,9,0,48,21,0,0,8,8,0,21,0,7,0,0,21,0,3,0,48,0,2,8,19,0,47,21,1,3,8,19,8,0,56,0,1,21,0,2,17,17,25,21,0,1,0,24,0,56,17,0,37,0,21,7,0,57,17,0,0,21,0,2,17,0,44,0,6,7,16,0,6,21,0,1,17,25,0,32,0,14,0,18,0,45,0,13,8,19,0,37,0,27,7,0,19,19,0,0,21,0,2,19,0,37,0,29,7,21,2,4,19,0,21,0,88,19,0,21,21,0,1,19,0,21,0,96,19,25])
,[runtime[0],runtime[1],runtime[2],runtime[3],runtime[4],runtime[6],runtime[7],runtime[8],runtime[9],runtime[10],runtime[11],runtime[12],runtime[13],runtime[14],runtime[15],runtime[16],runtime[17],runtime[19],runtime[20],runtime[21],runtime[22],runtime[23],runtime[24],runtime[25],runtime[26],runtime[27],runtime[28],runtime[30],runtime[31],runtime[33],runtime[34],runtime[35],runtime[36],runtime[37],runtime[38],runtime[39],runtime[40],runtime[42],runtime[43],runtime[44],runtime[45],runtime[46],runtime[47],runtime[48],runtime[49],runtime[50],runtime[51],runtime[52],runtime[53],runtime[54],runtime[56],runtime[59],'
,[[0,1,0,34],[0,0,475,3],[1,1,541,4],[0,0,634,34],[0,0,1945,13],[0,0,2267,6],[0,0,2373,6],[0,0,2486,3],[0,0,2516,77],[0,0,5808,11],[0,0,5931,3],[0,0,5946,3],[0,0,5986,4],[0,0,6072,3],[2,1,6107,3]]
);
-runtime[40] = assertFn("Assertion failed");
+runtime[40] = assertFn("!");
runtime.map((r,i) => {
let prims = "+-×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍↑↓↕⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!˙˜˘¨⌜⁼´˝`∘○⊸⟜⌾⊘◶⎉⚇⍟";
r.glyph = prims.charAt(i); // Used to format
diff --git a/src/r.bqn b/src/r.bqn
index de6ea148..d523ec8c 100644
--- a/src/r.bqn
+++ b/src/r.bqn
@@ -24,7 +24,7 @@ Nat←IsArray◶⟨0⊸≤×⌊⊸=,0⟩
≠ ← (0<=)◶⟨1⋄0⊑≢⟩ # LIMITED to monadic case
_fold←{
- "Argument to fold must be a list" ! 1==𝕩
+ "´: 𝕩 must be a list" ! 1==𝕩
l←≠v←𝕩 ⋄ F←𝔽
r←𝕨 (0<l)◶{𝕩⋄Identity f}‿{l↩l-1⋄l⊑𝕩}⊘⊣ 𝕩
{r↩(𝕩⊑v)F r}⌜(l-1)⊸-⌜↕l
@@ -40,12 +40,12 @@ Cell←{(𝕨⊸+⊑𝕩˜)⌜↕(≠𝕩)-𝕨}⟜≢
_eachd←{
_d←{ # Equal ranks
p←≢𝕨
- "Equal-rank argument shapes don't agree" ! 1(⊑⟜p=⊑⟜(≢𝕩))⊸×´↕=𝕨
+ "Mapping: Equal-rank argument shapes don't agree" ! 1(⊑⟜p=⊑⟜(≢𝕩))⊸×´↕=𝕨
p⥊ (⊑⟜(⥊𝕨)𝔽⊑⟜(⥊𝕩))⌜↕1×´p
}
_e←{ # 𝕨 has smaller or equal rank
p←≢𝕨 ⋄ k←=𝕨 ⋄ q←≢𝕩
- "Argument shape prefixes don't agree" ! 1(⊑⟜p=⊑⟜q)⊸×´↕k
+ "Mapping: Argument shape prefixes don't agree" ! 1(⊑⟜p=⊑⟜q)⊸×´↕k
l←1(q⊑˜k⊸+)⊸×´↕(=𝕩)-k
a←⥊𝕨 ⋄ b←⥊𝕩
q⥊⥊(≠a) (⊑⟜a𝔽l⊸×⊸+⊑b˜)⌜○↕ l
@@ -70,7 +70,7 @@ Cmp ← +○IsArray◶⟨
}
_grade_←{
- "Grade argument must have rank at least 1" ! 1≤=𝕩
+ "⍋𝕩: 𝕩 must have rank at least 1" ! 1≤=𝕩
l←≠𝕩
m←1×´1 Cell 𝕩
d←⥊𝕩
@@ -92,10 +92,10 @@ _grade_←{
}
Indices←{
- "Replication argument in Indices or Replicate must have rank 1" ! 1==𝕩
+ "/: Replication argument must have rank 1" ! 1==𝕩
l←≠𝕩
{
- "Amounts to replicate must be natural numbers" ! 1×´Nat⌜𝕩
+ "/: Amounts to replicate must be natural numbers" ! 1×´Nat⌜𝕩
k←l-1
N ← ((⊢+-×0=𝕩⊑˜⊢)`k⊸-⌜↕l)⊑˜k-⊢ # Next nonzero
E ← ⊑⟜(+`𝕩)
@@ -114,10 +114,10 @@ TransposeInv←{
}⍟(0<=)
SelSub←{
- "Right argument to Select must be an array" ! IsArray 𝕨
- "Indices in Select must be integers" ! 1×´⥊Int⌜ 𝕨
+ "𝕨⊏𝕩: 𝕩 must be an array" ! IsArray 𝕨
+ "𝕨⊏𝕩: Indices in 𝕨 must be integers" ! 1×´⥊Int⌜ 𝕨
l←≠𝕩
- "Select indices out of range" ! 1×´⥊ ((-l)⊸≤×l⊸>)⌜ 𝕨
+ "𝕨⊏𝕩: Indices out of range" ! 1×´⥊ ((-l)⊸≤×l⊸>)⌜ 𝕨
((⊢+l×0>⊢)⌜𝕨)(1==𝕩)◶{
c←1×´s←1 Cell 𝕩
𝕨((⥊𝕩)⊑˜c⊸×⊸+)⌜s⥊↕c
@@ -127,12 +127,12 @@ SelSub←{
}
Reverse ← {
- "Reverse argument must have rank at least 1" ! 1≤=𝕩
+ "⌽𝕩: 𝕩 must have rank at least 1" ! 1≤=𝕩
l←≠𝕩
((l-1)⊸-⌜↕l) Select 𝕩
}
Rot ← {
- "Amount to rotate must be an integer" ! Int𝕨
+ "𝕨⌽𝕩: 𝕨 must consist of integers" ! Int𝕨
l←≠𝕩 ⋄ 𝕨-↩l×⌊𝕨÷l ⋄ ((𝕨+⊢-l×(l-𝕨)≤⊢)⌜↕l) Select 𝕩
}
@@ -164,11 +164,11 @@ Depth←IsArray◶0‿{1+0(⊣-≤×-)´Depth⌜⥊𝕩}
_onAxes_←{
F←𝔽
(𝔾<≡)∘⊣◶{ # One axis
- "First-axis function right argument must have rank at least 1" ! 1≤=𝕩
+ "First-axis primitive: 𝕩 must have rank at least 1" ! 1≤=𝕩
𝕨F𝕩
}‿{ # Multiple axes
- "Left argument must have rank at most 1" ! 1≥=𝕨
- "Left argument length must be at most right argument rank" ! 𝕨≤○≠≢𝕩
+ "Multi-axis primitive: 𝕨 must have rank at most 1" ! 1≥=𝕨
+ "Multi-axis primitive: length of 𝕨 must be at most rank of 𝕩" ! 𝕨≤○≠≢𝕩
l←≠𝕨 ⋄ W←⊑⟜(⥊𝕨)
0{(W𝕨)F(1+𝕨)⊸𝕊˘⍟(𝕨<l-1)𝕩}⍟(0<l)𝕩
}
@@ -179,7 +179,7 @@ Select←ToArray⊸(SelSub _onAxes_ 1)
Merge←{
c←≢0⊑⥊𝕩
- "Elements in Merge argument must have matching shapes" ! 1×´(c≡≢)⌜⥊𝕩
+ ">𝕩: Elements of 𝕩 must have matching shapes" ! 1×´(c≡≢)⌜⥊𝕩
𝕩⊑⟜Deshape˜⌜c⥊↕1×´c
}⍟(0<≠∘⥊)⍟IsArray
@@ -198,27 +198,27 @@ _sort ← {(𝕗⊑⟨Cmp,Cmp˜⟩)_grade_𝕗 ⊸ Select}
> ↩ Merge ⊘ ((1-≤) _perv)
≠ ↩ ≠ ⊘ ((1-=) _perv)
= ↩ = ⊘ (= _perv)
-≥ ← ("No monadic form: ≥"!0˜) ⊘ (≥ _perv)
-≤ ↩ ("No monadic form: ≤"!0˜) ⊘ (≤ _perv)
+≥ ← ("≥: No monadic form"!0˜) ⊘ (≥ _perv)
+≤ ↩ ("≤: No monadic form"!0˜) ⊘ (≤ _perv)
+ ↩ + _perv
- ↩ - _perv
¬ ← 1+-
-identity ← (0⊑⟨"Identity not found"!0˜⟩) {(0⊑𝕨){𝕗=𝕩}◶𝕩‿(1⊑𝕨)}´ ⟨+‿0,-‿0,×‿1,÷‿1,⋆‿1,√‿1,∧‿1,∨‿0,¬‿1,|‿0,⌊‿∞,⌈‿¯∞,<‿0,≤‿1,=‿1,≥‿1,>‿0,≠‿0⟩
+identity ← (0⊑⟨"´: Identity not found"!0˜⟩) {(0⊑𝕨){𝕗=𝕩}◶𝕩‿(1⊑𝕨)}´ ⟨+‿0,-‿0,×‿1,÷‿1,⋆‿1,√‿1,∧‿1,∨‿0,¬‿1,|‿0,⌊‿∞,⌈‿¯∞,<‿0,≤‿1,=‿1,≥‿1,>‿0,≠‿0⟩
Deshape←IsArray◶{⟨𝕩⟩}‿⥊
Reshape←{
- "Shape argument to Reshape must have rank at most 1" ! 1≥=𝕨
+ "𝕨⥊𝕩: 𝕨 must have rank at most 1" ! 1≥=𝕨
s←Deshape 𝕨
sp←+´p←¬Nat⌜s
- "Shape in Reshape must consist of natural numbers" ! 1≥sp
+ "𝕨⥊𝕩: 𝕨 must consist of natural numbers" ! 1≥sp
n←≠d←Deshape 𝕩
l←sp◶(×´)‿{
lp←×´p⊣◶⊢‿1¨𝕩
- "Can't compute axis length in Reshape when rest of shape is empty" ! 0<lp
+ "𝕨⥊𝕩: Can't compute axis length when rest of shape is empty" ! 0<lp
i←+´p×↕≠p
t←ReshapeT i⊑s
- "Shape in Reshape must be a natural number or ∘ ⌊ ⌽ ↑" ! t<4
- Chk ← ⊢ ⊣ "Shape must be exact when reshaping with ∘" ! ⌊⊸=
+ "𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑" ! t<4
+ Chk ← ⊢ ⊣ "𝕨⥊𝕩: Shape must be exact when reshaping with ∘" ! ⌊⊸=
a←(2⌊t)◶⟨Chk,⌊,⌈⟩n÷lp
s↩p⊣◶⊢‿a¨s
{d∾↩(Type d)⌜↕𝕩-n⋄n}⍟(n⊸<)⍟(3=t)lp×a
@@ -230,8 +230,8 @@ Reshape←{
⥊ ↩ Deshape ⊘ ⥊
Range←{
- I←{"Range argument must consist of natural numbers"!Nat𝕩⋄↕𝕩}
- M←{"Range argument must be a number or list"!1==𝕩⋄(<⟨⟩)⥊⊸∾⌜´I⌜𝕩}
+ I←{"↕𝕩: 𝕩 must consist of natural numbers"!Nat𝕩⋄↕𝕩}
+ M←{"↕𝕩: 𝕩 must be a number or list"!1==𝕩⋄(<⟨⟩)⥊⊸∾⌜´I⌜𝕩}
IsArray◶I‿M 𝕩
}
@@ -261,7 +261,7 @@ _rankOp_←{
}
⎉ ← _rankOp_
_insert←{
- "Insert argument must have rank at least 1" ! 1≤=𝕩
+ "˝: 𝕩 must have rank at least 1" ! 1≤=𝕩
𝕨 𝔽´ <˘𝕩
}
˝ ← _insert
@@ -270,43 +270,43 @@ _insert←{
JoinTo←∨○(1<=)◶(∾○⥊)‿{
s←𝕨Pair○≢𝕩
a←1⌈´k←≠⌜s
- "Rank of joined arguments must differ by at most 1" ! ∧´1≥a-k
+ "𝕨∾𝕩: Rank of 𝕨 and 𝕩 must differ by at most 1" ! ∧´1≥a-k
c←(k¬a)+⟜(↕a-1)⊸⊏¨s
- "Cell shapes of joined arguments must match" ! ≡´c
+ "𝕨∾𝕩: Cell shapes of 𝕨 and 𝕩 must match" ! ≡´c
l←+´(a=k)⊣◶1‿(0⊑⊢)¨s
(⟨l⟩∾0⊑c)⥊𝕨∾○⥊𝕩
}
Take←{
T←{
- "Left argument to Take or Drop must be an integer" ! Int 𝕨
+ "↑ or ↓: 𝕨 must be an integer" ! Int 𝕨
l←≠𝕩 ⋄ n←𝕨<0 ⋄ e←l⌊r←|𝕨 ⋄ s←⟨r⟩ ⋄ m←1
i ← 𝕩{s∾↩c←1 Cell 𝕨⋄𝕩(×+⌜↕∘⊢)m↩×´c}⍟(1≠=𝕩) (l-e)+⍟n ↕e
s⥊𝕩{(⥊𝕩)n◶⟨∾,∾˜⟩(0⊑⥊Type𝕗)⌜↕m×r-e}⍟(l<r) ⊑⟜(⥊𝕩)⌜i
}
𝕨 T _onAxes_ 0 ((1⌜∘↕0⌈𝕨-○≠⊢)⊸∾∘≢⥊⥊) 𝕩
}
-Prefixes ← {"Prefixes argument must have rank at least 1"!1≤=𝕩 ⋄ Take⟜𝕩⌜↕1+≠𝕩}
+Prefixes ← {"↑𝕩: 𝕩 must have rank at least 1"!1≤=𝕩 ⋄ Take⟜𝕩⌜↕1+≠𝕩}
↑ ← Prefixes ⊘ Take
Drop←{
s←(≠𝕨)(⊣↑⊢∾˜·1⌜∘↕0⌈-⟜≠)≢𝕩
((sׯ1⋆𝕨>0)+(-s)⌈s⌊𝕨)↑𝕩
}
-Suffixes ← {"Suffixes argument must have rank at least 1"!1≤=𝕩 ⋄ Drop⟜𝕩⌜↕1+≠𝕩}
+Suffixes ← {"↓𝕩: 𝕩 must have rank at least 1"!1≤=𝕩 ⋄ Drop⟜𝕩⌜↕1+≠𝕩}
↓ ← Suffixes ⊘ Drop
Windows←{
- "Windows right argument must be an array" ! IsArray 𝕩
- "Windows left argument must have rank at most 1" ! 1≥=𝕨
- "Windows left argument length must be at most right argument rank" ! 𝕨≤○≠≢𝕩
- "Windows left argument must consist of natural numbers" ! ∧´Nat⌜⥊𝕨
+ "𝕨↕𝕩: 𝕩 must be an array" ! IsArray 𝕩
+ "𝕨↕𝕩: 𝕨 must have rank at most 1" ! 1≥=𝕨
+ "𝕨↕𝕩: length of 𝕨 must be at most rank of 𝕩" ! 𝕨≤○≠≢𝕩
+ "𝕨↕𝕩: 𝕨 must consist of natural numbers" ! ∧´Nat⌜⥊𝕨
s←(≠𝕨)↑≢𝕩
- "Window length must be at most axis length plus one" ! ∧´𝕨≤1+s
+ "𝕨↕𝕩: Window length 𝕨 must be at most axis length plus one" ! ∧´𝕨≤1+s
𝕨{(∾⟜(𝕨≠⊸↓≢𝕩)∘≢⥊>)<⌜⊸⊏⟜𝕩¨s(¬+⌜○Range⊢)⥊𝕨}⍟(0<≠𝕨)𝕩
}
Rep ← Indices⊸⊏
-Replicate ← {0<=𝕨}◶{𝕨˘⊸Rep𝕩}‿{"Replicate argument lengths must match"!𝕨=○≠𝕩⋄𝕨Rep𝕩} _onAxes_ (1-0=≠)
+Replicate ← {0<=𝕨}◶{𝕨˘⊸Rep𝕩}‿{"𝕨/𝕩: lengths of components of 𝕨 must match 𝕩"!𝕨=○≠𝕩⋄𝕨Rep𝕩} _onAxes_ (1-0=≠)
↕ ↩ Range ⊘ Windows
⌽ ← Reverse ⊘ (Rot _onAxes_ 0)
@@ -319,35 +319,35 @@ Join←(1≠=)◶⟨∨´1≠=⌜,1⟩◶{
}‿{
# Multidimensional
C←(<⟨⟩)⥊⊸∾⌜´⊢ # Cartesian array product
- "Join argument must be an array" ! IsArray 𝕩
+ "∾𝕩: 𝕩 must be an array" ! IsArray 𝕩
s←≢⌜𝕩
d←≠0⊑⥊s
- "Join argument elements must all have the same rank" ! ∧´⥊d=≠⌜s
- "Join argument element rank must be at least argument rank" ! d≥=𝕩
+ "∾𝕩: elements of 𝕩 must all have the same rank" ! ∧´⥊d=≠⌜s
+ "∾𝕩: 𝕩 element rank must be at least argument rank" ! d≥=𝕩
l←(≢𝕩){(𝕩⊑⟜≢a Pick1˜(j=𝕩)⊸×)⌜↕𝕨}¨j←↕r←=a←𝕩
- "Join argument element shapes must be compatible" ! (r⊸↑⌜s)≡C l
+ "∾𝕩: 𝕩 element shapes must be compatible" ! (r⊸↑⌜s)≡C l
i←C{p←+´⌜↑𝕩⋄(↕0⊑⌽p)-𝕩/¯1↓p}⌜l
>i<⌜⊸⊏¨l/𝕩
}⍟(0<≠∘⥊)
_group←{
- "Grouping argument must consist of integers" ! ∧´Int⌜𝕩
- "Grouping argument values cannot be less than ¯1" ! ∧´¯1≤𝕩
+ "⊔: Grouping argument must consist of integers" ! ∧´Int⌜𝕩
+ "⊔: Grouping argument values cannot be less than ¯1" ! ∧´¯1≤𝕩
d←(l←GroupLen𝕩)GroupOrd𝕩
i←0⋄(𝔽{𝕩⋄(i↩i+1)⊢i⊑d}⌜∘↕)⌜l
}
GroupInds←{
- "Group Indices argument must be a list" ! 1==𝕩
+ "⊔𝕩: 𝕩 must be a list" ! 1==𝕩
G←⊢_group
(1<≡)◶⟨G , (<<⟨⟩) ∾⌜⌜´ {⊏⟜(⥊↕≢𝕩)⌜ G⥊𝕩}⌜⟩ 𝕩
}
GroupGen←{
- "Group right argument must be an array" ! IsArray 𝕩
+ "𝕨⊔𝕩: 𝕩 must be an array" ! IsArray 𝕩
𝕨↩Pair∘ToArray⍟(2>≡)𝕨
- "Compound group left argument must be a list" ! 1==𝕨
+ "𝕨⊔𝕩: Compound 𝕨 must be a list" ! 1==𝕨
n←+´=⌜𝕨
- "Group left argument total rank must be at most right argument rank" ! n≤=𝕩
- "Group argument lengths must be compatible" ! ∧´(Join≢⌜𝕨)=n↑≢𝕩
+ "𝕨⊔𝕩: Total rank of 𝕨 must be at most rank of 𝕩" ! n≤=𝕩
+ "𝕨⊔𝕩: Lengths of components of 𝕨 must be compatible with 𝕩" ! ∧´(Join≢⌜𝕨)=n↑≢𝕩
l←≠⌜𝕨↩⥊⌜𝕨
S←⊏⟜(𝕩⥊˜⟨×´l⟩∾n Cell 𝕩)
(1≠≠)◶(S _group 0⊸⊑)‿(S⌜ ·+⌜⌜´ (⌽×`⟨1⟩∾⌽1↓l) × ⊢_group⌜) 𝕨
@@ -357,10 +357,10 @@ GroupGen←{
⊔ ← GroupInds ⊘ GroupGen
Pick1←{
- "Indices in compound Pick must be lists" ! 1==𝕨
- "Pick index length must match right argument rank" ! 𝕨=○≠s←≢𝕩
- "Pick indices must consist of integers" ! ∧´Int⌜𝕨
- "Pick index out of range" ! ∧´𝕨(≥⟜-∧<)s
+ "𝕨⊑𝕩: Indices in compound 𝕨 must be lists" ! 1==𝕨
+ "𝕨⊑𝕩: Index length in 𝕨 must match rank of 𝕩" ! 𝕨=○≠s←≢𝕩
+ "𝕨⊑𝕩: Indices in 𝕨 must consist of integers" ! ∧´Int⌜𝕨
+ "𝕨⊑𝕩: Index out of range" ! ∧´𝕨(≥⟜-∧<)s
𝕨↩𝕨+s×𝕨<0
(⥊𝕩)⊑˜0(⊑⟜𝕨+⊑⟜s×⊢)´-↕⊸¬≠𝕨
}
@@ -401,11 +401,11 @@ _binSearch ← {
}
_bins←{
c←1-˜=𝕨
- "Bins argument must have rank at least 1" ! 0≤c
- "Bins right argument rank is too small" ! c≤=𝕩
+ "⍋ or ⍒: Rank of 𝕨 must be at least 1" ! 0≤c
+ "⍋ or ⍒: Rank of 𝕩 must be at least cell rank of 𝕨" ! c≤=𝕩
lw←×´sw←1 Cell 𝕨
cw←lw 𝔽○(⊑⟜(⥊𝕨)) _getCellCmp 0
- "Bins left argument must be sorted" ! 0⊸<◶⟨1,∧´0≤˜·cw⟜(lw⊸+)⌜lw×↕∘-⟜1⟩≠𝕨
+ "⍋ or ⍒: 𝕨 must be sorted" ! 0⊸<◶⟨1,∧´0≤˜·cw⟜(lw⊸+)⌜lw×↕∘-⟜1⟩≠𝕨
cx←c-˜=𝕩
sx←cx Cell 𝕩 ⋄ lc←sw CmpLen sx
cc ← (⊑⟜(⥊𝕨))⊸𝔽⟜(⊑⟜(⥊𝕩)) _getCellCmp´ lc
@@ -422,7 +422,7 @@ _search←{ # 0 for ∊˜, 1 for ⊐
red ← 𝕗⊑⟨¬∧˝,+˝∧`⟩
{
c←1-˜=𝕨
- "Search principal argument must have rank at least 1" ! 0≤c
+ "p⊐𝕩 or 𝕨∊p: p must have rank at least 1" ! 0≤c
𝕨 ∧○(8<≠∘⥊)◶⟨
(0<≠𝕨)◶⟨0⎉c∘⊢, Red≢⌜○((0<c)◶⟨⊢,<⎉c⟩)⟩
{ g←⌽⍒𝕨 ⋄ i←g⊏˜0⌈1-˜(g⊏𝕨)⍋𝕩 ⋄ (≠𝕨)(⊣+i⊸-⊸×)⍟ind(i⊏𝕨)≡⎉c𝕩 }
@@ -431,14 +431,14 @@ _search←{ # 0 for ∊˜, 1 for ⊐
}
PermInv ← 1¨⊸GroupOrd
_self←{
- "Unique mask argument must have rank at least 1" ! 1≤=𝕩
+ "∊𝕩 or ⊐𝕩: 𝕩 must have rank at least 1" ! 1≤=𝕩
g←⍋𝕩
(PermInv g) ⊏ g 𝔽 0⊸<◶⟨1,-⟜1≢○(⊑⟜(g⊏<˘⍟(1<=)𝕩))⊢⟩⌜↕≠𝕩
}
SelfClas ← (PermInv∘⍋∘/˜⊏˜1-˜+`∘⊢) _self
Find←{
r←=𝕨
- "Find left argument rank cannot exceed right argument rank" ! r≤=𝕩
+ "⍷𝕩: Rank of 𝕨 cannot exceed rank of 𝕩" ! r≤=𝕩
𝕨 ≡⎉r (≢𝕨) ↕⎉r 𝕩
}
@@ -447,9 +447,9 @@ Find←{
⍷ ← ∊⊸/ ⊘ Find
ReorderChk←{
- "Left argument to Reorder Axes must have rank at most 1" ! 1≥=𝕨
- "Reorder Axes left argument length must not exceed right argument rank" ! 𝕨≤○≠≢𝕩
- "Reorder Axes left argument must consist of natural numbers" ! ∧´Nat⌜⥊𝕨
+ "𝕨⍉𝕩: 𝕨 must have rank at most 1" ! 1≥=𝕨
+ "𝕨⍉𝕩: Length of 𝕨 must not exceed rank of 𝕩" ! 𝕨≤○≠≢𝕩
+ "𝕨⍉𝕩: 𝕨 must consist of natural numbers" ! ∧´Nat⌜⥊𝕨
}
ReorderAxesSub←{
(𝕨⊸⊏Pick𝕩˜)⌜↕⌊´⌜𝕨⊔≢𝕩
@@ -458,7 +458,7 @@ ReorderAxes←{
𝕨 ReorderChk 𝕩
𝕨↩⥊𝕨
r←(=𝕩)-+´¬∊𝕨
- "No such axis in Reorder Axes" ! ∧´𝕨<r
+ "𝕨⍉𝕩: Skipped result axis" ! ∧´𝕨<r
(𝕨∾𝕨(¬∘∊˜/⊢)↕r) ReorderAxesSub 𝕩
}
ReorderAxesInv←{
@@ -477,8 +477,8 @@ ProgressiveIndexOf ← {𝕨⊐○(≍˘⟜OccurrenceCount𝕨⊸⊐)𝕩}
⊑ ↩ (0⊑⥊) ⊘ Pick
◶ ↩ {𝕨((𝕨𝔽𝕩)⊑𝕘){𝔽}𝕩} # Same definition, new Pick
-IA ← "Inverse failed"⊸!
-IX ← "Inverse does not exist"⊸!
+IA ← "⁼: Inverse failed"⊸!
+IX ← "⁼: Inverse does not exist"⊸!
_invChk_ ← {i←𝕨𝔽𝕩⋄IX 𝕩≡𝕨𝔾i⋄i}
GroupIndsInv ← {
IA 1==𝕩
@@ -494,7 +494,7 @@ GroupInv ← {
IA ∧´Nat⌜𝕨
(⊔𝕨) ⍋⊸⊏○∾ 𝕩
}
-inverse ← {(⊑(0⊏𝕩)⊐<) ⊑ ((1⊏𝕩)∾⟨"Inverse not found"!0˜⟩)˜} ⍉ (2∾˜2÷˜≠)⊸⥊ ⟨
+inverse ← {(⊑(0⊏𝕩)⊐<) ⊑ ((1⊏𝕩)∾⟨"⁼: Inverse not found"!0˜⟩)˜} ⍉ (2∾˜2÷˜≠)⊸⥊ ⟨
+, +⊘(-˜)
-, -
×, ⊢⊘(÷˜)
@@ -522,7 +522,7 @@ inverse ← {(⊑(0⊏𝕩)⊐<) ⊑ ((1⊏𝕩)∾⟨"Inverse not found"!0˜⟩
_repeat_←{
n←𝕨𝔾𝕩
l←u←0
- {"Repetition numbers must be integers"!Int𝕩⋄l↩l⌊𝕩⋄u↩u⌈𝕩}⚇0 n
+ {"⍟: Repetition numbers in 𝕨 must be integers"!Int𝕩⋄l↩l⌊𝕩⋄u↩u⌈𝕩}⚇0 n
a←𝕩⋄_p←{𝔽∘⊣`⟨a⟩∾↕0+𝕩}
pos←(𝕨𝔽 ⊢)_p u
neg←(𝕨𝔽⁼⊢)_p-l