aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-14 12:10:47 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-14 13:53:18 -0400
commit1c23dbb833410b2638fdb3b2b0fef083b87ab670 (patch)
tree6d08ed6aac4c89f2c5f2307715f405a028f70559
parentfbed5613ace02a2edc54ffc3dfea614526871ffc (diff)
Add error messages to the runtime
-rw-r--r--docs/bqn.js9
-rwxr-xr-xsrc/pr.bqn2
-rw-r--r--src/r.bqn136
3 files changed, 79 insertions, 68 deletions
diff --git a/docs/bqn.js b/docs/bqn.js
index 1f4eeddc..ae884646 100644
--- a/docs/bqn.js
+++ b/docs/bqn.js
@@ -80,6 +80,7 @@ let run = (B,O,S) => { // Bytecode, Objects, Sections/blocks
let arr = (r,sh) => {r.sh=sh;return r;}
let list = l => arr(l,[l.length]);
let str = s => list(Array.from(s));
+let unstr = a => has(a)?a.join(""):a;
let m1 = m => {m.m1=1;return m;}
let m2 = m => {m.m2=1;return m;}
let lesseq = (x,w) => {
@@ -119,7 +120,7 @@ let provide = [
,(x,w) => has(w)?Math.log(x)/Math.log(w):Math.log(x) // Log
,group_len // GroupLen
,group_ord // GroupOrd
- ,(x,w) => assert(x===1) // !
+ ,(x,w) => { if (x!==1) throw Error(unstr(w)); } // !
,(x,w) => has(w)?w+x:x // +
,(x,w) => (has(w)?w:0)-x // -
,(x,w) => w*x // ×
@@ -138,9 +139,9 @@ 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,0,12,21,0,6,0,11,8,0,21,3,2,21,0,0,0,0,8,22,0,9,11,14,0,12,21,0,6,0,11,8,0,8,0,13,21,0,6,0,21,8,19,0,21,3,2,21,0,0,0,0,8,22,0,10,11,14,21,0,3,0,13,7,0,7,0,22,19,0,20,15,11,8,22,0,11,11,14,0,13,0,7,0,22,19,22,0,12,11,14,15,12,0,16,21,0,12,19,0,20,0,11,8,22,0,13,11,14,15,13,0,16,21,0,11,19,0,20,0,7,21,0,4,21,0,13,21,0,4,0,7,8,8,8,22,0,14,11,14,0,22,0,14,0,16,0,21,19,3,2,21,0,0,0,12,21,0,11,0,21,19,8,22,0,15,11,14,15,14,22,0,16,11,14,21,0,16,22,0,17,11,14,0,0,0,7,0,22,19,21,0,8,21,0,11,8,22,0,18,11,14,0,14,21,0,7,15,15,8,22,0,19,11,14,15,16,22,0,20,11,14,15,17,22,0,21,11,14,15,18,22,0,22,11,14,0,13,0,7,21,0,3,0,13,7,19,22,0,23,11,14,0,22,0,15,0,16,0,21,19,21,0,7,0,13,0,8,0,23,19,0,7,0,22,19,15,19,3,2,21,0,0,21,0,1,21,0,4,0,0,8,8,8,3,2,21,0,0,21,0,1,21,0,4,0,14,8,21,0,17,0,8,7,0,22,19,21,0,11,0,21,19,8,22,0,24,11,14,21,0,23,21,0,24,21,0,3,21,0,24,7,0,7,9,3,2,21,0,0,21,0,2,21,0,4,0,0,8,8,15,20,3,3,21,0,0,0,0,21,0,5,0,6,8,8,22,0,25,11,14,15,21,22,0,26,11,14,15,22,22,0,27,11,14,0,12,21,0,11,0,21,19,21,0,8,15,23,8,22,0,28,11,14,15,24,22,0,29,11,14,15,25,22,0,30,11,14,15,26,22,0,31,11,14,15,27,22,0,32,11,14,15,28,22,0,33,11,14,0,0,21,0,5,0,12,8,0,21,3,2,21,0,1,21,0,4,0,0,8,0,12,3,2,0,12,21,0,5,0,12,8,0,21,3,2,0,14,21,0,5,21,0,33,0,12,7,8,21,0,17,0,8,7,0,22,19,0,21,3,2,15,29,3,5,21,0,17,15,30,7,16,22,0,34,11,14,0,21,15,31,3,2,21,0,0,0,0,8,22,0,35,11,14,21,0,34,0,20,21,0,35,8,22,0,36,11,14,21,0,34,0,7,0,22,19,0,20,3,0,0,14,3,2,21,0,0,0,0,8,8,22,0,37,11,14,0,0,21,0,8,0,15,21,0,4,21,0,15,8,21,0,11,0,21,19,21,0,8,15,32,8,8,22,0,38,11,14,21,0,22,0,9,7,22,0,39,11,14,21,0,22,0,10,7,22,0,40,11,14,21,0,3,21,0,39,21,0,7,21,0,40,8,7,0,20,0,23,21,0,39,16,21,0,7,21,0,40,8,8,22,0,41,11,14,21,0,22,15,33,0,20,0,7,21,0,1,3,2,21,0,0,0,13,21,0,6,0,21,8,8,8,7,22,0,42,11,14,21,0,22,15,34,0,20,21,0,13,8,7,22,0,43,11,14,21,0,22,15,35,0,20,0,7,21,0,4,21,0,43,21,0,4,0,7,8,8,8,7,22,0,44,11,14,21,0,22,0,8,7,22,0,45,11,14,21,0,22,0,8,0,7,0,6,19,7,22,0,46,11,14,21,0,22,0,8,0,20,21,0,12,0,7,21,0,11,19,21,0,6,0,21,8,8,7,22,0,47,11,14,21,0,22,21,0,3,0,13,7,0,7,0,22,19,7,0,20,15,36,8,22,0,48,11,14,21,0,22,0,13,0,7,0,22,19,7,0,20,21,0,38,8,22,0,49,11,14,21,0,22,0,12,0,7,0,22,19,7,0,20,21,0,15,8,22,0,50,11,14,21,0,22,0,12,7,0,20,0,12,8,22,0,51,11,14,21,0,22,21,0,3,0,13,7,7,0,20,0,21,21,0,4,0,5,8,8,22,0,52,11,14,21,0,22,0,13,7,0,20,0,21,21,0,4,0,5,8,8,22,0,53,11,14,21,0,22,0,6,7,22,0,54,11,14,21,0,22,0,7,7,22,0,55,11,14,21,0,55,21,0,54,0,22,19,22,0,56,11,14,21,0,54,0,21,3,2,21,0,55,0,21,3,2,21,0,47,0,22,3,2,21,0,39,0,22,3,2,21,0,40,0,22,3,2,21,0,41,0,22,3,2,21,0,45,0,22,3,2,21,0,46,0,21,3,2,21,0,42,0,21,3,2,21,0,43,0,27,3,2,21,0,44,0,28,3,2,21,0,48,0,21,3,2,21,0,53,0,22,3,2,21,0,51,0,22,3,2,21,0,52,0,22,3,2,21,0,49,0,21,3,2,21,0,50,0,21,3,2,3,17,21,0,17,15,37,7,0,21,21,0,4,0,5,8,3,1,0,16,0,21,17,17,22,0,57,11,14,15,38,0,15,3,2,21,0,0,0,0,8,22,0,58,11,14,21,0,18,21,0,7,15,39,8,22,0,59,11,14,0,15,0,20,21,0,58,8,22,0,60,11,14,15,40,22,0,61,11,14,15,41,0,20,15,42,8,22,0,62,11,14,21,0,62,21,0,4,21,0,49,8,22,0,63,11,14,15,43,22,0,64,11,14,15,44,22,0,65,11,14,21,0,65,22,0,66,11,14,15,45,22,0,67,11,14,21,0,67,22,0,68,11,14,15,46,22,0,69,11,14,15,47,22,0,70,11,14,21,0,70,22,0,71,11,14,15,48,22,0,72,11,14,0,22,21,0,72,21,0,29,8,21,0,6,21,0,18,8,22,0,73,11,14,21,0,73,0,20,21,0,73,21,0,6,0,21,8,8,22,0,74,11,14,21,0,60,21,0,5,21,0,20,8,15,49,3,2,21,0,0,21,0,51,21,0,48,0,22,19,21,0,5,21,0,46,8,8,22,0,75,11,14,15,50,22,0,76,11,14,15,51,22,0,77,11,14,21,0,76,0,20,21,0,77,8,22,0,78,11,14,15,52,22,0,79,11,14,15,53,22,0,80,11,14,21,0,79,0,20,21,0,80,8,22,0,81,11,14,15,54,22,0,82,11,14,21,0,74,21,0,6,21,0,27,8,22,0,83,11,14,21,0,50,21,0,51,0,21,19,21,0,55,0,22,19,21,0,72,15,55,15,56,3,2,21,0,0,15,57,8,8,22,0,84,11,14,21,0,82,0,20,21,0,61,8,22,0,85,11,14,0,21,21,0,72,21,0,31,8,0,20,21,0,30,8,22,0,86,11,14,21,0,84,0,20,21,0,27,8,22,0,87,11,14,21,0,60,21,0,4,21,0,50,8,21,0,48,0,21,19,21,0,8,15,58,15,59,3,2,21,0,0,0,18,21,0,51,7,21,0,50,0,22,19,21,0,17,21,0,46,7,9,0,22,3,2,21,0,0,21,0,51,21,0,50,0,22,19,8,8,8,22,0,88,11,14,15,60,22,0,89,11,14,15,61,22,0,90,11,14,15,62,22,0,91,11,14,21,0,75,0,20,21,0,88,8,22,0,92,11,14,21,0,91,0,20,21,0,90,8,22,0,93,11,14,15,63,22,0,94,11,14,21,0,94,15,64,3,2,21,0,0,21,0,2,21,0,4,21,0,60,21,0,4,0,18,0,0,7,8,8,21,0,17,21,0,46,7,9,8,22,0,95,11,14,21,0,95,21,0,6,21,0,60,21,0,1,3,2,21,0,0,0,0,8,8,22,0,96,11,14,15,65,22,0,97,11,14,15,66,22,0,98,11,14,15,67,22,0,99,11,14,15,68,22,0,100,11,14,21,0,100,21,0,25,7,0,20,0,21,21,0,26,21,0,25,8,8,22,0,101,11,14,21,0,100,21,0,3,21,0,25,7,7,0,20,0,22,21,0,26,21,0,3,21,0,25,7,8,8,22,0,102,11,14,15,69,22,0,103,11,14,15,70,22,0,104,11,14,15,71,22,0,105,11,14,21,0,103,0,22,7,0,20,0,21,21,0,4,0,5,8,8,22,0,106,11,14,21,0,3,21,0,103,0,21,7,7,0,20,21,0,104,8,22,0,107,11,14,21,0,105,0,20,21,0,87,21,0,6,21,0,107,8,8,22,0,108,11,14,15,72,22,0,109,11,14,21,0,109,0,20,21,0,28,8,22,0,110,11,14,21,0,101,21,0,4,21,0,101,8,21,0,74,21,0,55,21,0,1,19,21,0,3,21,0,106,7,19,22,0,111,11,14,15,73,22,0,112,11,14,21,0,112,0,20,21,0,111,8,22,0,113,11,14,21,0,96,0,20,21,0,60,0,16,0,21,19,8,22,0,114,11,14,15,74,22,0,115,11,14,21,0,54,21,0,3,21,0,55,7,0,20,21,0,54,8,21,0,55,21,0,55,21,0,47,21,0,3,21,0,39,7,0,20,21,0,1,8,21,0,39,21,0,39,21,0,40,21,0,22,0,2,7,21,0,41,21,0,3,21,0,40,7,0,20,0,23,21,0,7,21,0,40,8,8,21,0,45,21,0,3,21,0,39,7,0,20,21,0,1,8,21,0,46,21,0,1,21,0,55,0,22,19,21,0,39,21,0,3,21,0,55,7,19,0,20,21,0,1,8,21,0,48,0,21,21,0,4,0,5,8,0,20,15,75,8,21,0,87,0,21,21,0,4,0,5,8,0,20,15,76,8,3,20,21,0,60,21,0,6,21,0,50,21,0,3,21,0,39,7,0,23,19,21,0,3,21,0,92,7,0,23,19,8,16,21,0,110,16,15,77,16,22,0,116,11,14,15,78,22,0,117,11,14,15,79,22,0,118,11,14,21,0,118,22,0,119,11,14,21,0,59,0,20,21,0,58,8,22,0,120,11,14,15,80,22,0,121,11,14,21,0,45,0,20,21,0,74,21,0,6,21,0,101,8,8,22,0,122,11,14,21,0,46,0,20,21,0,74,21,0,6,21,0,102,8,8,22,0,123,11,14,21,0,32,22,0,124,11,14,21,0,54,21,0,55,21,0,47,21,0,39,21,0,40,21,0,41,21,0,43,21,0,44,21,0,42,21,0,56,21,0,122,21,0,123,21,0,48,21,0,49,21,0,50,21,0,51,21,0,53,21,0,52,21,0,36,21,0,37,21,0,2,21,0,1,21,0,120,21,0,92,21,0,63,21,0,78,21,0,81,21,0,85,21,0,86,21,0,110,21,0,87,21,0,101,21,0,102,21,0,74,21,0,114,21,0,106,21,0,113,21,0,107,21,0,108,21,0,93,0,5,21,0,3,21,0,69,21,0,33,21,0,121,21,0,117,21,0,17,21,0,71,0,19,21,0,4,21,0,5,21,0,6,21,0,7,21,0,124,0,20,21,0,115,21,0,68,21,0,66,21,0,119,3,59,25,21,0,1,15,81,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,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,82,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,16,14,21,0,1,22,0,5,11,21,1,15,16,22,0,6,11,14,21,0,4,22,0,7,11,14,21,0,1,21,1,2,0,20,15,83,15,84,3,2,21,1,0,21,0,6,21,1,11,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,6,0,22,0,7,21,0,6,17,8,7,16,0,18,15,85,7,16,14,21,0,8,25,21,0,2,0,7,21,0,1,21,1,15,16,17,0,17,16,0,18,21,1,3,21,0,1,7,0,16,0,6,21,1,6,21,0,2,8,19,7,16,25,21,0,2,21,1,15,16,22,0,3,11,14,21,0,1,21,1,15,16,0,6,21,0,3,17,0,17,16,0,18,21,0,2,21,1,7,0,16,8,21,1,3,21,0,1,7,0,16,21,0,3,21,1,7,0,7,8,19,3,2,21,1,0,0,13,21,1,6,21,0,3,8,8,7,16,25,15,86,22,0,2,11,14,15,87,22,0,3,11,14,21,0,3,21,0,1,7,21,1,3,21,0,3,21,1,3,21,0,1,7,7,7,3,2,21,1,0,0,12,21,1,5,21,1,12,8,8,21,0,2,21,0,1,7,3,2,21,1,0,0,12,21,1,5,0,12,8,8,25,15,88,21,0,1,7,22,0,2,11,14,21,0,1,15,89,15,90,3,2,21,1,0,0,0,21,1,5,21,1,12,8,8,0,20,0,18,21,0,2,7,8,21,1,21,21,0,2,7,3,3,21,1,0,0,0,21,1,5,0,6,8,8,25,21,0,1,21,1,24,21,0,2,17,25,21,0,1,0,14,21,1,5,21,1,97,8,21,0,2,17,22,0,3,11,14,21,0,3,21,1,17,21,1,98,21,0,1,0,15,16,21,1,7,0,16,8,21,1,7,21,1,25,21,1,6,21,0,2,0,15,16,21,1,7,0,16,8,8,8,7,7,16,22,0,4,11,14,0,21,21,1,3,21,0,4,7,16,25,21,0,1,0,12,16,0,13,0,22,17,0,5,16,14,21,0,1,21,1,15,16,22,0,6,11,14,21,0,1,21,1,19,0,22,17,21,1,17,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,9,7,21,1,17,0,8,7,0,22,19,3,2,21,1,0,21,0,6,21,1,11,0,24,17,0,8,0,22,0,12,21,0,7,17,17,8,16,21,1,1,21,1,8,21,0,1,21,1,7,15,91,8,8,16,0,7,0,22,17,22,0,11,11,14,21,0,1,0,18,21,0,10,21,1,7,0,7,8,0,7,21,1,6,21,0,9,8,3,2,0,16,21,0,5,17,7,0,4,21,1,6,0,3,8,9,15,92,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,16,14,21,0,1,21,1,15,16,22,0,3,11,14,21,0,1,21,0,3,21,1,11,0,21,17,21,1,8,15,93,8,16,25,21,0,1,21,1,15,16,22,0,3,11,14,21,0,1,21,1,19,0,22,17,22,0,4,11,21,1,17,0,8,7,0,22,17,22,0,5,11,14,21,0,3,0,17,16,0,18,21,1,3,21,0,1,0,15,16,7,0,16,0,8,21,1,6,21,0,5,8,21,1,7,0,6,8,19,7,21,0,5,0,17,16,0,15,21,0,4,17,17,25,21,0,2,0,0,16,0,5,16,14,21,0,2,0,18,21,1,9,7,16,0,15,16,21,1,17,0,8,7,0,22,17,0,5,16,14,21,0,1,21,1,15,16,22,0,3,11,14,21,0,2,0,18,21,1,12,21,1,6,21,0,3,8,0,8,0,13,21,1,6,21,0,3,0,7,16,8,19,7,16,0,15,16,21,1,17,0,8,7,0,22,17,0,5,16,14,21,0,1,15,94,15,95,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,12,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,16,14,21,0,1,21,1,15,16,22,0,3,11,14,21,0,1,21,1,73,21,0,3,0,17,16,0,18,0,7,21,1,6,0,22,0,7,21,0,3,17,8,7,16,17,25,21,0,2,21,1,9,16,0,5,16,14,21,0,1,21,1,15,16,22,0,3,11,14,21,0,3,0,9,21,0,2,17,21,1,13,16,0,8,21,0,3,17,0,7,22,0,2,13,14,21,0,1,21,1,73,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,17,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,5,21,0,4,8,21,0,2,17,0,15,16,22,0,9,11,14,21,0,8,0,15,21,0,6,17,21,0,5,16,0,15,16,22,0,10,11,0,21,21,1,26,21,1,23,8,16,22,0,11,11,14,21,1,3,21,0,10,7,0,16,21,0,11,21,1,7,0,16,8,19,21,0,7,3,2,21,1,0,0,13,21,1,6,21,0,11,21,1,15,16,8,8,22,0,12,11,14,0,21,22,0,13,11,21,0,12,16,22,0,14,11,14,21,0,8,0,18,21,0,1,0,15,16,21,1,7,0,16,8,15,96,3,2,21,1,0,15,97,8,7,16,0,15,21,0,6,17,25,21,1,18,21,1,5,21,1,21,21,0,1,7,0,20,0,18,21,0,1,7,8,8,25,21,0,1,21,1,33,21,1,34,7,21,0,2,17,0,15,16,21,1,17,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,35,7,16,21,1,17,0,7,0,8,0,13,19,0,7,21,1,2,19,7,0,21,17,0,6,0,22,17,25,21,0,1,0,15,16,0,16,0,21,17,21,1,37,16,22,0,3,11,14,21,0,1,0,15,16,0,18,21,1,37,21,1,36,21,0,3,19,7,16,21,1,17,0,8,7,0,22,17,0,5,16,14,21,0,3,21,1,17,0,8,7,0,22,17,0,17,16,0,15,21,0,3,17,0,18,21,1,3,21,1,58,21,1,7,0,16,8,7,7,21,0,1,17,25,21,0,2,21,1,39,21,0,1,17,21,1,13,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,12,21,0,2,17,17,25,21,0,2,21,0,1,3,2,0,16,21,0,1,21,1,11,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,98,21,0,2,0,16,0,21,17,7,8,25,21,0,1,3,1,25,21,0,2,21,1,51,16,21,1,52,0,22,17,0,5,16,14,21,0,2,21,1,58,16,22,0,2,12,14,21,0,2,0,18,21,1,10,7,16,21,1,17,21,1,45,7,16,0,5,16,14,21,0,2,21,1,17,21,1,47,7,16,22,0,3,11,14,21,0,1,21,1,37,16,21,1,17,21,1,47,7,16,22,0,4,11,14,21,0,1,21,0,4,21,1,50,21,0,3,17,21,1,8,15,99,8,16,0,15,21,0,2,17,25,15,100,22,0,3,11,14,15,101,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,4,21,1,60,8,21,1,1,21,1,4,21,1,48,8,21,1,33,0,16,7,21,1,50,21,1,7,21,1,3,21,1,42,21,1,54,0,22,19,21,1,55,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,64,21,0,5,7,21,0,2,17,22,0,6,11,21,1,49,0,21,17,22,0,7,11,14,21,0,4,22,0,8,11,14,15,102,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,64,21,0,5,7,21,1,33,21,1,55,21,1,7,21,1,43,8,21,1,55,21,1,44,0,21,19,3,2,21,1,0,21,1,1,21,1,53,0,21,19,8,7,21,1,51,21,1,5,21,1,62,8,19,21,0,2,17,22,0,6,11,14,15,103,22,0,7,11,14,21,1,1,21,1,48,9,21,0,7,21,1,1,0,18,21,1,48,7,9,3,3,21,1,0,21,1,51,21,1,7,21,1,52,8,21,1,54,0,21,21,1,7,21,1,49,8,19,8,22,0,7,12,14,21,0,1,21,0,7,21,0,6,0,16,21,1,6,21,1,50,21,1,3,21,1,55,7,0,22,19,8,16,17,21,1,33,21,0,4,7,21,0,2,21,0,7,21,0,6,0,16,0,21,17,17,17,21,1,49,16,25,0,29,21,1,68,21,0,1,8,25,21,0,1,21,1,51,16,21,1,53,0,22,17,0,5,16,14,21,0,1,21,1,69,21,1,48,7,16,21,1,17,21,0,4,7,21,0,2,17,25,21,0,1,22,0,3,11,14,15,104,15,105,3,2,21,1,0,21,1,2,21,1,4,21,1,36,21,1,48,21,0,2,19,8,8,25,21,0,1,21,1,37,21,1,5,21,1,62,8,21,0,2,17,22,0,3,11,14,21,0,3,0,18,21,1,50,7,16,22,0,4,11,21,1,17,21,1,44,7,0,22,17,22,0,5,11,14,21,0,4,21,1,55,21,0,5,17,21,1,52,0,22,17,21,1,17,21,1,45,7,16,0,5,16,14,21,0,3,21,1,33,21,1,74,21,1,6,0,22,21,1,55,21,0,5,17,0,17,16,21,1,7,21,1,54,8,8,7,21,0,5,21,1,56,21,0,4,17,17,22,0,6,11,14,21,0,6,21,1,17,21,1,36,7,16,0,5,16,14,21,0,3,21,1,33,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,51,21,0,5,17,17,21,1,17,21,1,54,7,16,22,0,7,11,14,21,0,1,21,1,60,21,1,5,21,1,20,8,21,0,2,17,21,1,60,21,0,6,0,16,0,21,17,21,1,20,21,0,7,3,1,17,17,25,15,106,22,0,3,11,14,21,0,1,21,1,60,21,1,60,21,1,37,21,1,4,21,1,20,21,1,6,21,1,1,21,1,50,21,1,5,21,1,55,8,21,0,2,19,21,1,44,0,21,19,0,17,21,1,4,0,18,0,22,7,8,9,8,8,19,16,0,21,21,1,72,21,0,3,8,21,0,2,17,25,21,0,1,21,1,51,16,21,1,53,0,22,17,0,5,16,14,21,0,1,21,1,50,16,21,1,54,0,22,17,0,17,16,0,18,21,0,1,21,1,7,21,1,76,8,7,16,25,21,0,1,21,1,37,16,21,1,50,21,1,7,21,1,55,8,21,1,44,0,21,19,0,17,21,1,4,0,18,0,22,7,8,9,21,1,3,21,1,20,7,21,1,1,19,21,1,78,21,1,2,19,21,0,2,21,1,50,16,17,22,0,3,11,14,21,0,1,21,1,78,21,0,2,21,1,43,21,0,3,17,21,1,44,21,0,3,21,1,55,16,17,21,1,54,0,21,21,1,49,21,0,2,17,21,1,40,0,29,17,21,1,47,21,0,3,17,17,17,25,21,0,1,21,1,51,16,21,1,53,0,22,17,0,5,16,14,21,0,1,21,1,50,16,21,1,54,0,22,17,0,17,16,0,18,21,0,1,21,1,7,21,1,79,8,7,16,25,21,0,1,0,0,16,0,5,16,14,21,0,2,21,1,51,16,21,1,52,0,22,17,0,5,16,14,21,0,1,21,1,37,16,21,1,50,21,1,5,21,1,53,8,21,0,2,17,0,5,16,14,21,0,2,21,1,60,16,0,18,21,1,10,7,16,21,1,17,21,1,45,7,16,0,5,16,14,21,0,1,21,1,37,16,21,1,78,21,0,2,21,1,50,16,17,22,0,3,11,14,21,0,3,21,1,54,0,22,17,21,1,53,21,0,2,17,21,1,17,21,1,45,7,16,0,5,16,14,21,0,1,21,0,2,21,1,50,16,21,1,48,0,21,17,21,1,8,15,107,8,21,0,2,17,25,21,0,1,21,1,83,21,1,6,0,18,21,0,2,7,8,16,25,21,0,1,21,1,50,21,1,5,21,1,51,8,21,0,2,17,0,5,16,14,21,0,1,21,1,83,21,0,2,17,25,21,0,2,21,1,51,16,21,1,48,0,21,17,25,0,29,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,50,7,16,21,1,87,16,0,18,15,108,7,16,25,21,1,1,21,1,17,0,18,21,1,20,21,1,6,21,1,60,8,7,7,3,0,21,1,48,16,19,22,0,3,11,14,21,0,1,0,0,16,0,5,16,14,21,0,1,0,18,21,1,37,7,16,22,0,4,11,14,21,0,4,21,1,60,16,0,16,0,21,17,21,1,50,16,22,0,5,11,14,21,0,4,0,18,21,1,50,7,16,21,1,51,21,0,5,17,21,1,60,16,21,1,17,21,1,45,7,16,0,5,16,14,21,0,1,21,1,51,16,21,1,52,21,0,5,17,0,5,16,14,21,0,1,22,0,6,11,21,1,51,16,22,0,7,11,21,1,85,16,22,0,8,11,21,1,33,15,109,7,21,0,1,21,1,37,16,17,22,0,9,11,14,21,0,9,21,0,3,16,21,1,36,21,0,4,0,18,21,1,78,21,1,6,21,0,7,8,7,16,17,0,5,16,14,21,0,9,0,18,15,110,7,16,21,0,3,16,22,0,10,11,14,21,0,1,21,1,87,21,0,9,17,21,1,33,21,1,74,21,1,6,0,18,21,1,48,7,8,7,21,0,10,17,21,1,49,16,25,21,0,1,21,1,51,16,21,1,51,0,22,17,0,5,16,14,21,0,1,0,18,21,1,9,7,16,21,1,17,21,1,45,7,16,0,5,16,14,21,0,1,21,1,53,0,29,17,21,1,17,21,1,45,7,16,0,5,16,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,85,21,1,4,0,18,15,111,7,8,21,0,4,9,7,16,25,21,0,1,0,0,16,0,5,16,14,21,1,89,21,1,1,7,22,0,3,11,14,21,0,1,21,0,3,0,18,21,0,3,7,21,1,17,0,18,0,18,21,1,20,21,1,6,21,1,60,8,7,7,7,3,0,21,1,48,16,21,1,48,16,19,3,2,21,1,0,21,1,36,21,1,48,0,22,19,8,16,25,21,0,1,0,0,16,0,5,16,14,21,0,2,21,1,36,16,21,1,48,0,22,17,22,0,3,11,14,21,0,2,21,1,50,15,112,3,2,21,1,0,21,0,3,8,16,22,0,4,11,14,21,0,1,21,1,37,16,21,1,50,21,1,5,21,1,53,8,21,0,4,17,0,5,16,14,21,0,1,21,1,37,16,21,1,78,21,1,6,21,1,50,8,21,0,4,17,21,1,51,21,0,4,17,21,1,17,21,1,45,7,16,0,5,16,14,21,0,1,21,1,2,21,1,89,21,0,1,21,1,7,21,1,74,8,7,9,15,113,3,2,21,1,0,21,0,3,8,21,0,2,17,25,21,0,2,21,1,51,16,21,1,51,0,22,17,0,5,16,14,21,0,1,21,1,37,16,22,0,3,11,21,1,50,21,1,5,21,1,51,8,21,0,2,17,0,5,16,14,21,0,2,0,18,21,1,9,7,16,21,1,17,21,1,45,7,16,0,5,16,14,21,0,3,21,1,48,21,1,45,21,1,55,21,1,7,21,1,52,8,19,21,0,2,17,21,1,17,21,1,45,7,16,0,5,16,14,0,21,21,1,48,21,0,2,17,21,1,47,21,0,3,17,21,1,54,21,0,2,17,22,0,2,12,14,21,0,2,21,1,50,16,21,1,56,21,1,6,21,1,85,8,16,21,1,55,16,21,1,17,21,1,1,21,1,47,21,0,3,21,1,7,0,16,8,19,21,1,54,21,0,2,21,1,7,0,16,8,19,7,0,21,17,21,1,3,0,16,7,21,0,1,21,1,60,16,17,25,21,0,2,0,18,21,0,1,21,1,7,21,1,95,8,7,16,25,21,0,1,21,1,51,21,1,6,0,21,8,21,1,17,21,1,46,7,9,21,1,5,21,1,3,21,1,55,7,8,21,0,2,17,22,0,3,11,14,21,0,1,0,21,21,0,3,3,2,15,114,3,2,21,1,0,0,21,21,1,51,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,115,22,0,8,11,14,21,0,4,21,1,51,21,1,6,0,21,8,21,1,8,21,0,1,8,9,21,0,8,3,2,0,16,21,0,6,21,1,50,0,22,17,17,25,21,0,1,22,0,2,11,14,21,1,48,21,1,6,0,21,8,21,1,8,15,116,8,25,21,0,2,21,1,51,16,21,1,3,21,1,55,7,0,22,17,22,0,5,11,14,21,0,5,21,1,53,0,21,17,0,5,16,14,21,0,1,21,1,51,16,21,1,53,21,0,5,17,0,5,16,14,21,0,2,21,1,19,0,22,17,22,0,6,11,21,1,17,21,1,47,7,16,22,0,7,11,14,0,21,21,1,98,21,0,2,21,1,60,16,21,1,7,0,16,8,21,1,5,21,0,4,8,7,21,0,7,17,22,0,8,11,14,21,0,2,21,1,50,16,0,22,0,22,21,1,7,21,1,55,21,1,4,21,1,85,8,8,21,1,47,21,0,7,19,0,18,21,1,54,21,1,6,21,0,7,8,21,1,7,21,0,8,8,7,9,21,1,3,21,1,53,7,0,21,19,21,1,17,21,1,45,7,9,3,2,21,1,0,21,1,48,21,1,6,0,21,8,8,16,0,5,16,14,21,0,1,21,1,51,16,21,1,3,21,1,55,7,21,0,5,17,22,0,9,11,14,21,0,1,21,1,19,21,0,9,17,22,0,10,11,14,21,0,10,21,1,97,21,0,6,17,22,0,11,11,14,21,0,11,21,1,17,21,1,98,21,0,1,21,1,60,16,21,1,7,0,16,8,21,1,7,21,0,4,21,1,6,21,0,2,21,1,60,16,21,1,7,0,16,8,8,8,7,7,16,22,0,12,11,14,21,1,3,0,21,7,21,1,53,21,0,12,21,1,6,21,1,47,21,1,6,21,0,6,21,1,17,21,1,47,7,16,8,8,19,22,0,13,11,14,21,0,9,21,1,85,16,0,18,21,0,1,21,1,37,16,21,1,7,0,16,8,7,16,21,1,17,21,1,47,7,21,1,85,9,21,1,7,21,1,60,8,16,21,1,47,21,0,10,21,1,17,21,1,47,7,16,17,0,18,15,117,21,1,6,21,0,2,21,1,50,16,8,7,16,25,21,0,1,22,0,2,11,14,21,1,71,21,1,45,7,21,1,56,9,0,19,21,1,45,7,21,1,71,21,1,54,7,9,3,2,0,16,21,0,1,17,22,0,3,11,14,15,118,25,21,0,1,21,1,51,16,21,1,53,0,22,17,0,5,16,14,21,0,1,21,1,101,16,22,0,3,11,14,21,0,1,21,1,50,16,21,1,85,16,0,18,0,22,21,1,1,21,0,1,21,1,51,21,1,48,0,22,19,21,1,8,21,1,69,21,1,48,7,8,16,21,1,74,21,0,3,17,21,1,7,0,16,8,21,1,5,21,1,37,8,0,22,21,1,7,21,1,55,8,19,3,2,21,1,0,21,1,48,21,1,6,0,21,8,8,7,16,21,1,74,21,0,3,0,4,21,1,6,21,1,33,0,22,7,8,16,17,25,21,0,2,21,1,51,16,22,0,3,11,14,21,0,1,21,1,51,16,21,1,53,21,0,3,17,0,5,16,14,21,0,1,21,0,3,21,1,68,21,1,85,8,21,0,2,21,1,37,16,17,21,0,3,21,1,68,21,1,36,8,21,0,2,17,25,21,0,1,21,1,36,21,1,51,0,21,19,21,1,8,21,1,48,8,16,22,0,1,12,14,21,0,2,21,1,51,16,21,1,52,0,22,17,0,5,16,14,21,0,2,21,1,60,16,22,0,2,12,14,21,0,1,21,1,37,16,21,1,50,21,1,5,21,1,53,8,21,0,2,17,0,5,16,14,21,0,2,21,1,60,16,0,18,21,1,10,7,16,21,1,17,21,1,45,7,16,0,5,16,14,21,0,2,21,1,107,16,21,1,56,16,21,1,17,21,1,54,7,16,21,1,55,21,0,1,21,1,51,16,17,22,0,3,11,14,21,0,3,21,1,48,21,0,2,17,21,1,17,21,1,45,7,16,0,5,16,14,21,0,3,21,1,85,16,21,1,1,21,1,87,21,1,3,21,1,107,21,1,4,21,1,56,8,7,19,21,0,2,17,21,1,92,21,0,2,17,22,0,2,12,14,21,0,1,21,1,37,16,21,1,93,21,0,2,17,0,18,21,1,17,21,1,43,7,7,16,21,1,85,16,0,18,21,1,3,21,0,1,7,21,1,96,21,1,74,21,1,6,21,0,2,8,19,7,16,25,21,0,1,21,1,106,21,1,6,21,0,2,8,21,1,111,21,1,7,21,1,69,21,1,63,7,8,9,21,1,5,21,1,106,8,21,0,2,17,25,21,0,1,15,119,21,0,5,21,1,114,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,0,1,0,0,16,0,5,16,14,21,0,1,21,1,51,16,21,1,51,0,21,17,0,5,16,14,21,0,1,21,1,114,16,25,21,0,1,21,1,51,16,21,1,51,0,22,17,0,5,16,14,21,0,1,0,18,21,1,10,7,16,21,1,17,21,1,45,7,16,0,5,16,14,21,0,1,21,1,81,21,1,6,0,22,8,21,1,53,21,1,81,21,1,6,0,29,8,19,21,1,17,21,1,45,7,9,16,0,5,16,14,21,0,1,0,3,16,25,21,1,3,0,21,21,1,4,0,5,8,3,1,21,1,92,21,0,1,21,1,74,0,22,17,17,7,21,1,114,21,1,48,21,1,106,21,0,1,21,1,74,0,21,17,19,21,1,114,9,19,25,21,0,1,21,1,116,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,66,15,120,8,16,14,21,0,1,22,0,9,11,14,15,121,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,55,16,21,0,10,21,1,1,21,1,117,21,0,4,7,21,0,2,19,7,16,22,0,12,11,14,21,0,6,0,21,21,1,66,21,1,3,21,0,11,21,0,12,3,2,7,21,1,114,0,21,21,1,7,21,1,48,8,19,21,1,114,21,1,42,19,8,16,25,21,1,18,21,1,5,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,57,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,17,0,8,21,2,6,21,0,1,0,14,16,21,2,7,0,16,8,0,12,21,0,5,21,2,7,0,16,8,19,8,7,0,22,17,0,5,16,14,21,0,5,21,2,17,0,8,7,0,22,17,0,17,16,0,18,21,0,1,0,15,16,21,2,7,0,16,8,21,0,4,21,0,2,0,15,16,21,2,7,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,17,0,8,21,2,6,21,0,7,21,2,7,0,16,8,0,12,21,0,5,21,2,7,0,16,8,19,8,7,0,22,17,0,5,16,14,21,0,6,0,7,21,0,1,0,12,16,17,0,17,16,21,2,17,0,8,21,2,6,0,6,21,2,6,21,0,6,8,21,2,3,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,5,0,18,21,2,3,21,0,10,7,0,16,0,6,21,2,6,0,8,21,2,6,21,0,8,8,8,19,21,0,4,21,0,9,21,2,7,0,16,8,19,7,8,21,0,9,21,2,15,16,17,0,15,16,0,15,21,0,7,17,25,21,0,1,21,2,22,21,0,4,7,21,0,2,17,25,21,0,1,0,18,15,122,21,0,2,7,7,16,25,21,0,2,0,18,15,123,21,0,1,7,7,16,25,21,1,6,0,8,0,23,17,0,13,21,0,1,21,2,17,21,2,13,7,16,22,1,10,12,0,7,21,0,1,21,2,17,21,2,14,7,16,22,1,9,12,17,17,25,21,0,1,14,21,2,3,0,21,7,21,2,12,0,21,21,2,98,21,1,8,21,2,7,0,16,8,21,2,5,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,6,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,14,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,17,15,124,7,21,1,6,0,17,16,17,25,21,0,1,0,18,21,2,10,7,16,21,2,17,0,8,7,0,22,17,0,5,16,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,3,0,16,7,21,1,3,0,17,16,0,18,0,7,21,2,6,21,0,3,8,7,16,0,19,21,2,1,21,2,3,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,7,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,125,7,16,25,21,0,1,21,2,19,0,22,17,22,0,3,11,21,2,17,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,6,0,8,21,2,6,21,0,4,8,8,21,2,3,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,7,0,16,8,7,16,25,21,0,1,14,21,1,9,0,16,21,1,11,0,16,21,1,13,17,17,22,0,3,11,14,21,1,13,0,6,0,22,17,22,1,13,12,21,1,12,16,22,1,14,12,14,21,0,3,25,21,0,1,0,12,21,1,14,17,25,21,0,1,21,2,51,21,0,4,17,25,21,1,3,0,17,16,0,18,21,2,2,7,21,2,6,0,1,8,15,126,21,2,6,0,15,8,3,2,21,2,0,21,1,4,21,2,48,0,21,17,8,21,0,1,17,25,21,0,1,21,2,10,16,0,5,16,14,21,0,1,0,17,16,25,21,0,1,21,2,51,16,21,2,51,0,22,17,0,5,16,14,21,0,1,0,18,21,1,3,7,16,21,2,17,0,18,21,2,20,21,2,6,21,2,60,8,7,7,3,0,21,2,48,16,17,25,21,1,9,21,1,7,21,2,54,21,0,4,17,7,22,0,5,11,14,21,0,1,21,2,33,21,0,5,7,21,2,2,21,2,4,0,18,21,0,1,21,2,7,21,0,5,8,7,8,21,2,1,21,2,4,0,18,21,2,1,21,0,5,21,0,2,19,7,8,21,1,8,3,4,21,2,0,21,2,36,21,2,5,21,2,62,8,21,2,52,21,0,4,21,2,44,0,21,17,19,21,2,46,0,21,21,2,52,21,0,4,17,21,2,45,21,1,7,17,19,21,2,59,0,23,19,21,2,17,21,2,54,21,2,6,0,23,21,2,7,21,2,47,8,8,7,9,8,21,0,2,17,25,21,0,2,0,17,16,0,18,21,0,1,21,2,37,16,21,2,7,0,16,8,7,16,22,0,3,11,14,21,0,1,21,2,19,21,0,2,17,22,0,4,11,21,2,17,21,2,47,7,16,22,0,5,11,14,21,0,3,21,2,17,21,2,47,7,16,0,17,16,0,18,21,2,1,21,2,47,21,0,5,19,21,2,54,21,0,5,0,17,16,21,2,60,21,0,4,17,19,21,2,4,0,18,21,0,1,21,2,60,16,21,2,7,0,16,8,7,8,7,16,21,2,60,21,0,3,17,25,21,0,1,21,2,51,16,21,2,53,0,22,17,0,5,16,14,21,0,1,21,1,3,21,0,2,17,25,21,0,2,21,2,51,16,21,2,52,0,22,17,0,5,16,14,21,0,1,21,2,37,16,21,2,50,21,2,5,21,2,53,8,21,0,2,17,0,5,16,14,21,0,2,21,2,50,16,22,0,3,11,14,21,0,2,21,2,60,16,21,2,7,0,16,8,22,0,4,11,14,21,0,1,21,0,3,21,2,48,0,21,17,21,2,8,15,127,8,0,21,17,25,21,0,2,21,2,9,16,0,5,16,14,21,0,1,21,2,50,16,22,0,3,11,14,0,21,21,2,48,21,0,2,17,22,0,4,11,14,21,0,2,21,2,42,16,22,0,5,11,21,2,43,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,8,21,2,54,8,21,0,6,21,2,55,21,0,3,17,17,21,0,1,21,2,51,16,21,2,50,0,22,17,21,2,8,15,128,1,8,21,0,1,17,22,0,9,11,14,21,0,9,0,18,21,0,1,21,2,60,16,21,2,7,0,16,8,7,16,21,0,5,21,2,48,21,0,3,17,21,2,8,15,129,1,21,0,1,7,8,16,21,2,60,21,0,7,17,25,21,0,2,21,2,60,16,21,2,1,21,2,61,21,2,5,0,18,21,2,54,7,8,21,2,56,19,21,1,3,17,21,2,33,21,0,1,21,2,7,21,2,74,21,2,6,0,18,21,2,48,7,8,8,7,16,21,2,49,21,2,60,21,2,37,21,2,4,21,0,1,21,2,37,16,21,2,81,21,2,6,21,2,50,8,21,0,2,17,21,2,7,21,2,20,8,8,19,16,25,21,0,1,21,2,50,21,2,6,21,1,4,8,21,2,8,15,130,1,8,16,14,21,1,5,0,16,0,22,21,2,54,21,1,3,17,22,1,3,12,17,25,21,0,2,21,2,85,16,0,18,21,2,47,21,2,6,21,0,1,21,2,51,21,1,8,17,8,21,2,3,21,2,94,7,21,1,6,19,21,2,37,21,2,7,0,16,8,21,0,1,19,7,16,25,21,0,1,21,2,78,16,0,18,21,2,17,21,2,54,7,7,16,22,0,3,11,14,21,0,3,21,2,81,0,29,17,21,2,87,21,0,1,17,21,2,55,21,0,3,21,2,86,16,0,16,0,21,17,21,2,85,16,17,25,21,0,1,14,21,1,6,0,16,21,1,7,17,21,2,1,0,22,21,2,54,21,1,7,17,22,1,7,12,17,25,21,0,1,21,2,51,16,21,2,51,0,22,17,0,5,16,14,21,0,1,0,18,21,2,50,7,16,25,21,0,2,0,18,21,2,89,21,2,1,7,7,16,21,2,47,21,1,4,21,2,81,0,22,17,21,2,86,16,21,2,20,0,22,3,1,17,0,19,21,2,47,7,16,21,2,86,16,17,21,2,17,0,18,0,18,21,2,54,7,7,7,16,0,18,21,0,1,21,2,19,21,1,4,21,2,50,16,17,21,2,20,21,1,4,21,2,17,21,2,47,7,16,3,1,17,21,2,3,21,2,60,7,21,0,1,17,21,2,7,21,2,74,8,7,16,25,21,0,1,21,2,50,21,2,5,21,2,55,8,21,0,2,17,21,2,47,16,22,0,3,11,14,21,0,1,21,2,50,21,2,5,21,2,43,8,21,0,2,17,22,0,4,11,14,21,0,1,15,131,1,21,2,6,21,2,50,21,2,54,21,0,4,21,2,85,16,21,2,54,0,22,17,21,2,55,16,19,8,21,2,5,15,132,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,133,1,21,1,7,3,2,21,2,0,21,2,51,21,2,6,21,1,6,8,8,22,0,5,11,14,0,21,21,0,5,16,25,15,134,1,22,0,3,11,14,0,29,21,0,3,0,22,21,2,54,21,0,1,17,17,21,2,54,0,22,17,25,21,0,2,21,2,99,21,0,1,21,2,7,21,1,13,8,7,16,25,21,0,2,21,2,51,16,21,2,3,21,2,55,7,0,22,17,22,0,3,11,14,21,0,3,21,2,53,0,21,17,0,5,16,14,21,0,1,21,2,18,16,21,2,1,21,2,4,21,0,3,21,2,68,0,21,8,8,21,2,1,21,0,3,21,2,68,21,2,48,8,3,2,21,2,0,21,0,3,21,2,48,0,21,17,8,21,2,5,0,18,21,2,37,7,8,21,1,3,9,3,2,21,2,0,21,0,2,21,2,50,16,21,2,48,0,21,17,8,15,135,1,3,2,21,2,0,21,2,60,21,2,4,21,2,50,8,21,2,48,0,26,19,21,2,5,21,2,45,8,8,21,0,2,17,25,21,0,1,25,21,0,1,21,2,9,16,0,5,16,14,21,0,1,21,2,43,21,1,8,17,22,1,8,12,14,21,0,1,21,2,44,21,1,7,17,22,1,7,12,25,21,0,1,21,2,54,0,21,17,21,2,85,16,21,2,92,21,1,9,3,1,17,0,19,21,2,2,21,2,4,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,8,0,18,0,8,21,3,6,21,2,7,8,7,8,16,21,3,7,0,16,8,21,3,5,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,136,1,3,2,0,16,21,0,3,0,13,0,26,17,17,22,0,11,11,14,15,137,1,22,0,12,11,14,15,138,1,15,139,1,21,0,12,3,3,21,3,0,15,140,1,8,22,0,13,11,14,21,0,1,0,18,21,0,1,21,3,7,15,141,1,8,7,16,25,21,1,6,21,1,7,0,12,21,0,1,17,21,3,8,15,142,1,8,16,25,21,0,1,21,3,42,21,2,4,17,0,18,21,0,2,21,3,7,0,16,8,7,16,25,21,0,1,0,22,21,3,55,21,1,3,17,21,3,48,21,0,2,17,21,3,8,21,3,69,21,0,0,21,3,6,21,0,2,21,3,54,0,22,17,8,7,8,16,21,2,3,21,0,2,21,1,4,16,17,25,21,0,2,21,3,19,0,22,17,22,0,3,11,21,3,20,22,1,7,13,14,21,0,3,21,3,17,21,3,47,7,16,22,1,8,12,21,3,1,21,3,4,0,17,8,0,18,21,3,54,7,21,3,47,19,21,0,1,17,25,21,1,6,21,3,55,21,1,5,17,21,3,47,21,1,8,17,0,17,16,0,18,21,0,4,0,1,16,21,3,60,16,0,16,0,21,17,7,16,21,3,20,21,3,3,21,3,20,7,3,2,21,3,0,21,1,4,8,21,0,1,21,3,60,16,17,25,21,0,1,22,2,4,12,21,3,3,0,16,7,21,2,6,17,22,2,5,12,14,0,29,22,2,3,12,25,21,0,2,0,18,21,0,1,21,3,7,0,16,8,7,16,25,21,0,1,21,3,51,21,0,2,17,0,19,21,3,45,7,16,21,3,17,21,3,54,7,16,22,0,3,11,14,21,0,3,21,3,85,16,0,18,21,0,2,21,3,7,0,16,8,7,16,21,3,17,21,3,47,7,16,22,0,4,11,14,21,0,3,21,3,49,21,3,6,21,1,4,8,21,3,8,21,0,2,21,0,1,3,2,21,3,7,21,3,33,0,16,7,8,21,3,4,15,143,1,8,8,16,14,21,0,4,25,21,1,4,21,3,54,21,3,6,21,0,1,8,21,3,5,21,2,5,8,21,1,3,17,21,3,51,21,3,6,0,21,8,21,3,8,21,0,1,21,3,54,0,22,17,21,3,4,21,1,5,8,8,16,25,21,0,1,0,22,21,3,7,21,3,49,8,21,3,8,15,144,1,8,21,0,2,17,25,21,0,2,21,3,102,16,21,3,86,16,22,0,3,11,14,21,0,1,21,3,101,21,0,2,21,3,74,21,0,3,17,17,21,3,3,21,3,55,7,0,22,17,21,3,44,0,21,17,21,3,3,21,3,74,7,21,0,3,17,22,0,4,11,14,21,0,1,21,1,3,21,3,68,21,3,36,8,21,0,2,21,3,74,21,0,4,17,17,21,2,2,21,3,8,21,3,47,21,3,6,21,3,55,21,3,6,21,0,4,8,8,21,3,54,21,3,2,19,8,21,0,2,21,3,50,16,17,25,21,0,1,21,1,8,0,7,0,22,17,21,4,8,21,1,9,0,7,0,22,19,21,4,8,15,145,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,17,21,4,55,7,16,21,4,47,16,22,2,3,12,14,21,0,1,21,4,17,21,4,43,7,16,21,4,47,21,1,4,17,22,1,4,12,25,0,23,21,4,39,21,0,2,17,21,4,43,16,22,0,3,11,21,4,54,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,42,0,23,17,21,4,47,21,0,5,17,21,4,54,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,Infinity,-Infinity,-1])
- ,[[0,1,0,125],[2,0,2514,6],[0,0,2541,3],[0,0,2545,3],[0,0,2549,3],[1,0,2553,5],[2,0,2571,6],[2,0,2586,6],[2,0,2605,6],[2,0,2627,6],[2,0,2649,6],[0,0,2681,3],[0,0,2692,3],[0,0,2701,3],[1,0,2710,9],[0,0,2821,3],[0,0,2861,4],[1,1,2937,4],[1,1,3010,3],[0,0,3074,3],[0,0,3085,5],[2,0,3169,12],[0,0,3373,4],[0,0,3420,6],[0,0,3510,4],[0,0,3660,4],[0,0,3719,4],[2,0,3819,15],[1,1,4007,2],[0,0,4031,3],[0,0,4058,3],[0,0,4084,3],[0,0,4123,4],[0,0,4218,3],[0,0,4245,3],[0,0,4267,3],[0,0,4289,3],[0,0,4300,3],[0,0,4329,3],[0,0,4335,5],[0,0,4449,5],[0,0,4482,3],[0,0,4491,3],[1,1,4497,2],[2,0,4566,10],[2,0,4625,8],[1,1,4812,2],[1,0,4822,5],[2,1,4862,4],[0,0,4898,8],[0,0,5130,4],[0,0,5211,3],[0,0,5259,4],[0,0,5380,3],[0,0,5428,4],[0,0,5584,3],[0,0,5602,3],[0,0,5634,3],[0,0,5648,7],[0,0,5695,11],[1,0,5952,8],[0,0,6064,4],[0,0,6146,5],[0,0,6299,4],[0,0,6504,3],[0,0,6522,4],[1,0,6594,9],[1,1,6663,3],[1,0,6687,14],[1,1,7115,4],[0,0,7164,4],[0,0,7303,4],[0,0,7369,4],[0,0,7630,3],[2,0,7670,6],[0,0,7698,3],[0,0,7733,3],[0,0,7817,3],[1,1,7869,2],[2,0,7877,13],[1,1,8028,2],[1,1,8042,2],[1,1,8046,2],[0,0,8050,3],[0,0,8062,3],[0,0,8085,3],[1,0,8106,6],[1,0,8221,11],[1,0,8440,5],[0,0,8455,3],[0,0,8469,3],[0,0,8483,3],[1,0,8528,8],[0,0,8666,8],[0,0,8831,5],[0,0,8906,3],[0,0,8923,4],[0,0,8972,3],[1,0,8982,5],[0,0,8993,3],[0,0,9039,3],[0,0,9057,3],[1,0,9109,6],[0,0,9262,6],[0,0,9390,3],[0,0,9418,5],[0,0,9512,10],[0,0,9695,3],[0,0,9795,3],[0,0,9837,3],[0,0,9890,4],[0,0,9950,3],[0,0,9981,3],[0,0,10009,3],[0,0,10127,6],[0,0,10234,6],[0,0,10284,4],[0,0,10314,3],[0,0,10333,4],[1,1,10489,2],[0,0,10493,3],[1,0,10534,5],[1,0,10571,5],[1,0,10582,5],[0,0,10593,14],[0,0,10769,3],[0,0,10790,3],[0,0,10814,3],[0,0,10870,4],[1,0,10930,5],[0,0,10997,3],[0,0,11026,3],[0,0,11043,5],[0,0,11154,3],[0,0,11209,3],[0,0,11233,5],[0,0,11362,3],[0,0,11402,3],[0,0,11485,3],[0,0,11519,3],[0,0,11548,3],[0,0,11566,3],[0,0,11583,3],[0,0,11612,3],[0,0,11655,6],[0,0,11734,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,0,12,21,0,6,0,11,8,0,21,3,2,21,0,0,0,0,8,22,0,9,11,14,0,12,21,0,6,0,11,8,0,8,0,13,21,0,6,0,21,8,19,0,21,3,2,21,0,0,0,0,8,22,0,10,11,14,21,0,3,0,13,7,0,7,0,22,19,0,20,15,11,8,22,0,11,11,14,0,13,0,7,0,22,19,22,0,12,11,14,15,12,0,16,21,0,12,19,0,20,0,11,8,22,0,13,11,14,15,13,0,16,21,0,11,19,0,20,0,7,21,0,4,21,0,13,21,0,4,0,7,8,8,8,22,0,14,11,14,0,22,0,14,0,16,0,21,19,3,2,21,0,0,0,12,21,0,11,0,21,19,8,22,0,15,11,14,15,14,22,0,16,11,14,21,0,16,22,0,17,11,14,0,0,0,7,0,22,19,21,0,8,21,0,11,8,22,0,18,11,14,0,14,21,0,7,15,15,8,22,0,19,11,14,15,16,22,0,20,11,14,15,17,22,0,21,11,14,15,18,22,0,22,11,14,0,13,0,7,21,0,3,0,13,7,19,22,0,23,11,14,0,22,0,15,0,16,0,21,19,21,0,7,0,13,0,8,0,23,19,0,7,0,22,19,15,19,3,2,21,0,0,21,0,1,21,0,4,0,0,8,8,8,3,2,21,0,0,21,0,1,21,0,4,0,14,8,21,0,17,0,8,7,0,22,19,21,0,11,0,21,19,8,22,0,24,11,14,21,0,23,21,0,24,21,0,3,21,0,24,7,0,7,9,3,2,21,0,0,21,0,2,21,0,4,0,0,8,8,15,20,3,3,21,0,0,0,0,21,0,5,0,6,8,8,22,0,25,11,14,15,21,22,0,26,11,14,15,22,22,0,27,11,14,0,12,21,0,11,0,21,19,21,0,8,15,23,8,22,0,28,11,14,15,24,22,0,29,11,14,15,25,22,0,30,11,14,15,26,22,0,31,11,14,15,27,22,0,32,11,14,15,28,22,0,33,11,14,0,0,21,0,5,0,12,8,0,21,3,2,21,0,1,21,0,4,0,0,8,0,12,3,2,0,12,21,0,5,0,12,8,0,21,3,2,0,14,21,0,5,21,0,33,0,12,7,8,21,0,17,0,8,7,0,22,19,0,21,3,2,15,29,3,5,21,0,17,15,30,7,16,22,0,34,11,14,0,21,15,31,3,2,21,0,0,0,0,8,22,0,35,11,14,21,0,34,0,20,21,0,35,8,22,0,36,11,14,21,0,34,0,7,0,22,19,0,20,3,0,0,14,3,2,21,0,0,0,0,8,8,22,0,37,11,14,0,0,21,0,8,0,15,21,0,4,21,0,15,8,21,0,11,0,21,19,21,0,8,15,32,8,8,22,0,38,11,14,21,0,22,0,9,7,22,0,39,11,14,21,0,22,0,10,7,22,0,40,11,14,21,0,3,21,0,39,21,0,7,21,0,40,8,7,0,20,0,23,21,0,39,16,21,0,7,21,0,40,8,8,22,0,41,11,14,21,0,22,15,33,0,20,0,7,21,0,1,3,2,21,0,0,0,13,21,0,6,0,21,8,8,8,7,22,0,42,11,14,21,0,22,15,34,0,20,21,0,13,8,7,22,0,43,11,14,21,0,22,15,35,0,20,0,7,21,0,4,21,0,43,21,0,4,0,7,8,8,8,7,22,0,44,11,14,21,0,22,0,8,7,22,0,45,11,14,21,0,22,0,8,0,7,0,6,19,7,22,0,46,11,14,21,0,22,0,8,0,20,21,0,12,0,7,21,0,11,19,21,0,6,0,21,8,8,7,22,0,47,11,14,21,0,22,21,0,3,0,13,7,0,7,0,22,19,7,0,20,15,36,8,22,0,48,11,14,21,0,22,0,13,0,7,0,22,19,7,0,20,21,0,38,8,22,0,49,11,14,21,0,22,0,12,0,7,0,22,19,7,0,20,21,0,15,8,22,0,50,11,14,21,0,22,0,12,7,0,20,0,12,8,22,0,51,11,14,21,0,22,21,0,3,0,13,7,7,0,20,21,0,3,0,21,7,0,5,0,42,19,8,22,0,52,11,14,21,0,22,0,13,7,0,20,21,0,3,0,21,7,0,5,0,43,19,8,22,0,53,11,14,21,0,22,0,6,7,22,0,54,11,14,21,0,22,0,7,7,22,0,55,11,14,21,0,55,21,0,54,0,22,19,22,0,56,11,14,21,0,54,0,21,3,2,21,0,55,0,21,3,2,21,0,47,0,22,3,2,21,0,39,0,22,3,2,21,0,40,0,22,3,2,21,0,41,0,22,3,2,21,0,45,0,22,3,2,21,0,46,0,21,3,2,21,0,42,0,21,3,2,21,0,43,0,27,3,2,21,0,44,0,28,3,2,21,0,48,0,21,3,2,21,0,53,0,22,3,2,21,0,51,0,22,3,2,21,0,52,0,22,3,2,21,0,49,0,21,3,2,21,0,50,0,21,3,2,3,17,21,0,17,15,37,7,21,0,3,0,21,7,0,5,0,44,19,3,1,0,16,0,21,17,17,22,0,57,11,14,15,38,0,15,3,2,21,0,0,0,0,8,22,0,58,11,14,21,0,18,21,0,7,15,39,8,22,0,59,11,14,0,15,0,20,21,0,58,8,22,0,60,11,14,15,40,22,0,61,11,14,15,41,0,20,15,42,8,22,0,62,11,14,21,0,62,21,0,4,21,0,49,8,22,0,63,11,14,15,43,22,0,64,11,14,15,44,22,0,65,11,14,21,0,65,22,0,66,11,14,15,45,22,0,67,11,14,21,0,67,22,0,68,11,14,15,46,22,0,69,11,14,15,47,22,0,70,11,14,21,0,70,22,0,71,11,14,15,48,22,0,72,11,14,0,22,21,0,72,21,0,29,8,21,0,6,21,0,18,8,22,0,73,11,14,21,0,73,0,20,21,0,73,21,0,6,0,21,8,8,22,0,74,11,14,21,0,60,21,0,5,21,0,20,8,15,49,3,2,21,0,0,21,0,51,21,0,48,0,22,19,21,0,5,21,0,46,8,8,22,0,75,11,14,15,50,22,0,76,11,14,15,51,22,0,77,11,14,21,0,76,0,20,21,0,77,8,22,0,78,11,14,15,52,22,0,79,11,14,15,53,22,0,80,11,14,21,0,79,0,20,21,0,80,8,22,0,81,11,14,15,54,22,0,82,11,14,21,0,74,21,0,6,21,0,27,8,22,0,83,11,14,21,0,50,21,0,51,0,21,19,21,0,55,0,22,19,21,0,72,15,55,15,56,3,2,21,0,0,15,57,8,8,22,0,84,11,14,21,0,82,0,20,21,0,61,8,22,0,85,11,14,0,21,21,0,72,21,0,31,8,0,20,21,0,30,8,22,0,86,11,14,21,0,84,0,20,21,0,27,8,22,0,87,11,14,21,0,60,21,0,4,21,0,50,8,21,0,48,0,21,19,21,0,8,15,58,15,59,3,2,21,0,0,0,18,21,0,51,7,21,0,50,0,22,19,21,0,17,21,0,46,7,9,0,22,3,2,21,0,0,21,0,51,21,0,50,0,22,19,8,8,8,22,0,88,11,14,15,60,22,0,89,11,14,15,61,22,0,90,11,14,15,62,22,0,91,11,14,21,0,75,0,20,21,0,88,8,22,0,92,11,14,21,0,91,0,20,21,0,90,8,22,0,93,11,14,15,63,22,0,94,11,14,21,0,94,15,64,3,2,21,0,0,21,0,2,21,0,4,21,0,60,21,0,4,0,18,0,0,7,8,8,21,0,17,21,0,46,7,9,8,22,0,95,11,14,21,0,95,21,0,6,21,0,60,21,0,1,3,2,21,0,0,0,0,8,8,22,0,96,11,14,15,65,22,0,97,11,14,15,66,22,0,98,11,14,15,67,22,0,99,11,14,15,68,22,0,100,11,14,21,0,100,21,0,25,7,0,20,0,21,21,0,26,21,0,25,8,8,22,0,101,11,14,21,0,100,21,0,3,21,0,25,7,7,0,20,0,22,21,0,26,21,0,3,21,0,25,7,8,8,22,0,102,11,14,15,69,22,0,103,11,14,15,70,22,0,104,11,14,15,71,22,0,105,11,14,21,0,103,0,22,7,0,20,21,0,3,0,21,7,0,5,0,86,19,8,22,0,106,11,14,21,0,3,21,0,103,0,21,7,7,0,20,21,0,104,8,22,0,107,11,14,21,0,105,0,20,21,0,87,21,0,6,21,0,107,8,8,22,0,108,11,14,15,72,22,0,109,11,14,21,0,109,0,20,21,0,28,8,22,0,110,11,14,21,0,101,21,0,4,21,0,101,8,21,0,74,21,0,55,21,0,1,19,21,0,3,21,0,106,7,19,22,0,111,11,14,15,73,22,0,112,11,14,21,0,112,0,20,21,0,111,8,22,0,113,11,14,21,0,96,0,20,21,0,60,0,16,0,21,19,8,22,0,114,11,14,15,74,22,0,115,11,14,0,5,21,0,6,0,91,8,22,0,116,11,14,21,0,54,21,0,3,21,0,55,7,0,20,21,0,54,8,21,0,55,21,0,55,21,0,47,21,0,3,21,0,39,7,0,20,21,0,1,8,21,0,39,21,0,39,21,0,40,21,0,22,0,2,7,21,0,41,21,0,3,21,0,40,7,0,20,0,23,21,0,7,21,0,40,8,8,21,0,45,21,0,3,21,0,39,7,0,20,21,0,1,8,21,0,46,21,0,1,21,0,55,0,22,19,21,0,39,21,0,3,21,0,55,7,19,0,20,21,0,1,8,21,0,48,0,21,21,0,4,21,0,116,8,0,20,15,75,8,21,0,87,0,21,21,0,4,21,0,116,8,0,20,15,76,8,3,20,21,0,60,21,0,6,21,0,50,21,0,3,21,0,39,7,0,23,19,21,0,3,21,0,92,7,0,23,19,8,16,21,0,110,16,15,77,16,22,0,117,11,14,15,78,22,0,118,11,14,15,79,22,0,119,11,14,21,0,119,22,0,120,11,14,21,0,59,0,20,21,0,58,8,22,0,121,11,14,15,80,22,0,122,11,14,21,0,45,0,20,21,0,74,21,0,6,21,0,101,8,8,22,0,123,11,14,21,0,46,0,20,21,0,74,21,0,6,21,0,102,8,8,22,0,124,11,14,21,0,32,22,0,125,11,14,21,0,54,21,0,55,21,0,47,21,0,39,21,0,40,21,0,41,21,0,43,21,0,44,21,0,42,21,0,56,21,0,123,21,0,124,21,0,48,21,0,49,21,0,50,21,0,51,21,0,53,21,0,52,21,0,36,21,0,37,21,0,2,21,0,1,21,0,121,21,0,92,21,0,63,21,0,78,21,0,81,21,0,85,21,0,86,21,0,110,21,0,87,21,0,101,21,0,102,21,0,74,21,0,114,21,0,106,21,0,113,21,0,107,21,0,108,21,0,93,0,5,21,0,3,21,0,69,21,0,33,21,0,122,21,0,118,21,0,17,21,0,71,0,19,21,0,4,21,0,5,21,0,6,21,0,7,21,0,125,0,20,21,0,115,21,0,68,21,0,66,21,0,120,3,59,25,21,0,1,15,81,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,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,82,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,30,17,14,21,0,1,22,0,5,11,21,1,15,16,22,0,6,11,14,21,0,4,22,0,7,11,14,21,0,1,21,1,2,0,20,15,83,15,84,3,2,21,1,0,21,0,6,21,1,11,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,6,0,22,0,7,21,0,6,17,8,7,16,0,18,15,85,7,16,14,21,0,8,25,21,0,2,0,7,21,0,1,21,1,15,16,17,0,17,16,0,18,21,1,3,21,0,1,7,0,16,0,6,21,1,6,21,0,2,8,19,7,16,25,21,0,2,21,1,15,16,22,0,3,11,14,21,0,1,21,1,15,16,0,6,21,0,3,17,0,17,16,0,18,21,0,2,21,1,7,0,16,8,21,1,3,21,0,1,7,0,16,21,0,3,21,1,7,0,7,8,19,3,2,21,1,0,0,13,21,1,6,21,0,3,8,8,7,16,25,15,86,22,0,2,11,14,15,87,22,0,3,11,14,21,0,3,21,0,1,7,21,1,3,21,0,3,21,1,3,21,0,1,7,7,7,3,2,21,1,0,0,12,21,1,5,21,1,12,8,8,21,0,2,21,0,1,7,3,2,21,1,0,0,12,21,1,5,0,12,8,8,25,15,88,21,0,1,7,22,0,2,11,14,21,0,1,15,89,15,90,3,2,21,1,0,0,0,21,1,5,21,1,12,8,8,0,20,0,18,21,0,2,7,8,21,1,21,21,0,2,7,3,3,21,1,0,0,0,21,1,5,0,6,8,8,25,21,0,1,21,1,24,21,0,2,17,25,21,0,1,0,14,21,1,5,21,1,97,8,21,0,2,17,22,0,3,11,14,21,0,3,21,1,17,21,1,98,21,0,1,0,15,16,21,1,7,0,16,8,21,1,7,21,1,25,21,1,6,21,0,2,0,15,16,21,1,7,0,16,8,8,8,7,7,16,22,0,4,11,14,0,21,21,1,3,21,0,4,7,16,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,33,17,14,21,0,1,21,1,15,16,22,0,6,11,14,21,0,1,21,1,19,0,22,17,21,1,17,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,9,7,21,1,17,0,8,7,0,22,19,3,2,21,1,0,21,0,6,21,1,11,0,24,17,0,8,0,22,0,12,21,0,7,17,17,8,16,21,1,1,21,1,8,21,0,1,21,1,7,15,91,8,8,16,0,7,0,22,17,22,0,11,11,14,21,0,1,0,18,21,0,10,21,1,7,0,7,8,0,7,21,1,6,21,0,9,8,3,2,0,16,21,0,5,17,7,0,4,21,1,6,0,3,8,9,15,92,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,34,17,14,21,0,1,21,1,15,16,22,0,3,11,14,21,0,1,21,0,3,21,1,11,0,21,17,21,1,8,15,93,8,16,25,21,0,1,21,1,15,16,22,0,3,11,14,21,0,1,21,1,19,0,22,17,22,0,4,11,21,1,17,0,8,7,0,22,17,22,0,5,11,14,21,0,3,0,17,16,0,18,21,1,3,21,0,1,0,15,16,7,0,16,0,8,21,1,6,21,0,5,8,21,1,7,0,6,8,19,7,21,0,5,0,17,16,0,15,21,0,4,17,17,25,21,0,2,0,0,16,0,5,0,36,17,14,21,0,2,0,18,21,1,9,7,16,0,15,16,21,1,17,0,8,7,0,22,17,0,5,0,37,17,14,21,0,1,21,1,15,16,22,0,3,11,14,21,0,2,0,18,21,1,12,21,1,6,21,0,3,8,0,8,0,13,21,1,6,21,0,3,0,7,16,8,19,7,16,0,15,16,21,1,17,0,8,7,0,22,17,0,5,0,38,17,14,21,0,1,15,94,15,95,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,12,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,39,17,14,21,0,1,21,1,15,16,22,0,3,11,14,21,0,1,21,1,73,21,0,3,0,17,16,0,18,0,7,21,1,6,0,22,0,7,21,0,3,17,8,7,16,17,25,21,0,2,21,1,9,16,0,5,0,40,17,14,21,0,1,21,1,15,16,22,0,3,11,14,21,0,3,0,9,21,0,2,17,21,1,13,16,0,8,21,0,3,17,0,7,22,0,2,13,14,21,0,1,21,1,73,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,17,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,5,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,96,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,26,21,1,23,8,16,22,0,12,11,14,21,1,3,21,0,10,7,0,16,21,0,12,21,1,7,0,16,8,19,21,0,7,3,2,21,1,0,0,13,21,1,6,21,0,12,21,1,15,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,7,0,16,8,15,97,3,2,21,1,0,15,98,8,7,16,0,15,21,0,6,17,25,21,1,18,21,1,5,21,1,21,21,0,1,7,0,20,0,18,21,0,1,7,8,8,25,21,0,1,21,1,33,21,1,34,7,21,0,2,17,0,15,16,21,1,17,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,35,7,16,21,1,17,0,7,0,8,0,13,19,0,7,21,1,2,19,7,0,21,17,0,6,0,22,17,25,21,0,1,0,15,16,0,16,0,21,17,21,1,37,16,22,0,3,11,14,21,0,1,0,15,16,0,18,21,1,37,21,1,36,21,0,3,19,7,16,21,1,17,0,8,7,0,22,17,0,5,0,41,17,14,21,0,3,21,1,17,0,8,7,0,22,17,0,17,16,0,15,21,0,3,17,0,18,21,1,3,21,1,58,21,1,7,0,16,8,7,7,21,0,1,17,25,21,0,2,21,1,39,21,0,1,17,21,1,13,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,12,21,0,2,17,17,25,21,0,2,21,0,1,3,2,0,16,21,0,1,21,1,11,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,99,21,0,2,0,16,0,21,17,7,8,25,21,0,1,3,1,25,21,0,2,21,1,51,16,21,1,52,0,22,17,0,5,0,45,17,14,21,0,2,21,1,58,16,22,0,2,12,14,21,0,2,0,18,21,1,10,7,16,21,1,17,21,1,45,7,16,0,5,0,46,17,14,21,0,2,21,1,17,21,1,47,7,16,22,0,3,11,14,21,0,1,21,1,37,16,21,1,17,21,1,47,7,16,22,0,4,11,14,21,0,1,21,0,4,21,1,50,21,0,3,17,21,1,8,15,100,8,16,0,15,21,0,2,17,25,15,101,22,0,3,11,14,15,102,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,4,21,1,60,8,21,1,1,21,1,4,21,1,48,8,21,1,33,0,16,7,21,1,50,21,1,7,21,1,3,21,1,42,21,1,54,0,22,19,21,1,55,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,64,21,0,5,7,21,0,2,17,22,0,6,11,21,1,49,0,21,17,22,0,7,11,14,21,0,4,22,0,8,11,14,15,103,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,64,21,0,5,7,21,1,33,21,1,55,21,1,7,21,1,43,8,21,1,55,21,1,44,0,21,19,3,2,21,1,0,21,1,1,21,1,53,0,21,19,8,7,21,1,51,21,1,5,21,1,62,8,19,21,0,2,17,22,0,6,11,14,15,104,22,0,7,11,14,21,1,1,21,1,48,9,21,0,7,21,1,1,0,18,21,1,48,7,9,3,3,21,1,0,21,1,51,21,1,7,21,1,52,8,21,1,54,0,21,21,1,7,21,1,49,8,19,8,22,0,7,12,14,21,0,1,21,0,7,21,0,6,0,16,21,1,6,21,1,50,21,1,3,21,1,55,7,0,22,19,8,16,17,21,1,33,21,0,4,7,21,0,2,21,0,7,21,0,6,0,16,0,21,17,17,17,21,1,49,16,25,0,29,21,1,68,21,0,1,8,25,21,0,1,21,1,51,16,21,1,53,0,22,17,0,5,0,49,17,14,21,0,1,21,1,69,21,1,48,7,16,21,1,17,21,0,4,7,21,0,2,17,25,21,0,1,22,0,3,11,14,15,105,15,106,3,2,21,1,0,21,1,2,21,1,4,21,1,36,21,1,48,21,0,2,19,8,8,25,21,0,1,21,1,37,21,1,5,21,1,62,8,21,0,2,17,22,0,3,11,14,21,0,3,0,18,21,1,50,7,16,22,0,4,11,21,1,17,21,1,44,7,0,22,17,22,0,5,11,14,21,0,4,21,1,55,21,0,5,17,21,1,52,0,22,17,21,1,17,21,1,45,7,16,0,5,0,53,17,14,21,0,3,21,1,33,21,1,74,21,1,6,0,22,21,1,55,21,0,5,17,0,17,16,21,1,7,21,1,54,8,8,7,21,0,5,21,1,56,21,0,4,17,17,22,0,6,11,14,21,0,6,21,1,17,21,1,36,7,16,0,5,0,54,17,14,21,0,3,21,1,33,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,51,21,0,5,17,17,21,1,17,21,1,54,7,16,22,0,7,11,14,21,0,1,21,1,60,21,1,5,21,1,20,8,21,0,2,17,21,1,60,21,0,6,0,16,0,21,17,21,1,20,21,0,7,3,1,17,17,25,15,107,22,0,3,11,14,21,0,1,21,1,60,21,1,60,21,1,37,21,1,4,21,1,20,21,1,6,21,1,1,21,1,50,21,1,5,21,1,55,8,21,0,2,19,21,1,44,0,21,19,0,17,21,1,4,0,18,0,22,7,8,9,8,8,19,16,0,21,21,1,72,21,0,3,8,21,0,2,17,25,21,0,1,21,1,51,16,21,1,53,0,22,17,0,5,0,56,17,14,21,0,1,21,1,50,16,21,1,54,0,22,17,0,17,16,0,18,21,0,1,21,1,7,21,1,76,8,7,16,25,21,0,1,21,1,37,16,21,1,50,21,1,7,21,1,55,8,21,1,44,0,21,19,0,17,21,1,4,0,18,0,22,7,8,9,21,1,3,21,1,20,7,21,1,1,19,21,1,78,21,1,2,19,21,0,2,21,1,50,16,17,22,0,3,11,14,21,0,1,21,1,78,21,0,2,21,1,43,21,0,3,17,21,1,44,21,0,3,21,1,55,16,17,21,1,54,0,21,21,1,49,21,0,2,17,21,1,40,0,29,17,21,1,47,21,0,3,17,17,17,25,21,0,1,21,1,51,16,21,1,53,0,22,17,0,5,0,57,17,14,21,0,1,21,1,50,16,21,1,54,0,22,17,0,17,16,0,18,21,0,1,21,1,7,21,1,79,8,7,16,25,21,0,1,0,0,16,0,5,0,58,17,14,21,0,2,21,1,51,16,21,1,52,0,22,17,0,5,0,59,17,14,21,0,1,21,1,37,16,21,1,50,21,1,5,21,1,53,8,21,0,2,17,0,5,0,60,17,14,21,0,2,21,1,60,16,0,18,21,1,10,7,16,21,1,17,21,1,45,7,16,0,5,0,61,17,14,21,0,1,21,1,37,16,21,1,78,21,0,2,21,1,50,16,17,22,0,3,11,14,21,0,3,21,1,54,0,22,17,21,1,53,21,0,2,17,21,1,17,21,1,45,7,16,0,5,0,62,17,14,21,0,1,21,0,2,21,1,50,16,21,1,48,0,21,17,21,1,8,15,108,8,21,0,2,17,25,21,0,1,21,1,83,21,1,6,0,18,21,0,2,7,8,16,25,21,0,1,21,1,50,21,1,5,21,1,51,8,21,0,2,17,0,5,0,63,17,14,21,0,1,21,1,83,21,0,2,17,25,21,0,2,21,1,51,16,21,1,48,0,21,17,25,0,29,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,50,7,16,21,1,87,16,0,18,15,109,7,16,25,21,1,1,21,1,17,0,18,21,1,20,21,1,6,21,1,60,8,7,7,3,0,21,1,48,16,19,22,0,3,11,14,21,0,1,0,0,16,0,5,0,64,17,14,21,0,1,0,18,21,1,37,7,16,22,0,4,11,14,21,0,4,21,1,60,16,0,16,0,21,17,21,1,50,16,22,0,5,11,14,21,0,4,0,18,21,1,50,7,16,21,1,51,21,0,5,17,21,1,60,16,21,1,17,21,1,45,7,16,0,5,0,65,17,14,21,0,1,21,1,51,16,21,1,52,21,0,5,17,0,5,0,66,17,14,21,0,1,22,0,6,11,21,1,51,16,22,0,7,11,21,1,85,16,22,0,8,11,21,1,33,15,110,7,21,0,1,21,1,37,16,17,22,0,9,11,14,21,0,9,21,0,3,16,21,1,36,21,0,4,0,18,21,1,78,21,1,6,21,0,7,8,7,16,17,0,5,0,67,17,14,21,0,9,0,18,15,111,7,16,21,0,3,16,22,0,10,11,14,21,0,1,21,1,87,21,0,9,17,21,1,33,21,1,74,21,1,6,0,18,21,1,48,7,8,7,21,0,10,17,21,1,49,16,25,21,0,1,21,1,51,16,21,1,51,0,22,17,0,5,0,68,17,14,21,0,1,0,18,21,1,9,7,16,21,1,17,21,1,45,7,16,0,5,0,69,17,14,21,0,1,21,1,53,0,29,17,21,1,17,21,1,45,7,16,0,5,0,70,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,85,21,1,4,0,18,15,112,7,8,21,0,4,9,7,16,25,21,0,1,0,0,16,0,5,0,71,17,14,21,1,89,21,1,1,7,22,0,3,11,14,21,0,1,21,0,3,0,18,21,0,3,7,21,1,17,0,18,0,18,21,1,20,21,1,6,21,1,60,8,7,7,7,3,0,21,1,48,16,21,1,48,16,19,3,2,21,1,0,21,1,36,21,1,48,0,22,19,8,16,25,21,0,1,0,0,16,0,5,0,72,17,14,21,0,2,21,1,36,16,21,1,48,0,22,17,22,0,3,11,14,21,0,2,21,1,50,15,113,3,2,21,1,0,21,0,3,8,16,22,0,4,11,14,21,0,1,21,1,37,16,21,1,50,21,1,5,21,1,53,8,21,0,4,17,0,5,0,74,17,14,21,0,1,21,1,37,16,21,1,78,21,1,6,21,1,50,8,21,0,4,17,21,1,51,21,0,4,17,21,1,17,21,1,45,7,16,0,5,0,75,17,14,21,0,1,21,1,2,21,1,89,21,0,1,21,1,7,21,1,74,8,7,9,15,114,3,2,21,1,0,21,0,3,8,21,0,2,17,25,21,0,2,21,1,51,16,21,1,51,0,22,17,0,5,0,76,17,14,21,0,1,21,1,37,16,22,0,3,11,21,1,50,21,1,5,21,1,51,8,21,0,2,17,0,5,0,77,17,14,21,0,2,0,18,21,1,9,7,16,21,1,17,21,1,45,7,16,0,5,0,78,17,14,21,0,3,21,1,48,21,1,45,21,1,55,21,1,7,21,1,52,8,19,21,0,2,17,21,1,17,21,1,45,7,16,0,5,0,79,17,14,0,21,21,1,48,21,0,2,17,21,1,47,21,0,3,17,21,1,54,21,0,2,17,22,0,2,12,14,21,0,2,21,1,50,16,21,1,56,21,1,6,21,1,85,8,16,21,1,55,16,21,1,17,21,1,1,21,1,47,21,0,3,21,1,7,0,16,8,19,21,1,54,21,0,2,21,1,7,0,16,8,19,7,0,21,17,21,1,3,0,16,7,21,0,1,21,1,60,16,17,25,21,0,2,0,18,21,0,1,21,1,7,21,1,95,8,7,16,25,21,0,1,21,1,51,21,1,6,0,21,8,21,1,17,21,1,46,7,9,21,1,5,21,1,3,21,1,55,7,8,21,0,2,17,22,0,3,11,14,21,0,1,0,21,21,0,3,3,2,15,115,3,2,21,1,0,0,21,21,1,51,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,116,22,0,8,11,14,21,0,4,21,1,51,21,1,6,0,21,8,21,1,8,21,0,1,8,9,21,0,8,3,2,0,16,21,0,6,21,1,50,0,22,17,17,25,21,0,1,22,0,2,11,14,21,1,48,21,1,6,0,21,8,21,1,8,15,117,8,25,21,0,2,21,1,51,16,21,1,3,21,1,55,7,0,22,17,22,0,5,11,14,21,0,5,21,1,53,0,21,17,0,5,0,80,17,14,21,0,1,21,1,51,16,21,1,53,21,0,5,17,0,5,0,81,17,14,21,0,2,21,1,19,0,22,17,22,0,6,11,21,1,17,21,1,47,7,16,22,0,7,11,14,0,21,21,1,98,21,0,2,21,1,60,16,21,1,7,0,16,8,21,1,5,21,0,4,8,7,21,0,7,17,22,0,8,11,14,21,0,2,21,1,50,16,0,22,0,22,21,1,7,21,1,55,21,1,4,21,1,85,8,8,21,1,47,21,0,7,19,0,18,21,1,54,21,1,6,21,0,7,8,21,1,7,21,0,8,8,7,9,21,1,3,21,1,53,7,0,21,19,21,1,17,21,1,45,7,9,3,2,21,1,0,21,1,48,21,1,6,0,21,8,8,16,0,5,0,82,17,14,21,0,1,21,1,51,16,21,1,3,21,1,55,7,21,0,5,17,22,0,9,11,14,21,0,1,21,1,19,21,0,9,17,22,0,10,11,14,21,0,10,21,1,97,21,0,6,17,22,0,11,11,14,21,0,11,21,1,17,21,1,98,21,0,1,21,1,60,16,21,1,7,0,16,8,21,1,7,21,0,4,21,1,6,21,0,2,21,1,60,16,21,1,7,0,16,8,8,8,7,7,16,22,0,12,11,14,21,1,3,0,21,7,21,1,53,21,0,12,21,1,6,21,1,47,21,1,6,21,0,6,21,1,17,21,1,47,7,16,8,8,19,22,0,13,11,14,21,0,9,21,1,85,16,0,18,21,0,1,21,1,37,16,21,1,7,0,16,8,7,16,21,1,17,21,1,47,7,21,1,85,9,21,1,7,21,1,60,8,16,21,1,47,21,0,10,21,1,17,21,1,47,7,16,17,0,18,15,118,21,1,6,21,0,2,21,1,50,16,8,7,16,25,21,0,1,22,0,2,11,14,21,1,71,21,1,45,7,21,1,56,9,0,19,21,1,45,7,21,1,71,21,1,54,7,9,3,2,0,16,21,0,1,17,22,0,3,11,14,15,119,25,21,0,1,21,1,51,16,21,1,53,0,22,17,0,5,0,84,17,14,21,0,1,21,1,101,16,22,0,3,11,14,21,0,1,21,1,50,16,21,1,85,16,0,18,0,22,21,1,1,21,0,1,21,1,51,21,1,48,0,22,19,21,1,8,21,1,69,21,1,48,7,8,16,21,1,74,21,0,3,17,21,1,7,0,16,8,21,1,5,21,1,37,8,0,22,21,1,7,21,1,55,8,19,3,2,21,1,0,21,1,48,21,1,6,0,21,8,8,7,16,21,1,74,21,0,3,0,4,21,1,6,21,1,33,0,22,7,8,16,17,25,21,0,2,21,1,51,16,22,0,3,11,14,21,0,1,21,1,51,16,21,1,53,21,0,3,17,0,5,0,85,17,14,21,0,1,21,0,3,21,1,68,21,1,85,8,21,0,2,21,1,37,16,17,21,0,3,21,1,68,21,1,36,8,21,0,2,17,25,21,0,1,21,1,36,21,1,51,0,21,19,21,1,8,21,1,48,8,16,22,0,1,12,14,21,0,2,21,1,51,16,21,1,52,0,22,17,0,5,0,87,17,14,21,0,2,21,1,60,16,22,0,2,12,14,21,0,1,21,1,37,16,21,1,50,21,1,5,21,1,53,8,21,0,2,17,0,5,0,88,17,14,21,0,2,21,1,60,16,0,18,21,1,10,7,16,21,1,17,21,1,45,7,16,0,5,0,89,17,14,21,0,2,21,1,107,16,21,1,56,16,21,1,17,21,1,54,7,16,21,1,55,21,0,1,21,1,51,16,17,22,0,3,11,14,21,0,3,21,1,48,21,0,2,17,21,1,17,21,1,45,7,16,0,5,0,90,17,14,21,0,3,21,1,85,16,21,1,1,21,1,87,21,1,3,21,1,107,21,1,4,21,1,56,8,7,19,21,0,2,17,21,1,92,21,0,2,17,22,0,2,12,14,21,0,1,21,1,37,16,21,1,93,21,0,2,17,0,18,21,1,17,21,1,43,7,7,16,21,1,85,16,0,18,21,1,3,21,0,1,7,21,1,96,21,1,74,21,1,6,21,0,2,8,19,7,16,25,21,0,1,21,1,106,21,1,6,21,0,2,8,21,1,111,21,1,7,21,1,69,21,1,63,7,8,9,21,1,5,21,1,106,8,21,0,2,17,25,21,0,1,15,120,21,0,5,21,1,114,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,0,1,0,0,16,21,1,116,16,14,21,0,1,21,1,51,16,21,1,51,0,21,17,21,1,116,16,14,21,0,1,21,1,114,16,25,21,0,1,21,1,51,16,21,1,51,0,22,17,21,1,116,16,14,21,0,1,0,18,21,1,10,7,16,21,1,17,21,1,45,7,16,21,1,116,16,14,21,0,1,21,1,81,21,1,6,0,22,8,21,1,53,21,1,81,21,1,6,0,29,8,19,21,1,17,21,1,45,7,9,16,21,1,116,16,14,21,0,1,0,3,16,25,21,1,3,21,1,3,0,21,7,0,5,0,92,19,3,1,21,1,92,21,0,1,21,1,74,0,22,17,17,7,21,1,114,21,1,48,21,1,106,21,0,1,21,1,74,0,21,17,19,21,1,114,9,19,25,21,0,1,21,1,117,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,66,15,121,8,16,14,21,0,1,22,0,9,11,14,15,122,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,55,16,21,0,10,21,1,1,21,1,118,21,0,4,7,21,0,2,19,7,16,22,0,12,11,14,21,0,6,0,21,21,1,66,21,1,3,21,0,11,21,0,12,3,2,7,21,1,114,0,21,21,1,7,21,1,48,8,19,21,1,114,21,1,42,19,8,16,25,21,1,18,21,1,5,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,57,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,17,0,8,21,2,6,21,0,1,0,14,16,21,2,7,0,16,8,0,12,21,0,5,21,2,7,0,16,8,19,8,7,0,22,17,0,5,0,31,17,14,21,0,5,21,2,17,0,8,7,0,22,17,0,17,16,0,18,21,0,1,0,15,16,21,2,7,0,16,8,21,0,4,21,0,2,0,15,16,21,2,7,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,17,0,8,21,2,6,21,0,7,21,2,7,0,16,8,0,12,21,0,5,21,2,7,0,16,8,19,8,7,0,22,17,0,5,0,32,17,14,21,0,6,0,7,21,0,1,0,12,16,17,0,17,16,21,2,17,0,8,21,2,6,0,6,21,2,6,21,0,6,8,21,2,3,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,5,0,18,21,2,3,21,0,10,7,0,16,0,6,21,2,6,0,8,21,2,6,21,0,8,8,8,19,21,0,4,21,0,9,21,2,7,0,16,8,19,7,8,21,0,9,21,2,15,16,17,0,15,16,0,15,21,0,7,17,25,21,0,1,21,2,22,21,0,4,7,21,0,2,17,25,21,0,1,0,18,15,123,21,0,2,7,7,16,25,21,0,2,0,18,15,124,21,0,1,7,7,16,25,21,1,6,0,8,0,23,17,0,13,21,0,1,21,2,17,21,2,13,7,16,22,1,10,12,0,7,21,0,1,21,2,17,21,2,14,7,16,22,1,9,12,17,17,25,21,0,1,14,21,2,3,0,21,7,21,2,12,0,21,21,2,98,21,1,8,21,2,7,0,16,8,21,2,5,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,6,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,14,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,17,15,125,7,21,1,6,0,17,16,17,25,21,0,1,0,18,21,2,10,7,16,21,2,17,0,8,7,0,22,17,0,5,0,35,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,3,0,16,7,21,1,3,0,17,16,0,18,0,7,21,2,6,21,0,3,8,7,16,0,19,21,2,1,21,2,3,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,7,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,126,7,16,25,21,0,1,21,2,19,0,22,17,22,0,3,11,21,2,17,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,6,0,8,21,2,6,21,0,4,8,8,21,2,3,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,7,0,16,8,7,16,25,21,0,2,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,21,2,51,21,0,4,17,25,21,1,3,0,17,16,0,18,21,2,2,7,21,2,6,0,1,8,15,127,21,2,6,0,15,8,3,2,21,2,0,21,1,4,21,2,48,0,21,17,8,21,0,1,17,25,21,0,1,21,2,10,16,0,5,0,47,17,14,21,0,1,0,17,16,25,21,0,1,21,2,51,16,21,2,51,0,22,17,0,5,0,48,17,14,21,0,1,0,18,21,1,3,7,16,21,2,17,0,18,21,2,20,21,2,6,21,2,60,8,7,7,3,0,21,2,48,16,17,25,21,1,9,21,1,7,21,2,54,21,0,4,17,7,22,0,5,11,14,21,0,1,21,2,33,21,0,5,7,21,2,2,21,2,4,0,18,21,0,1,21,2,7,21,0,5,8,7,8,21,2,1,21,2,4,0,18,21,2,1,21,0,5,21,0,2,19,7,8,21,1,8,3,4,21,2,0,21,2,36,21,2,5,21,2,62,8,21,2,52,21,0,4,21,2,44,0,21,17,19,21,2,46,0,21,21,2,52,21,0,4,17,21,2,45,21,1,7,17,19,21,2,59,0,23,19,21,2,17,21,2,54,21,2,6,0,23,21,2,7,21,2,47,8,8,7,9,8,21,0,2,17,25,21,0,2,0,17,16,0,18,21,0,1,21,2,37,16,21,2,7,0,16,8,7,16,22,0,3,11,14,21,0,1,21,2,19,21,0,2,17,22,0,4,11,21,2,17,21,2,47,7,16,22,0,5,11,14,21,0,3,21,2,17,21,2,47,7,16,0,17,16,0,18,21,2,1,21,2,47,21,0,5,19,21,2,54,21,0,5,0,17,16,21,2,60,21,0,4,17,19,21,2,4,0,18,21,0,1,21,2,60,16,21,2,7,0,16,8,7,8,7,16,21,2,60,21,0,3,17,25,21,0,1,21,2,51,16,21,2,53,0,22,17,0,5,0,50,17,14,21,0,1,21,1,3,21,0,2,17,25,21,0,2,21,2,51,16,21,2,52,0,22,17,0,5,0,51,17,14,21,0,1,21,2,37,16,21,2,50,21,2,5,21,2,53,8,21,0,2,17,0,5,0,52,17,14,21,0,2,21,2,50,16,22,0,3,11,14,21,0,2,21,2,60,16,21,2,7,0,16,8,22,0,4,11,14,21,0,1,21,0,3,21,2,48,0,21,17,21,2,8,15,128,1,8,0,21,17,25,21,0,2,21,2,9,16,0,5,0,55,17,14,21,0,1,21,2,50,16,22,0,3,11,14,0,21,21,2,48,21,0,2,17,22,0,4,11,14,21,0,2,21,2,42,16,22,0,5,11,21,2,43,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,8,21,2,54,8,21,0,6,21,2,55,21,0,3,17,17,21,0,1,21,2,51,16,21,2,50,0,22,17,21,2,8,15,129,1,8,21,0,1,17,22,0,9,11,14,21,0,9,0,18,21,0,1,21,2,60,16,21,2,7,0,16,8,7,16,21,0,5,21,2,48,21,0,3,17,21,2,8,15,130,1,21,0,1,7,8,16,21,2,60,21,0,7,17,25,21,0,2,21,2,60,16,21,2,1,21,2,61,21,2,5,0,18,21,2,54,7,8,21,2,56,19,21,1,3,17,21,2,33,21,0,1,21,2,7,21,2,74,21,2,6,0,18,21,2,48,7,8,8,7,16,21,2,49,21,2,60,21,2,37,21,2,4,21,0,1,21,2,37,16,21,2,81,21,2,6,21,2,50,8,21,0,2,17,21,2,7,21,2,20,8,8,19,16,25,21,0,1,21,2,50,21,2,6,21,1,4,8,21,2,8,15,131,1,8,16,14,21,1,5,0,16,0,22,21,2,54,21,1,3,17,22,1,3,12,17,25,21,0,2,21,2,85,16,0,18,21,2,47,21,2,6,21,0,1,21,2,51,21,1,8,17,8,21,2,3,21,2,94,7,21,1,6,19,21,2,37,21,2,7,0,16,8,21,0,1,19,7,16,25,21,0,1,21,2,78,16,0,18,21,2,17,21,2,54,7,7,16,22,0,3,11,14,21,0,3,21,2,81,0,29,17,21,2,87,21,0,1,17,21,2,55,21,0,3,21,2,86,16,0,16,0,21,17,21,2,85,16,17,25,21,0,1,14,21,1,6,0,16,21,1,7,17,21,2,1,0,22,21,2,54,21,1,7,17,22,1,7,12,17,25,21,0,1,21,2,51,16,21,2,51,0,22,17,0,5,0,73,17,14,21,0,1,0,18,21,2,50,7,16,25,21,0,2,0,18,21,2,89,21,2,1,7,7,16,21,2,47,21,1,4,21,2,81,0,22,17,21,2,86,16,21,2,20,0,22,3,1,17,0,19,21,2,47,7,16,21,2,86,16,17,21,2,17,0,18,0,18,21,2,54,7,7,7,16,0,18,21,0,1,21,2,19,21,1,4,21,2,50,16,17,21,2,20,21,1,4,21,2,17,21,2,47,7,16,3,1,17,21,2,3,21,2,60,7,21,0,1,17,21,2,7,21,2,74,8,7,16,25,21,0,1,21,2,50,21,2,5,21,2,55,8,21,0,2,17,21,2,47,16,22,0,3,11,14,21,0,1,21,2,50,21,2,5,21,2,43,8,21,0,2,17,22,0,4,11,14,21,0,1,15,132,1,21,2,6,21,2,50,21,2,54,21,0,4,21,2,85,16,21,2,54,0,22,17,21,2,55,16,19,8,21,2,5,15,133,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,134,1,21,1,7,3,2,21,2,0,21,2,51,21,2,6,21,1,6,8,8,22,0,5,11,14,0,21,21,0,5,16,25,15,135,1,22,0,3,11,14,0,29,21,0,3,0,22,21,2,54,21,0,1,17,17,21,2,54,0,22,17,25,21,0,2,21,2,99,21,0,1,21,2,7,21,1,13,8,7,16,25,21,0,2,21,2,51,16,21,2,3,21,2,55,7,0,22,17,22,0,3,11,14,21,0,3,21,2,53,0,21,17,0,5,0,83,17,14,21,0,1,21,2,18,16,21,2,1,21,2,4,21,0,3,21,2,68,0,21,8,8,21,2,1,21,0,3,21,2,68,21,2,48,8,3,2,21,2,0,21,0,3,21,2,48,0,21,17,8,21,2,5,0,18,21,2,37,7,8,21,1,3,9,3,2,21,2,0,21,0,2,21,2,50,16,21,2,48,0,21,17,8,15,136,1,3,2,21,2,0,21,2,60,21,2,4,21,2,50,8,21,2,48,0,26,19,21,2,5,21,2,45,8,8,21,0,2,17,25,21,0,1,25,21,0,1,21,2,9,16,0,5,0,93,17,14,21,0,1,21,2,43,21,1,8,17,22,1,8,12,14,21,0,1,21,2,44,21,1,7,17,22,1,7,12,25,21,0,1,21,2,54,0,21,17,21,2,85,16,21,2,92,21,1,9,3,1,17,0,19,21,2,2,21,2,4,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,8,0,18,0,8,21,3,6,21,2,7,8,7,8,16,21,3,7,0,16,8,21,3,5,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,137,1,3,2,0,16,21,0,3,0,13,0,26,17,17,22,0,11,11,14,15,138,1,22,0,12,11,14,15,139,1,15,140,1,21,0,12,3,3,21,3,0,15,141,1,8,22,0,13,11,14,21,0,1,0,18,21,0,1,21,3,7,15,142,1,8,7,16,25,21,1,6,21,1,7,0,12,21,0,1,17,21,3,8,15,143,1,8,16,25,21,0,1,21,3,42,21,2,4,17,0,18,21,0,2,21,3,7,0,16,8,7,16,25,21,0,1,0,22,21,3,55,21,1,3,17,21,3,48,21,0,2,17,21,3,8,21,3,69,21,0,0,21,3,6,21,0,2,21,3,54,0,22,17,8,7,8,16,21,2,3,21,0,2,21,1,4,16,17,25,21,0,2,21,3,19,0,22,17,22,0,3,11,21,3,20,22,1,7,13,14,21,0,3,21,3,17,21,3,47,7,16,22,1,8,12,21,3,1,21,3,4,0,17,8,0,18,21,3,54,7,21,3,47,19,21,0,1,17,25,21,1,6,21,3,55,21,1,5,17,21,3,47,21,1,8,17,0,17,16,0,18,21,0,4,0,1,16,21,3,60,16,0,16,0,21,17,7,16,21,3,20,21,3,3,21,3,20,7,3,2,21,3,0,21,1,4,8,21,0,1,21,3,60,16,17,25,21,0,1,22,2,4,12,21,3,3,0,16,7,21,2,6,17,22,2,5,12,14,0,29,22,2,3,12,25,21,0,2,0,18,21,0,1,21,3,7,0,16,8,7,16,25,21,0,1,21,3,51,21,0,2,17,0,19,21,3,45,7,16,21,3,17,21,3,54,7,16,22,0,3,11,14,21,0,3,21,3,85,16,0,18,21,0,2,21,3,7,0,16,8,7,16,21,3,17,21,3,47,7,16,22,0,4,11,14,21,0,3,21,3,49,21,3,6,21,1,4,8,21,3,8,21,0,2,21,0,1,3,2,21,3,7,21,3,33,0,16,7,8,21,3,4,15,144,1,8,8,16,14,21,0,4,25,21,1,4,21,3,54,21,3,6,21,0,1,8,21,3,5,21,2,5,8,21,1,3,17,21,3,51,21,3,6,0,21,8,21,3,8,21,0,1,21,3,54,0,22,17,21,3,4,21,1,5,8,8,16,25,21,0,1,0,22,21,3,7,21,3,49,8,21,3,8,15,145,1,8,21,0,2,17,25,21,0,2,21,3,102,16,21,3,86,16,22,0,3,11,14,21,0,1,21,3,101,21,0,2,21,3,74,21,0,3,17,17,21,3,3,21,3,55,7,0,22,17,21,3,44,0,21,17,21,3,3,21,3,74,7,21,0,3,17,22,0,4,11,14,21,0,1,21,1,3,21,3,68,21,3,36,8,21,0,2,21,3,74,21,0,4,17,17,21,2,2,21,3,8,21,3,47,21,3,6,21,3,55,21,3,6,21,0,4,8,8,21,3,54,21,3,2,19,8,21,0,2,21,3,50,16,17,25,21,0,1,21,1,8,0,7,0,22,17,21,4,8,21,1,9,0,7,0,22,19,21,4,8,15,146,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,17,21,4,55,7,16,21,4,47,16,22,2,3,12,14,21,0,1,21,4,17,21,4,43,7,16,21,4,47,21,1,4,17,22,1,4,12,25,0,23,21,4,39,21,0,2,17,21,4,43,16,22,0,3,11,21,4,54,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,42,0,23,17,21,4,47,21,0,5,17,21,4,54,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,Infinity,-Infinity,-1,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("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("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("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("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 be a list"),str("Grouping argument must consist of integers"),str("Grouping argument values cannot be less than ¯1"),str("Group Indices argument must be an array"),str("Group right argument must be an array"),str("Group left argument must consist of lists"),str("Group left argument length 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("No monadic form: ⊐"),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 not found"),str("Repetition numbers must be integers")])
+ ,[[0,1,0,126],[2,0,2541,6],[0,0,2568,3],[0,0,2572,3],[0,0,2576,3],[1,0,2580,5],[2,0,2598,6],[2,0,2613,6],[2,0,2632,6],[2,0,2654,6],[2,0,2676,6],[0,0,2708,3],[0,0,2719,3],[0,0,2728,3],[1,0,2737,9],[0,0,2850,3],[0,0,2890,4],[1,1,2966,4],[1,1,3039,3],[0,0,3103,3],[0,0,3114,5],[2,0,3198,12],[0,0,3404,4],[0,0,3453,6],[0,0,3543,4],[0,0,3699,4],[0,0,3760,4],[2,0,3862,16],[1,1,4092,2],[0,0,4116,3],[0,0,4143,3],[0,0,4169,3],[0,0,4208,4],[0,0,4305,3],[0,0,4332,3],[0,0,4354,3],[0,0,4376,3],[0,0,4387,3],[0,0,4416,3],[0,0,4422,5],[0,0,4540,5],[0,0,4573,3],[0,0,4582,3],[1,1,4588,2],[2,0,4657,10],[2,0,4716,8],[1,1,4903,2],[1,0,4913,5],[2,1,4955,4],[0,0,4991,8],[0,0,5227,4],[0,0,5308,3],[0,0,5358,4],[0,0,5479,3],[0,0,5529,4],[0,0,5695,3],[0,0,5713,3],[0,0,5747,3],[0,0,5761,7],[0,0,5808,11],[1,0,6073,8],[0,0,6191,4],[0,0,6275,5],[0,0,6434,4],[0,0,6647,3],[0,0,6665,4],[1,0,6737,9],[1,1,6806,3],[1,0,6830,14],[1,1,7264,4],[0,0,7313,4],[0,0,7454,4],[0,0,7522,4],[0,0,7791,3],[2,0,7831,6],[0,0,7859,3],[0,0,7896,3],[0,0,7983,3],[1,1,8038,2],[2,0,8046,13],[1,1,8197,2],[1,1,8211,2],[1,1,8215,2],[0,0,8219,3],[0,0,8231,3],[0,0,8254,3],[1,0,8275,6],[1,0,8392,11],[1,0,8613,5],[0,0,8628,3],[0,0,8642,3],[0,0,8656,3],[1,0,8701,8],[0,0,8839,8],[0,0,9006,5],[0,0,9081,3],[0,0,9098,3],[0,0,9104,4],[0,0,9153,3],[1,0,9163,5],[0,0,9174,3],[0,0,9220,3],[0,0,9240,3],[1,0,9294,6],[0,0,9447,6],[0,0,9575,3],[0,0,9605,5],[0,0,9704,10],[0,0,9889,3],[0,0,9989,3],[0,0,10031,3],[0,0,10084,4],[0,0,10144,3],[0,0,10175,3],[0,0,10205,3],[0,0,10323,6],[0,0,10430,6],[0,0,10480,4],[0,0,10510,3],[0,0,10529,4],[1,1,10687,2],[0,0,10691,3],[1,0,10734,5],[1,0,10771,5],[1,0,10782,5],[0,0,10793,14],[0,0,10969,3],[0,0,10990,3],[0,0,11014,3],[0,0,11070,4],[1,0,11130,5],[0,0,11197,3],[0,0,11226,3],[0,0,11243,5],[0,0,11354,3],[0,0,11409,3],[0,0,11433,5],[0,0,11562,3],[0,0,11602,3],[0,0,11685,3],[0,0,11719,3],[0,0,11748,3],[0,0,11766,3],[0,0,11783,3],[0,0,11812,3],[0,0,11855,6],[0,0,11934,3]]
);
// Compiler
diff --git a/src/pr.bqn b/src/pr.bqn
index a93bd4eb..4c789a3c 100755
--- a/src/pr.bqn
+++ b/src/pr.bqn
@@ -34,7 +34,7 @@ names ↩ (⥊¨kt⊏chr)⌾(ki⊸⊏)names
E_isdef ← (3≤≠)◶⟨0,∧´⟨chr," ","←↩"⟩∊˜¨3⊸↑⟩
E_proc ← ({𝕨∘𝕩}´ {𝕨•_R_𝕩}⟜⥊¨⟜(≠↑chr˜) def)∘{
l←≠chr
- q←≠`𝕩∊"""'" ⋄ f←¬∨`q¬⊸∧𝕩='#'
+ q←≠`𝕩='"' ⋄ q∨↩≠`q<𝕩=''' ⋄ f←¬∨`q<𝕩='#'
∾ (((l×f/q)+chr⊸⊐) (≥⟜l)◶⟨⊑⟜names,⥊∘⊢⟩¨ ⊢) f/𝕩
}
E_redef ← { # handles [fmd] [←↩]
diff --git a/src/r.bqn b/src/r.bqn
index 60a2ba0f..c61034ae 100644
--- a/src/r.bqn
+++ b/src/r.bqn
@@ -22,7 +22,7 @@ Nat←IsArray◶⟨0⊸≤×⌊⊸=,0⟩
≠ ← (0<=)◶⟨1⋄0⊑≢⟩ # LIMITED to monadic case
_fold←{
- ! 1==𝕩
+ "Argument to fold must be a list" ! 1==𝕩
l←≠v←𝕩 ⋄ F←𝔽
r←𝕨 (0<l)◶{𝕩⋄Identity f}‿{l↩l-1⋄l⊑𝕩}⊘⊣ 𝕩
{r↩(𝕩⊑v)F r}⌜(l-1)⊸-⌜↕l
@@ -38,12 +38,12 @@ Cell←{(𝕨⊸+⊑𝕩˜)⌜↕(≠𝕩)-𝕨}⟜≢
_eachd←{
_d←{ # Equal ranks
p←≢𝕨
- ! 1(⊑⟜p=⊑⟜(≢𝕩))⊸×´↕=𝕨
+ "Equal-rank argument shapes don't agree" ! 1(⊑⟜p=⊑⟜(≢𝕩))⊸×´↕=𝕨
p⥊ (⊑⟜(⥊𝕨)𝔽⊑⟜(⥊𝕩))⌜↕1×´p
}
_e←{ # 𝕨 has smaller or equal rank
p←≢𝕨 ⋄ k←=𝕨 ⋄ q←≢𝕩
- ! 1(⊑⟜p=⊑⟜q)⊸×´↕k
+ "Argument shape prefixes don't agree" ! 1(⊑⟜p=⊑⟜q)⊸×´↕k
l←1(q⊑˜k⊸+)⊸×´↕(=𝕩)-k
a←⥊𝕨 ⋄ b←⥊𝕩
q⥊⥊(≠a) (⊑⟜a𝔽l⊸×⊸+⊑b˜)⌜○↕ l
@@ -68,7 +68,7 @@ Cmp ← +○IsArray◶⟨
}
_grade_←{
- ! 1≤=𝕩
+ "Grade argument must have rank at least 1" ! 1≤=𝕩
l←≠𝕩
m←1×´1 Cell 𝕩
d←⥊𝕩
@@ -90,10 +90,10 @@ _grade_←{
}
Indices←{
- ! 1==𝕩
+ "Replication argument in Indices or Replicate must have rank 1" ! 1==𝕩
l←≠𝕩
{
- ! 1×´Nat⌜𝕩
+ "Amounts to replicate must be natural numbers" ! 1×´Nat⌜𝕩
k←l-1
N ← ((⊢+-×0=𝕩⊑˜⊢)`k⊸-⌜↕l)⊑˜k-⊢ # Next nonzero
E ← ⊑⟜(+`𝕩)
@@ -108,10 +108,10 @@ Transpose←{
}⍟(0<=)
SelSub←{
- ! IsArray 𝕨
- ! 1×´⥊Int⌜ 𝕨
+ "Right argument to Select must be an array" ! IsArray 𝕨
+ "Indices in Select must be integers" ! 1×´⥊Int⌜ 𝕨
l←≠𝕩
- ! 1×´⥊ ((-l)⊸≤×l⊸>)⌜ 𝕨
+ "Select indices out of range" ! 1×´⥊ ((-l)⊸≤×l⊸>)⌜ 𝕨
((⊢+l×0>⊢)⌜𝕨)(1==𝕩)◶{
c←1×´s←1 Cell 𝕩
𝕨((⥊𝕩)⊑˜c⊸×⊸+)⌜s⥊↕c
@@ -120,8 +120,15 @@ SelSub←{
}𝕩
}
-Reverse ← {!1≤=𝕩 ⋄ l←≠𝕩 ⋄ ((l-1)⊸-⌜↕l) Select 𝕩}
-Rot ← {!Int𝕨 ⋄ l←≠𝕩 ⋄ 𝕨-↩l×⌊𝕨÷l ⋄ ((𝕨+⊢-l×(l-𝕨)≤⊢)⌜↕l) Select 𝕩}
+Reverse ← {
+ "Reverse argument must have rank at least 1" ! 1≤=𝕩
+ l←≠𝕩
+ ((l-1)⊸-⌜↕l) Select 𝕩
+}
+Rot ← {
+ "Amount to rotate must be an integer" ! Int𝕨
+ l←≠𝕩 ⋄ 𝕨-↩l×⌊𝕨÷l ⋄ ((𝕨+⊢-l×(l-𝕨)≤⊢)⌜↕l) Select 𝕩
+}
_under_←{
i←↕l←1×´s←≢𝕩
@@ -149,7 +156,7 @@ Depth←IsArray◶0‿{1+0(⊣-≤×-)´Depth⌜⥊𝕩}
Merge←{
c←≢0⊑⥊𝕩
- ! 1×´(c≡≢)⌜⥊𝕩
+ "Elements in Merge argument must have matching shapes" ! 1×´(c≡≢)⌜⥊𝕩
𝕩⊑⟜Deshape˜⌜c⥊↕1×´c
}⍟(0<≠∘⥊)⍟IsArray
@@ -166,18 +173,18 @@ Merge←{
> ↩ Merge ⊘ ((1-≤) _perv)
≠ ↩ ≠ ⊘ ((1-=) _perv)
= ↩ = ⊘ (= _perv)
-≥ ← !∘0 ⊘ (≤˜_perv)
-≤ ↩ !∘0 ⊘ (≤ _perv)
+≥ ← ("No monadic form: ≥"!0˜) ⊘ (≤˜_perv)
+≤ ↩ ("No monadic form: ≤"!0˜) ⊘ (≤ _perv)
+ ↩ + _perv
- ↩ - _perv
¬ ← 1+-
-identity ← (0⊑⟨!∘0⟩) {(0⊑𝕨){𝕗=𝕩}◶𝕩‿(1⊑𝕨)}´ ⟨+‿0,-‿0,×‿1,÷‿1,⋆‿1,√‿1,∧‿1,∨‿0,|‿0,⌊‿∞,⌈‿¯∞,<‿0,≤‿1,=‿1,≥‿1,>‿0,≠‿0⟩
+identity ← (0⊑⟨"Identity not found"!0˜⟩) {(0⊑𝕨){𝕗=𝕩}◶𝕩‿(1⊑𝕨)}´ ⟨+‿0,-‿0,×‿1,÷‿1,⋆‿1,√‿1,∧‿1,∨‿0,|‿0,⌊‿∞,⌈‿¯∞,<‿0,≤‿1,=‿1,≥‿1,>‿0,≠‿0⟩
Deshape←IsArray◶{⟨𝕩⟩}‿⥊
Reshape←{
- ! 1≥=𝕨
+ "Shape argument to Reshape must have rank at most 1" ! 1≥=𝕨
𝕨↩Deshape 𝕨
- ! ∧´Nat⌜𝕨
+ "Shape in Reshape must consist of natural numbers" ! ∧´Nat⌜𝕨
l←×´𝕨
n←×´≢𝕩
𝕨⥊{
@@ -187,8 +194,8 @@ Reshape←{
⥊ ↩ Deshape ⊘ ⥊
Range←{
- I←{!Nat𝕩⋄↕𝕩}
- M←{!1==𝕩⋄(<⟨⟩)⥊⊸∾⌜´I⌜𝕩}
+ I←{"Range argument must consist of natural numbers"!Nat𝕩⋄↕𝕩}
+ M←{"Range argument must be a number or list"!1==𝕩⋄(<⟨⟩)⥊⊸∾⌜´I⌜𝕩}
IsArray◶I‿M 𝕩
}
@@ -219,7 +226,7 @@ _rankOp_←{
⎉ ← _rankOp_
˘ ← {𝔽⎉¯1}
_insert←{
- ! 1≤=𝕩
+ "Insert argument must have rank at least 1" ! 1≤=𝕩
𝕨 𝔽´ <˘𝕩
}
˝ ← _insert
@@ -228,11 +235,11 @@ _insert←{
_onAxes_←{
F←𝔽
(𝔾<≡)∘⊣◶{ # One axis
- ! 1≤=𝕩
+ "First-axis function right argument must have rank at least 1" ! 1≤=𝕩
𝕨F𝕩
}‿{ # Multiple axes
- ! 1≥=𝕨
- ! 𝕨≤○≠≢𝕩
+ "Left argument must have rank at most 1" ! 1≥=𝕨
+ "Left argument length must be at most right argument rank" ! 𝕨≤○≠≢𝕩
l←≠𝕨 ⋄ W←⊑⟜(⥊𝕨)
0{(W𝕨)F(1+𝕨)⊸𝕊˘⍟(𝕨<l-1)𝕩}⍟(0<l)𝕩
}
@@ -244,43 +251,43 @@ Select←ToArray⊸(SelSub _onAxes_ 1)
JoinTo←∨○(1<=)◶(∾○⥊)‿{
s←𝕨Pair○≢𝕩
a←1⌈´k←≠⌜s
- ! ∧´1≥a-k
+ "Rank of joined arguments must differ by at most 1" ! ∧´1≥a-k
c←(k¬a)+⟜(↕a-1)⊸⊏¨s
- ! ≡´c
+ "Cell shapes of joined arguments must match" ! ≡´c
l←+´(a=k)⊣◶1‿(0⊑⊢)¨s
(⟨l⟩∾0⊑c)⥊𝕨∾○⥊𝕩
}
Take←{
T←{
- ! Int 𝕨
+ "Left argument to Take or Drop 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 ← {!1≤=𝕩 ⋄ Take⟜𝕩⌜↕1+≠𝕩}
+Prefixes ← {"Prefixes argument must have rank at least 1"!1≤=𝕩 ⋄ Take⟜𝕩⌜↕1+≠𝕩}
↑ ← Prefixes ⊘ Take
Drop←{
s←(≠𝕨)(⊣↑⊢∾˜·1⌜∘↕0⌈-⟜≠)≢𝕩
((sׯ1⋆𝕨>0)+(-s)⌈s⌊𝕨)↑𝕩
}
-Suffixes ← {!1≤=𝕩 ⋄ Drop⟜𝕩⌜↕1+≠𝕩}
+Suffixes ← {"Suffixes argument must have rank at least 1"!1≤=𝕩 ⋄ Drop⟜𝕩⌜↕1+≠𝕩}
↓ ← Suffixes ⊘ Drop
Windows←{
- ! IsArray 𝕩
- ! 1≥=𝕨
- ! 𝕨≤○≠≢𝕩
- ! ∧´Nat⌜⥊𝕨
+ "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⌜⥊𝕨
s←(≠𝕨)↑≢𝕩
- ! ∧´𝕨≤1+s
+ "Window length must be at most axis length plus one" ! ∧´𝕨≤1+s
𝕨{(∾⟜(𝕨≠⊸↓≢𝕩)∘≢⥊>)<⌜⊸⊏⟜𝕩¨s(¬+⌜○Range⊢)⥊𝕨}⍟(0<≠𝕨)𝕩
}
Rep ← Indices⊸⊏
-Replicate ← {0<=𝕨}◶{𝕨⌜⊸Rep𝕩}‿{!𝕨=○≠𝕩⋄𝕨Rep𝕩} _onAxes_ (1-0=≠)
+Replicate ← {0<=𝕨}◶{𝕨⌜⊸Rep𝕩}‿{"Replicate argument lengths must match"!𝕨=○≠𝕩⋄𝕨Rep𝕩} _onAxes_ (1-0=≠)
↕ ↩ Range ⊘ Windows
⌽ ← Reverse ⊘ (Rot _onAxes_ 0)
@@ -293,33 +300,35 @@ Join←(1≠=)◶⟨∨´1≠=⌜,1⟩◶{
}‿{
# Multidimensional
C←(<⟨⟩)⥊⊸∾⌜´⊢ # Cartesian array product
- ! IsArray 𝕩
+ "Join argument must be an array" ! IsArray 𝕩
s←≢⌜𝕩
d←≠0⊑⥊s
- ! ∧´⥊d=≠⌜s
- ! d≥=𝕩
+ "Join argument elements must all have the same rank" ! ∧´⥊d=≠⌜s
+ "Join argument element rank must be at least argument rank" ! d≥=𝕩
l←(≢𝕩){(𝕩⊑⟜≢a Pick1˜(j=𝕩)⊸×)⌜↕𝕨}¨j←↕r←=a←𝕩
- ! (r⊸↑⌜s)≡C l
+ "Join argument element shapes must be compatible" ! (r⊸↑⌜s)≡C l
i←C{p←+´⌜↑𝕩⋄(↕0⊑⌽p)-𝕩/¯1↓p}⌜l
>i<⌜⊸⊏¨l/𝕩
}⍟(0<≠∘⥊)
_group←{
- !1==𝕩⋄!∧´Int⌜𝕩⋄!∧´¯1≤𝕩
+ "Grouping argument must be a list" ! 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←{
- ! IsArray 𝕩
+ "Group Indices argument must be an array" ! IsArray 𝕩
G←⊢_group
(1<≡)◶G‿((<<⟨⟩)⥊⊸∾⌜⌜´G⌜)𝕩
}
GroupGen←{
- ! IsArray 𝕩
+ "Group right argument must be an array" ! IsArray 𝕩
m←1<≡𝕨
- l←m◶≠‿{!1==𝕩⋄≠⌜𝕩}𝕨
- ! l≤○≠≢𝕩
- ! ∧´l=l≠⊸↑≢𝕩
+ l←m◶≠‿{"Group left argument must consist of lists"!1==𝕩⋄≠⌜𝕩}𝕨
+ "Group left argument length must be at most right argument rank" ! l≤○≠≢𝕩
+ "Group argument lengths must be compatible" ! ∧´l=l≠⊸↑≢𝕩
𝕨m◶(⊏⟜𝕩_group⊣)‿{
⊏⟜(𝕩⥊˜⟨×´l⟩∾(≠l)Cell𝕩)⌜ +⌜⌜´ (⌽×`⟨1⟩∾⌽1↓l) × ⊢_group⌜𝕨
}𝕩
@@ -329,10 +338,10 @@ GroupGen←{
⊔ ← GroupInds ⊘ GroupGen
Pick1←{
- ! 1==𝕨
- ! 𝕨=○≠s←≢𝕩
- ! ∧´Int⌜𝕨
- ! ∧´𝕨(≥⟜-∧<)s
+ "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
𝕨↩𝕨+s×𝕨<0
(⥊𝕩)⊑˜0(⊑⟜𝕨+⊑⟜s×⊢)´-↕⊸¬≠𝕨
}
@@ -373,11 +382,11 @@ _binSearch ← {
}
_bins←{
c←1-˜=𝕨
- ! 0≤c
- ! c≤=𝕩
+ "Bins argument must have rank at least 1" ! 0≤c
+ "Bins right argument rank is too small" ! c≤=𝕩
lw←×´sw←1 Cell 𝕨
cw←lw 𝔽○(⊑⟜(⥊𝕨)) _getCellCmp 0
- ! 0⊸<◶⟨1,∧´0≤˜·cw⟜(lw⊸+)⌜lw×↕∘-⟜1⟩≠𝕨
+ "Bins left argument must be sorted" ! 0⊸<◶⟨1,∧´0≤˜·cw⟜(lw⊸+)⌜lw×↕∘-⟜1⟩≠𝕨
cx←c-˜=𝕩
sx←cx Cell 𝕩 ⋄ lc←sw CmpLen sx
cc ← (⊑⟜(⥊𝕨))⊸𝔽⟜(⊑⟜(⥊𝕩)) _getCellCmp´ lc
@@ -394,7 +403,7 @@ _search←{ # 0 for ∊˜, 1 for ⊐
red ← 𝕗⊑⟨¬∧˝,+˝∧`⟩
{
c←1-˜=𝕨
- ! 0≤c
+ "Search principal argument 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𝕩 }
@@ -402,28 +411,28 @@ _search←{ # 0 for ∊˜, 1 for ⊐
}
}
UniqueMask←{
- ! 1≤=𝕩
+ "Unique mask argument must have rank at least 1" ! 1≤=𝕩
g←⍋𝕩
(1¨⊸GroupOrd g)⊏0⊸<◶⟨1,-⟜1≢○(⊑⟜(g⊏<˘⍟(1<=)𝕩))⊢⟩⌜↕≠𝕩
}
Find←{
r←=𝕨
- ! r≤=𝕩
+ "Find left argument rank cannot exceed right argument rank" ! r≤=𝕩
𝕨 ≡⎉r (≢𝕨) ↕⎉r 𝕩
}
-⊐ ← !∘0 ⊘ (1 _search)
+⊐ ← ("No monadic form: ⊐"!0˜) ⊘ (1 _search)
∊ ← UniqueMask ⊘ (0 _search˜)
⍷ ← ∊⊸/ ⊘ Find
ReorderAxes←{
𝕩↩<⍟(0=≡)𝕩
- ! 1≥=𝕨
+ "Left argument to Reorder Axes must have rank at most 1" ! 1≥=𝕨
𝕨↩⥊𝕨
- ! 𝕨≤○≠≢𝕩
- ! ∧´Nat⌜⥊𝕨
+ "Reorder Axes left argument length must not exceed right argument rank" ! 𝕨≤○≠≢𝕩
+ "Reorder Axes left argument must consist of natural numbers" ! ∧´Nat⌜⥊𝕨
r←(=𝕩)-+´¬∊𝕨
- ! ∧´𝕨<r
+ "No such axis in Reorder Axes" ! ∧´𝕨<r
𝕨↩𝕨∾𝕨(¬∘∊˜/⊢)↕r
(𝕨⊸⊏Pick𝕩˜)⌜↕⌊´⌜𝕨⊔≢𝕩
}
@@ -436,7 +445,8 @@ ProgressiveIndexOf ← {𝕨⊐○(≍˘⟜OccurrenceCount𝕨⊸⊐)𝕩}
⊑ ↩ (0⊑⥊) ⊘ Pick
◶ ↩ {𝕨((𝕨𝔽𝕩)⊑𝕘){𝔽}𝕩} # Same definition, new Pick
-inverse ← {(⊑(0⊏𝕩)⊐<) ⊑ ((1⊏𝕩)∾⟨!∘0⟩)˜} ⍉ (2∾˜2÷˜≠)⊸⥊ ⟨
+IA ← "Inverse failed"⊸!
+inverse ← {(⊑(0⊏𝕩)⊐<) ⊑ ((1⊏𝕩)∾⟨"Inverse not found"!0˜⟩)˜} ⍉ (2∾˜2÷˜≠)⊸⥊ ⟨
+, +⊘(-˜)
-, -
×, ⊢⊘(÷˜)
@@ -445,15 +455,15 @@ inverse ← {(⊑(0⊏𝕩)⊐<) ⊑ ((1⊏𝕩)∾⟨!∘0⟩)˜} ⍉ (2∾˜2
√, ⋆⟜2⊘(⋆˜)
∧, ⊢⊘(÷˜)
∨, ⊢⊘(-˜÷1-⊢)
- <, {!IsArray𝕩⋄!0==𝕩⋄⊑𝕩}⊘(!∘0)
- /, {!1==𝕩⋄!∧´Nat⌜𝕩⋄!(∧´¯1⊸↓≤1⊸↓)𝕩⋄GroupLen𝕩}⊘(!∘0)
+ <, {IA IsArray𝕩⋄IA 0==𝕩⋄⊑𝕩}⊘(IA∘0)
+ /, {IA 1==𝕩⋄IA∧´Nat⌜𝕩⋄IA(∧´¯1⊸↓≤1⊸↓)𝕩⋄GroupLen𝕩}⊘(IA∘0)
⁼ ← {Inverse 𝕗}
_repeat_←{
n←𝕨𝔾𝕩
l←u←0
- {!Int𝕩⋄l↩l⌊𝕩⋄u↩u⌈𝕩}⚇0 n
+ {"Repetition numbers must be integers"!Int𝕩⋄l↩l⌊𝕩⋄u↩u⌈𝕩}⚇0 n
a←𝕩⋄_p←{𝔽∘⊣`⟨a⟩∾↕0+𝕩}
pos←(𝕨𝔽 ⊢)_p u
neg←(𝕨𝔽⁼⊢)_p-l