"use strict"; // Virtual machine let has = x => x!==undefined; let isnum = x => typeof x === "number" let isfunc = x => typeof x === "function" let call = (f,x,w) => { if (x===undefined) return x; if (!isfunc(f)) return f; if (f.m) throw Error("Runtime: Cannot call modifier as function"); return f(x, w); } let findkey = (ns, names, i) => { let nn=ns.names, ni; if (nn===names) { return ns[i]; } else { if (!has(nn.rev)) { let m=nn.rev={}; nn.forEach((s,i)=>m[s]=i); } return ns[nn.rev[names[i]]]; } } let readns_sub = (v, names, i) => { let ni = findkey(v.ns, names, i); if (!has(ni)) throw Error("Unknown namespace key: "+names[i]); return v[ni]; } let readns_assign = (v, vid, i) => readns_sub(v, vid.names, vid[i]); let readns = (v, vid, i) => { if (!v.ns) throw Error("Key lookup in non-namespace"); return readns_sub(v, vid.names, i); } let makens = (keys, vals) => { let n = Array(keys.length).fill().map((_,i)=>i); n.names=keys.map(k=>k.toLowerCase()); vals.ns=n; return vals; } let obj2ns = (obj, keys, f) => makens(keys, keys.map(k=>(f?f:(v=>v))(obj[k]))); let listkeys = (x,w) => { let s=x.ns, k=Object.keys(s).filter(n=>!isNaN(n)); return list(k.map(n=>s.names[+n]).sort().map(str)); } let getv= (a,i) => { let v=a[i]; if (v===null) throw Error("Runtime: Variable referenced before definition"); return v; } let get = x => x.e ? getv(x.e,x.p) : arr(x.map(c=>get(c)), x.sh); let set = (d, id, v) => { let eq = (a,b) => a.length===b.length && a.every((e,i)=>e===b[i]); if (id.e) { if (!d && id.e[id.p]===null) throw Error("↩: Variable modified before definition"); id.e[id.p] = v; } else { if (v.sh) { if (!eq(id.sh,v.sh)) throw Error("← or ↩: Target and value shapes don't match"); id.map((n,j)=>set(d,n,v[j])); } else if (v.ns) { id.map(n=>{ if (n.e) { let vid=n.e.vid; set(d,n,readns_assign(v, vid, n.p)); } else if (n.m) { set(d, n.m, readns(v, n.vid, n.a)); } else { throw Error("← or ↩: Cannot extract non-name from namespace"); } }); } else { throw Error("← or ↩: Multiple targets but atomic value"); } } return v; } let chkM = (v,m) => { if (m.m!==v) throw Error("Runtime: Only a "+v+"-modifier can be called as a "+v+"-modifier"); } let genjs = (B, p, L) => { // Bytecode -> Javascript compiler let rD = 0; let r = L?"let l=0;try{":""; let fin = L?"}catch(e){let s=L.map(p=>p[l]);s.sh=[1,2];let m=[s,e.message];m.loc=true;m.sh=[2];e.message=m;throw e;}":""; let szM = 1; let rV = n => { szM=Math.max(szM,n+1); return 'v'+n; }; let rP = val => rV(rD++) + "="+val+";"; let rG = () => rV(--rD); let num = () => { return B[p++]; } let ge = n => "e"+".p".repeat(n); loop: while(true) { r+="\n"; if (p>B.length) throw Error("Internal compiler error: Unclosed function"); if (L) r+="l="+p+";"; switch(B[p++]) { case 0: { r+= rP("O["+num()+"]"); break; } case 3: case 4: { let n=num(); rD-= n; r+=rP("llst(["+(new Array(n).fill().map((_,i)=>rV(rD+i)).join(","))+"])"); break; } case 5: case 16: { let f=rG(),x=rG(); r+=rP("call("+f+","+x +")"); break; } case 6: case 17: { let w=rG(),f=rG(),x=rG(); r+=rP("call("+f+","+x+","+w+")"); break; } case 7: { let f=rG(),m=rG(); r+="chkM(1,"+m+");"+rP(m+"("+f +")"); break; } case 8: { let f=rG(),m=rG(),g=rG(); r+="chkM(2,"+m+");"+rP(m+"("+f+","+g+")"); break; } case 9: { let g=rG(),h=rG(); r+=rP("train2(" +g+","+h+")"); break; } case 10:case 19: { let f=rG(),g=rG(),h=rG(); r+=rP("train3("+f+","+g+","+h+")"); break; } case 11: { let i=rG(), v=rG(); r+=rP("set(1,"+i+","+v +")"); break; } case 12: { let i=rG(), v=rG(); r+=rP("set(0,"+i+","+v +")"); break; } case 13: { let i=rG(),f=rG(),x=rG(); r+=rP("set(0,"+i+",call("+f+","+x+",get("+i+")))"); break; } case 14: { rD--; break; } case 15: { r+= rP("D["+num()+"](e)"); break; } case 21:case 31: { r+= rP("getv("+ge(num())+","+num()+")"); break; } case 22: { r+= rP("{e:"+ge(num())+",p:"+num()+"}"); break; } case 28: { let m=rG(); r+=rP("{vid,m:"+m+",a:"+num()+"}"); break; } case 26: { let v=rG(); r+=rP("readns("+v+",vid,"+num()+")"); break; } case 25: { if(rD!==1) throw Error("Internal compiler error: Wrong stack size"); r+= "return v0;"; break loop; } case 29: { r+= "e.ns=ns;return e;"; break loop; } } } return "let "+new Array(szM).fill().map((_,i)=>rV(i)).join(',')+";"+r+fin; } let run = (B,O,S,L,T) => { // Bytecode, Objects, Sections/blocks, Locations, Tokenization let train2=( g,h)=>{ let t=(x,w)=>call(g,call(h,x,w)); t.repr=()=>[2, g,h];return t;} let train3=(f,g,h)=>{if(!has(f))return train2(g,h);let t=(x,w)=>call(g,call(h,x,w),call(f,x,w));t.repr=()=>[3,f,g,h];return t;} let D = S.map(([type,imm,pos,varam,vid,vex],i) => { let I = imm ? 0 : 3; // Operand start let sp = (type===0?0:type+1) + I; let def = new Array(sp + varam).fill(null); let ns = {}; if (vex) vex.forEach((e,j)=>{if(e)ns[vid[j]]=j+sp;}); vid = (new Array(sp).fill(null)).concat(vid); if (T) ns.names = vid.names = T[2][0].map(s=>s.join("")); let c = genjs(B, pos, L); let repdf = ["","4,f,mod","5,f,mod,g"].map(s=>s?"fn.repr=()=>["+s+"];":s); if (imm) c = "const e=[...e2];e.vid=vid;e.p=oe;"+c; else c = "const fn=(x, w)=>{const e=[...e2];e.vid=vid;e.p=oe;e[0]=fn;e[1]=x;e[2]=w;"+c+"};"+repdf[type]+"return fn;"; if (type===0) c = "let e2=def;"+c; if (type===1) c = "const mod=(f ) => {let e2=[...def]; e2["+I+"]=mod;e2["+(I+1)+"]=f;" +c+"}; mod.m=1;return mod;"; if (type===2) c = "const mod=(f,g) => {let e2=[...def]; e2["+I+"]=mod;e2["+(I+1)+"]=f;e2["+(I+2)+"]=g;"+c+"}; mod.m=2;return mod;"; return Function("'use strict'; return (chkM,has,call,getv,get,set,llst,train2,train3,readns,O,L,def,vid,ns) => D => oe => {"+c+"};")() (chkM,has,call,getv,get,set,llst,train2,train3,readns,O,L,def,vid,ns); }); D.forEach((d,i) => {D[i]=d(D)}); return D[0]([]); } // Runtime let assertFn = pre => (x,w) => { if (x!==1) throw {src:pre, message:w}; return x; } let arr = (r,sh,fill) => {r.sh=sh;r.fill=fill;return r;} let list = (l,fill) => arr(l,[l.length],fill); let llst = l => list(l, l.length>0&&l.every(isnum)?0:undefined); let str = s => list(Array.from(s), ' '); let unstr = s => s.join(""); let setrepr = (r,f) => {f.repr=r; return f;} let m1 = m=>{let r= f =>setrepr(()=>[4,f,r ], m(f )); r.m=1; return r;} let m2 = m=>{let r=(f,g)=>setrepr(()=>[5,f,r,g], m(f,g)); r.m=2; return r;} let ctrans = (c,t) => String.fromCodePoint(c.codePointAt(0)+t); let plus = (x,w) => { if (!has(w)) return x; let s=typeof w, t=typeof x; 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"); } let minus = (x,w) => { if (!isnum(x)) { if (has(w)&&typeof w==="string") return w.codePointAt(0)-x.codePointAt(0); 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"); } let times = (x,w) => { if (isnum(x)&&isnum(w)) return x*w; throw Error("×: Arguments must be numbers"); } let divide = (x,w) => { if (isnum(x)&&(!has(w)||isnum(w))) return (has(w)?w:1)/x; throw Error("÷: Arguments must be numbers"); } let power = (x,w) => { if (isnum(x)) { if (!has(w)) return Math.exp(x); if (isnum(w)) return Math.pow(w,x); } throw Error("⋆: Arguments must be numbers"); } let log = (x,w) => { if (isnum(x)) { if (!has(w)) return Math.log(x); if (isnum(w)) return Math.log(x)/Math.log(w); } throw Error("⋆⁼: Arguments must be numbers"); } let fc = (dy,mon,gl) => (x,w) => { if (has(w)) return dy(w,x); if (isnum(x)) return mon(x); throw Error(gl+"𝕩: Argument must be a number"); } let floor = fc(Math.min,Math.floor,"⌊"); let ceil = fc(Math.max,Math.ceil ,"⌈"); let abs = (x,w) => { if (isnum(x)) return Math.abs(x); throw Error("|𝕩: Argument must be a number"); } let lesseq = (x,w) => { let s=typeof w, t=typeof x; if (s==="function"||t==="function") throw Error("𝕨≤𝕩: Cannot compare operations"); if (w.ns||x.ns) throw Error("𝕨≤𝕩: Cannot compare namespaces"); return +(s!==t ? s<=t : w<=x); } let equals = (x,w) => { let a,b; if (typeof(w)!=="function" || !(a=w.repr)) return x===w; if (typeof(x)!=="function" || !(b=x.repr)) return false; b=b(); return a().every((e,i)=>call(runtime[18],e,b[i])); // ≡ } let table = m1(f => (x,w) => !has(w) ? arr(x.map(e=>call(f,e)),x.sh) : arr([].concat.apply([],w.map(d=>x.map(e=>call(f,e,d)))),w.sh.concat(x.sh))); let scan = m1(f => (x,w) => { let s=x.sh; if (!s||s.length===0) throw Error("`: 𝕩 must have rank at least 1"); if (has(w)) { let r=w.sh, wr=r?r.length:0; if (1+wr!==s.length) throw Error("`: rank of 𝕨 must be cell rank of 𝕩"); if (!r) w=[w]; else if (!r.every((l,a)=>l===s[1+a])) throw Error("`: shape of 𝕨 must be cell shape of 𝕩"); } let l=x.length,r=Array(l); if (l>0) { let c=1;for(let i=1;i (x,w)=>has(w)?call(g,x,w):call(f,x,w)); let catches = m2((f,g) => (x,w)=>{try{return call(f,x,w);}catch(e){return call(g,x,w);}}); let group_len = (x,w) => { // ≠¨⊔ for a valid list argument let l=x.reduce((a,b)=>Math.max(a,b),(w||0)-1); let r=Array(l+1).fill(0); x.map(e=>{if(e>=0)r[e]+=1;}); return list(r,0); } let group_ord = (x,w) => { // ∾⊔x assuming w=group_len(x) let l=0,s=w.map(n=>{let l0=l;l+=n;return l0;}); let r=Array(l); x.map((e,i)=>{if(e>=0)r[s[e]++]=i;}); return list(r,x.fill); } let type = x => isfunc(x) ? 3+(x.m||0) : x.sh ? 0 : x.ns ? 6 : 2-isnum(x); let tofill = x => isfunc(x) ? undefined : x.sh ? arr(x.map(tofill),x.sh,x.fill) : isnum(x)?0 : ' '; let fill = (x,w) => { if (has(w)) { return arr(x.slice(),x.sh,tofill(w)); } else { let f = x.fill; if (!has(f)) throw Error("Fill does not exist"); return f; } } let fill_by = (f,g) => (x,w) => { let r = f(x,w); let a2fill = x => isfunc(x)?x:isnum(x)?0:' '; let xf=x.sh?x.fill:a2fill(x); if (r.sh&&has(xf)) { try { let wf = !has(w) ? w : !w.sh ? a2fill(w) : has(w.fill) ? w.fill : runtime[42]; r.fill=tofill(g(xf,wf)); } catch(e){ r.fill=undefined; } } return r; } fill_by.m=2; let provide = [ type // Type ,fill // Fill ,log // Log ,group_len // GroupLen ,group_ord // GroupOrd ,assertFn("") // ! ,plus // + ,minus // - ,times // × ,divide // ÷ ,power // ⋆ ,floor // ⌊ ,(x,w) => has(w)?+equals(x,w):x.sh?x.sh.length:0 // = ,lesseq // ≤ ,(x,w) => list(x.sh,0) // ≢ ,(x,w) => arr(x.slice(),has(w)?w:[x.length],x.fill) // ⥊ ,(x,w) => x[w] // ⊑ ,(x,w) => list(Array(x).fill().map((_,i)=>i),0) // ↕ ,table // ⌜ ,scan // ` ,fill_by // _fillBy_ ,cases // ⊘ ,catches // ⎊ ]; let select = (x,w) => { let s=x.sh, k=s.length, f=x.fill, t=w.sh, c=1; if (k!==1) {for(let i=1;i{for(let k=0;k (x,w) => { let l=x.sh[0]; let r=has(w)?w:x[l=l-1]; for (let i=l;i--;) r=call(f,r,x[i]); return r; } let runtime_0 = [ floor // ⌊ ,ceil // ⌈ ,abs // | ,(x,w)=>has(w)?1-lesseq(w,x):arr([x],[],tofill(x)) // < ,(x,w)=>1-lesseq(x,w) // > ,(x,w)=>x.sh&&x.sh.length?x.sh[0]:1 // ≠ ,(x,w)=> lesseq(w,x) // ≥ ,(x,w)=>x // ⊢ ,(x,w)=>has(w)?w:x // ⊣ ,(x,w)=>arr(w.concat(x),[w.sh[0]+x.sh[0]]) // ∾ ,(x,w)=>arr(x.slice(0,w),[w]) // ↑ ,(x,w)=>arr(x.slice(w),[x.sh[0]-w]) // ↓ ,select // ⊏ ,m1(f=>(x,w)=>f) // ˙ ,m1(f=>(x,w)=>call(f,has(w)?w:x,x)) // ˜ ,m1(f=>(x,w)=>arr(x.map((e,i)=>call(f,e,w[i])),x.sh)) // ¨ ,m1(fold) // ´ ,m2((f,g)=>(x,w)=>call(f,call(g,x,w))) // ∘ ,m2((f,g)=>(x,w)=>call(f,call(g,x),has(w)?call(g,w):w)) // ○ ,m2((f,g)=>(x,w)=>call(g,x,call(f,has(w)?w:x))) // ⊸ ,m2((f,g)=>(x,w)=>call(f,call(g,x),has(w)?w:x)) // ⟜ ,m2((f,g)=>(x,w)=>call(g[call(f,x,w)],x,w)) // ◶ ,m2((f,g)=>(x,w)=>call(g,x,w)?call(f,x,w):x) // ⍟ ]; let [runtime,setPrims] = run( [0,95,22,0,0,11,14,15,1,22,0,1,11,14,15,2,22,0,2,11,14,15,3,22,0,3,11,14,0,0,0,12,0,45,19,22,0,4,11,14,0,0,0,13,0,46,19,22,0,5,11,14,0,45,0,12,0,41,0,11,8,3,2,0,43,0,0,0,12,0,46,19,8,22,0,6,11,14,0,45,0,12,0,41,0,11,0,39,0,19,8,8,3,2,0,43,0,0,0,12,0,46,19,8,22,0,7,11,14,21,0,5,0,44,0,20,8,22,0,8,11,14,0,30,21,0,5,7,0,35,0,8,7,0,46,19,22,0,9,11,14,15,4,0,15,3,2,0,43,21,0,4,8,22,0,10,11,14,15,5,0,37,15,6,8,22,0,11,11,14,0,14,0,42,0,28,8,22,0,12,11,14,0,34,0,12,7,0,35,0,8,7,0,46,19,22,0,13,11,14,0,4,0,41,0,30,0,46,7,8,22,0,14,11,14,15,7,22,0,15,11,14,15,8,22,0,16,11,14,15,9,22,0,17,11,14,21,0,17,0,55,7,22,0,18,11,14,15,10,22,0,19,11,14,15,11,22,0,20,11,14,0,56,0,45,0,57,0,45,0,58,0,46,0,59,0,46,0,60,0,46,0,61,0,46,0,62,0,48,0,63,0,49,0,64,0,45,0,65,0,46,0,66,0,45,0,67,0,46,0,68,0,45,0,69,0,46,3,28,21,0,20,0,32,0,45,7,0,5,0,96,19,8,15,12,9,22,0,21,11,14,15,13,22,0,22,11,14,15,14,22,0,23,11,14,15,15,22,0,24,11,14,0,13,0,7,0,23,19,22,0,25,11,14,0,46,0,15,0,16,0,45,19,0,42,0,13,0,8,0,47,19,0,7,0,46,19,15,16,3,2,0,43,0,24,0,39,21,0,4,8,8,8,3,2,0,43,0,24,0,39,0,14,8,0,35,0,8,7,0,46,19,0,20,0,45,19,8,22,0,26,11,14,15,17,22,0,27,11,14,15,18,22,0,28,11,14,21,0,25,21,0,26,0,33,21,0,26,7,0,7,9,3,2,0,43,0,25,0,39,21,0,4,8,8,15,19,3,3,0,43,21,0,4,0,40,0,6,8,8,22,0,29,11,14,15,20,22,0,30,11,14,21,0,30,0,45,7,22,0,31,11,14,31,0,30,0,46,7,22,0,32,11,14,15,21,22,0,33,11,14,15,22,22,0,34,11,14,21,0,8,0,40,15,23,8,22,0,35,11,14,15,24,22,0,36,11,14,0,29,0,41,21,0,36,8,22,0,37,11,14,15,25,22,0,38,11,14,21,0,34,0,24,0,31,0,6,7,0,50,19,0,33,0,29,7,0,33,21,0,37,0,39,21,0,31,0,39,21,0,14,8,8,7,19,7,22,0,39,11,14,21,0,34,0,34,0,8,7,0,31,0,18,7,9,0,34,0,7,7,0,25,19,0,41,0,22,0,39,0,17,8,8,7,22,0,40,11,14,21,0,8,0,24,0,36,15,26,8,3,2,0,43,0,12,0,20,0,45,19,8,22,0,41,11,14,15,27,0,44,0,24,0,36,15,28,8,8,22,0,42,11,14,15,29,22,0,43,11,14,15,30,22,0,44,11,14,21,0,6,0,5,0,112,19,0,113,3,2,0,12,0,41,0,11,8,0,5,0,114,19,0,115,3,2,3,2,0,30,15,31,7,16,22,0,45,22,0,46,4,2,11,14,15,32,22,0,47,11,14,21,0,8,0,42,15,33,8,22,0,48,11,14,15,34,31,0,48,3,2,0,43,0,25,0,39,0,15,8,21,0,9,9,8,22,0,49,11,14,31,0,47,21,0,49,3,2,0,43,0,25,0,39,21,0,4,8,8,22,0,50,11,14,15,35,22,0,51,11,14,15,36,22,0,52,11,14,21,0,8,0,40,21,0,51,0,127,0,15,0,30,0,0,0,12,0,46,19,7,9,0,35,0,8,7,0,46,19,0,46,0,45,0,24,0,29,15,37,19,15,38,3,6,7,8,22,0,53,11,14,0,24,0,15,0,1,0,16,0,41,0,45,8,3,2,0,43,0,22,0,20,0,45,19,8,9,3,2,0,43,21,0,4,8,22,0,54,11,14,15,39,22,0,55,11,14,15,40,22,0,56,11,14,0,27,0,26,0,28,19,22,0,57,11,14,0,24,0,29,0,22,0,17,9,0,42,21,0,57,8,19,21,0,57,3,2,0,43,0,24,0,39,0,12,8,0,12,0,46,19,8,22,0,58,11,14,0,24,0,36,21,0,8,0,42,21,0,51,0,130,31,0,5,0,45,0,45,0,24,0,39,0,22,8,0,20,0,45,19,0,44,0,24,31,0,58,0,22,0,42,21,0,56,8,19,8,0,24,0,17,9,31,0,57,31,0,56,19,3,6,7,8,8,22,0,59,11,14,15,41,15,42,15,43,3,3,0,43,0,25,0,39,0,12,8,0,11,0,47,19,8,22,0,60,11,14,0,24,0,36,21,0,8,0,40,31,0,51,0,134,0,15,0,39,0,30,0,0,0,12,0,46,19,7,0,35,0,8,7,0,22,0,20,0,45,19,19,8,0,46,0,46,0,24,0,29,0,22,0,42,21,0,60,8,19,31,0,60,3,6,7,8,8,22,0,61,11,14,15,44,22,0,62,11,14,0,24,15,45,3,2,0,30,15,46,7,0,26,0,24,19,16,0,30,15,47,7,16,22,0,63,11,14,15,48,0,41,31,0,63,0,29,0,46,0,46,0,47,0,51,0,45,3,5,17,21,0,16,0,135,8,8,22,0,64,11,14,15,49,22,0,65,11,14,15,50,22,0,66,11,14,15,51,22,0,67,11,14,15,52,22,0,68,11,14,0,45,0,12,0,41,0,32,21,0,68,7,8,3,2,0,43,0,0,0,12,0,51,19,8,22,0,69,11,14,0,24,21,0,4,9,0,12,0,40,0,12,8,0,14,0,40,21,0,13,8,3,3,0,35,15,53,7,16,22,0,70,11,14,15,54,22,0,71,11,14,21,0,4,0,40,0,12,8,0,45,3,2,0,24,0,39,21,0,4,8,0,12,3,2,0,12,0,40,0,12,8,0,45,3,2,0,14,0,40,21,0,13,8,0,45,3,2,15,55,3,5,0,35,15,56,7,16,22,0,72,11,14,0,45,15,57,3,2,0,43,21,0,4,8,22,0,73,11,14,21,0,72,0,37,21,0,73,8,22,0,74,11,14,21,0,72,0,7,0,46,19,0,37,0,45,0,17,16,0,14,3,2,0,43,21,0,4,8,8,22,0,75,11,14,21,0,74,0,39,0,5,8,0,25,0,24,19,22,0,76,11,14,0,15,0,39,0,1,0,36,0,24,8,0,35,21,0,76,0,36,0,24,8,7,3,2,0,43,0,22,0,20,0,45,19,8,8,22,0,77,11,14,15,58,22,0,78,11,14,21,0,4,0,44,0,26,21,0,78,15,59,8,8,22,0,79,11,14,21,0,76,0,36,21,0,8,0,40,0,15,0,40,0,26,8,15,60,3,2,0,43,0,12,0,40,0,18,8,0,20,0,46,19,8,8,8,22,0,80,11,14,15,61,22,0,81,11,14,15,62,22,0,82,11,14,21,0,4,0,5,0,145,19,0,25,15,63,31,0,78,21,0,79,21,0,82,21,0,81,3,2,0,43,0,30,0,12,0,12,0,46,19,7,0,35,0,8,7,0,46,19,8,31,0,82,3,3,0,43,0,12,0,11,0,47,19,8,8,19,22,0,83,11,14,0,24,0,24,0,24,0,35,15,64,7,9,15,65,15,66,15,67,3,6,0,43,0,25,8,22,0,84,11,14,15,68,22,0,85,11,14,15,69,22,0,86,11,14,21,0,86,0,45,7,22,0,87,11,14,31,0,86,0,46,7,22,0,88,11,14,15,70,22,0,89,11,14,21,0,76,0,37,0,24,8,0,36,15,71,8,22,0,90,11,14,21,0,76,0,37,0,24,8,0,36,15,72,8,22,0,91,11,14,15,73,22,0,92,11,14,15,74,22,0,93,11,14,15,75,22,0,94,11,14,15,76,22,0,95,11,14,15,77,22,0,96,11,14,0,53,0,17,16,21,0,16,0,170,8,22,0,97,11,14,15,78,22,0,98,11,14,15,79,22,0,99,11,14,15,80,22,0,100,11,14,21,0,8,0,40,15,81,8,22,0,101,11,14,15,82,22,0,102,11,14,15,83,22,0,103,11,14,15,84,22,0,104,11,14,15,85,22,0,105,11,14,15,86,22,0,106,11,14,15,87,22,0,107,11,14,21,0,24,0,9,7,22,0,108,11,14,21,0,24,0,10,7,22,0,109,11,14,0,33,21,0,108,0,42,21,0,109,8,7,0,37,0,47,21,0,108,16,0,42,21,0,109,8,8,22,0,110,11,14,21,0,24,15,88,0,37,0,19,8,7,22,0,111,11,14,21,0,24,15,89,0,37,0,11,8,7,22,0,112,11,14,21,0,24,15,90,0,37,0,7,0,39,21,0,112,0,39,0,7,8,8,8,7,22,0,113,11,14,21,0,24,0,8,7,0,37,0,29,0,41,21,0,31,8,8,22,0,114,11,14,21,0,24,0,8,0,7,0,6,19,7,0,37,0,29,0,41,21,0,32,8,8,22,0,115,11,14,21,0,24,0,8,0,37,0,21,0,7,0,20,19,0,41,0,45,8,8,7,22,0,116,11,14,21,0,24,0,23,0,7,0,46,19,7,0,37,0,20,8,22,0,117,11,14,21,0,24,0,13,0,7,0,46,19,7,0,37,21,0,79,8,22,0,118,11,14,21,0,24,0,12,0,7,0,46,19,7,0,37,0,22,8,22,0,119,11,14,21,0,24,0,12,7,0,37,0,12,8,22,0,120,11,14,21,0,24,0,23,7,0,37,0,32,0,45,7,0,5,0,186,19,8,22,0,121,11,14,21,0,24,0,13,7,0,37,0,32,0,45,7,0,5,0,187,19,8,22,0,122,11,14,21,0,24,0,6,7,22,0,123,11,14,21,0,24,0,7,7,22,0,124,11,14,21,0,124,21,0,123,0,46,19,22,0,125,11,14,0,15,0,37,21,0,10,8,22,0,126,11,14,31,0,93,0,37,21,0,92,8,22,0,127,11,14,31,0,59,0,37,21,0,55,8,22,0,128,11,14,31,0,61,0,37,31,0,38,8,22,0,129,11,14,31,0,90,22,0,130,11,14,31,0,91,22,0,131,11,14,15,91,22,0,132,11,14,31,0,87,0,37,31,0,43,8,22,0,133,11,14,31,0,88,0,37,31,0,44,8,22,0,134,11,14,31,0,102,0,37,31,0,100,8,22,0,135,11,14,21,0,33,0,46,7,0,37,31,0,39,8,22,0,136,11,14,0,33,31,0,33,0,45,7,7,0,37,31,0,34,0,24,7,8,22,0,137,11,14,15,92,0,1,0,45,19,22,0,138,11,14,15,93,22,0,139,11,14,0,24,0,36,15,94,8,22,0,140,11,14,15,95,22,0,141,11,14,15,96,22,0,142,11,14,15,97,22,0,143,11,14,15,98,22,0,144,11,14,15,99,22,0,145,11,14,0,46,0,24,15,100,0,39,0,45,0,16,0,41,0,32,0,46,7,21,0,124,21,0,119,19,8,31,0,17,0,70,7,9,3,2,0,43,0,16,0,41,0,45,8,21,0,120,0,54,19,8,8,9,3,2,0,43,0,0,21,0,122,0,51,19,8,22,0,146,11,14,15,101,0,40,15,102,8,22,0,147,11,14,15,103,22,0,148,11,14,15,104,0,24,0,16,0,41,0,46,8,15,105,9,0,32,0,32,0,45,7,0,5,0,196,19,7,0,16,0,41,0,47,8,21,0,147,0,16,0,41,0,46,8,19,31,0,148,0,16,0,41,0,47,8,15,106,0,42,15,107,8,0,16,0,41,0,46,8,19,0,16,0,41,0,47,8,15,108,0,42,15,109,8,0,29,0,41,0,46,0,51,3,2,8,19,3,6,0,43,0,25,8,0,16,0,41,0,45,8,19,9,22,0,149,11,14,15,110,31,0,149,0,32,0,45,7,0,5,0,197,19,3,3,21,0,129,0,51,0,46,0,47,3,3,17,0,43,0,0,8,22,0,150,11,14,31,0,80,0,37,21,0,83,8,22,0,151,11,14,0,5,0,41,0,198,8,22,0,152,11,14,0,5,0,41,0,199,8,22,0,153,11,14,0,32,0,45,7,0,5,0,200,19,22,0,154,11,14,15,111,22,0,155,11,14,15,112,22,0,156,11,14,15,113,22,0,157,11,14,0,24,0,36,31,0,53,0,37,31,0,52,8,8,22,0,158,11,14,0,56,0,33,21,0,124,7,0,37,21,0,123,8,0,57,21,0,124,0,58,0,33,21,0,108,7,0,37,21,0,116,21,0,155,0,24,8,8,0,59,21,0,108,0,60,21,0,24,0,2,7,0,71,0,33,21,0,109,7,0,37,0,33,21,0,116,7,8,0,65,0,33,21,0,108,7,0,37,21,0,114,21,0,155,0,24,8,8,0,64,0,25,21,0,124,0,46,19,21,0,108,0,33,21,0,124,7,19,0,37,21,0,115,21,0,155,0,24,8,8,0,61,21,0,125,0,72,0,45,0,39,21,0,152,8,0,37,15,114,8,0,73,0,24,0,74,21,0,74,0,39,21,0,153,8,0,25,0,24,19,0,37,0,24,8,0,55,15,115,0,37,0,45,0,39,21,0,152,8,8,0,75,15,116,0,37,15,117,8,0,76,0,45,0,39,21,0,152,8,0,37,21,0,133,21,0,155,0,16,0,41,0,50,8,8,8,0,77,0,45,0,39,21,0,152,8,0,37,21,0,134,21,0,155,0,16,0,41,0,45,8,8,8,0,78,0,45,0,39,21,0,152,8,0,37,21,0,127,21,0,155,21,0,75,8,8,0,79,21,0,128,0,41,21,0,124,8,0,37,21,0,128,8,0,80,31,0,142,0,37,31,0,42,8,0,81,0,45,0,39,21,0,152,8,0,37,15,118,8,0,82,31,0,157,0,37,31,0,156,8,3,42,21,0,20,21,0,154,8,22,0,159,11,14,0,56,0,33,21,0,124,7,0,37,0,47,0,42,21,0,108,8,8,0,57,21,0,123,0,37,0,45,0,39,21,0,152,8,8,0,58,0,33,21,0,108,7,0,37,21,0,110,8,0,59,21,0,116,0,37,0,45,0,39,21,0,152,8,8,0,60,21,0,110,0,37,0,45,0,39,21,0,152,8,8,0,71,0,2,21,0,108,9,0,37,0,45,0,39,21,0,152,8,8,0,65,0,33,21,0,108,7,0,37,21,0,110,8,0,64,0,25,21,0,124,0,46,19,21,0,108,0,33,21,0,124,7,19,0,37,21,0,125,0,39,21,0,110,8,21,0,125,9,8,0,61,0,32,0,46,7,21,0,124,21,0,123,19,0,37,0,45,0,39,21,0,152,8,8,3,18,21,0,20,21,0,154,8,22,0,160,11,14,21,0,67,22,0,161,11,14,21,0,66,22,0,162,11,14,0,83,21,0,160,0,84,15,119,0,85,15,120,0,86,15,121,0,87,15,122,0,39,15,123,8,3,10,21,0,20,0,32,21,0,154,7,8,22,0,163,11,14,31,0,107,22,0,164,11,14,31,0,71,22,0,165,11,14,15,124,0,88,31,0,147,0,89,15,125,0,90,15,126,0,91,0,32,0,45,0,39,21,0,152,8,7,15,127,15,128,3,2,0,43,21,0,122,0,41,0,45,8,8,3,2,0,43,0,24,0,39,21,0,6,8,8,0,92,15,129,0,93,15,130,15,131,0,24,3,2,0,43,0,25,8,0,25,0,39,21,0,146,8,19,0,94,15,132,3,14,31,0,20,0,32,21,0,154,7,8,7,22,0,166,11,14,31,0,22,22,0,167,11,14,31,0,96,22,0,168,11,14,31,0,145,22,0,169,11,14,31,0,95,22,0,170,11,14,21,0,50,0,37,31,0,54,8,22,0,171,11,14,15,133,22,0,172,11,14,31,0,105,22,0,173,11,14,31,0,106,22,0,174,11,14,21,0,98,0,37,21,0,10,8,22,0,175,11,14,31,0,76,0,37,0,24,8,0,36,21,0,11,0,39,21,0,118,8,8,22,0,176,11,14,31,0,141,0,37,31,0,41,8,22,0,177,11,14,31,0,138,0,37,21,0,40,8,22,0,178,11,14,31,0,35,0,37,21,0,129,0,41,21,0,137,8,8,22,0,179,11,14,21,0,123,21,0,124,21,0,116,21,0,108,31,0,109,31,0,110,21,0,112,31,0,113,31,0,111,21,0,125,21,0,114,31,0,115,21,0,117,21,0,118,21,0,119,21,0,120,21,0,122,21,0,121,21,0,74,21,0,75,0,25,0,24,31,0,175,21,0,151,31,0,176,21,0,133,21,0,134,21,0,127,31,0,131,21,0,130,21,0,128,31,0,177,21,0,129,21,0,31,21,0,32,21,0,158,21,0,171,21,0,136,31,0,178,21,0,137,31,0,179,21,0,135,0,5,0,32,0,33,21,0,170,21,0,162,21,0,161,31,0,169,31,0,167,31,0,168,0,31,0,39,0,40,0,41,0,42,21,0,165,0,37,31,0,172,31,0,174,31,0,173,21,0,164,0,38,3,63,15,134,16,25,0,45,21,0,1,3,2,25,21,0,1,25,21,0,1,22,1,1,22,1,2,4,2,12,25,21,0,1,3,1,0,1,21,0,1,17,25,21,0,2,21,0,1,3,2,25,21,0,1,3,1,25,0,20,0,30,0,12,0,7,0,46,19,7,21,0,1,19,0,31,0,8,7,9,0,35,0,6,7,9,25,0,32,21,1,0,0,30,21,1,15,21,0,1,7,0,33,0,16,7,21,0,2,19,7,16,7,0,16,15,135,19,25,15,136,0,12,21,0,1,21,1,15,21,1,0,7,16,19,25,0,47,0,9,21,0,1,0,22,16,17,0,17,16,0,30,0,8,0,41,0,47,8,7,16,22,0,3,11,14,21,0,1,0,29,21,0,3,17,21,0,1,0,29,31,0,3,0,30,0,6,0,41,0,46,8,7,16,17,3,2,25,21,0,2,21,1,19,16,22,0,3,22,0,4,4,2,11,14,21,0,1,3,1,0,26,31,0,4,17,21,1,16,31,0,3,8,25,0,45,21,0,1,16,25,21,0,1,0,12,16,0,12,0,46,17,0,5,0,97,17,14,21,0,1,0,32,21,0,4,7,21,1,21,9,0,35,21,0,4,7,3,2,0,43,0,46,0,37,0,22,0,20,0,45,19,8,8,21,0,2,17,25,15,137,22,0,2,11,14,15,138,22,0,3,11,14,21,0,3,21,0,1,7,0,33,31,0,3,0,33,21,0,1,7,7,7,3,2,0,43,0,12,0,40,0,21,8,8,31,0,2,21,0,1,7,3,2,0,43,0,12,0,40,0,12,8,8,25,21,0,1,15,139,0,36,15,140,15,141,3,2,0,43,21,1,4,0,40,0,21,8,8,0,37,15,142,8,8,15,143,0,36,15,144,8,3,3,0,43,21,1,4,0,40,0,6,8,8,22,0,2,11,25,21,0,1,21,1,26,21,0,2,17,25,21,0,1,0,30,0,20,0,41,0,45,8,7,0,35,0,8,7,0,46,19,0,40,0,7,8,21,0,2,17,22,0,3,11,14,21,0,1,21,0,3,0,45,3,2,15,145,3,2,0,43,0,45,0,12,31,0,3,17,8,21,0,2,17,25,21,0,4,22,0,5,11,14,0,45,0,25,21,0,2,17,22,0,6,11,14,21,0,1,22,0,7,11,14,15,146,22,0,8,11,14,31,0,8,21,0,7,0,12,0,46,17,0,44,0,32,21,0,5,7,15,147,0,37,0,24,8,21,0,2,19,8,16,25,21,0,1,0,14,0,40,21,1,27,8,21,0,2,17,22,0,3,11,14,31,0,3,0,35,21,1,28,21,0,1,0,15,16,0,42,0,16,8,0,42,21,1,29,0,41,21,0,2,0,15,16,0,42,0,16,8,8,8,7,7,16,22,0,4,11,14,0,45,0,33,31,0,4,7,16,25,21,0,1,22,0,2,11,14,21,1,29,21,1,25,0,32,0,45,7,0,13,21,1,29,19,0,13,3,4,21,0,1,0,44,0,30,15,148,7,8,16,22,0,3,11,14,15,149,22,0,4,11,14,15,150,0,37,15,151,8,0,1,0,45,19,25,21,0,1,22,0,2,11,14,0,35,0,8,7,0,7,0,46,19,0,31,0,8,7,0,35,0,6,7,9,3,2,0,16,21,0,1,17,22,0,3,11,14,21,1,8,0,42,15,152,8,0,1,0,45,19,25,21,0,1,0,12,16,0,13,0,46,17,0,5,0,106,17,14,21,0,1,21,1,31,16,22,0,5,11,14,21,0,1,21,1,12,0,46,17,0,35,0,8,7,0,46,17,22,0,6,11,14,21,0,6,21,1,28,21,0,1,0,15,16,0,42,0,16,8,0,40,21,1,72,0,7,0,46,19,8,7,16,22,0,7,11,14,21,0,1,0,22,16,0,17,16,0,30,0,46,0,24,21,0,5,0,30,0,8,0,41,31,0,6,8,7,16,0,42,0,16,8,0,40,31,0,7,8,0,46,0,42,0,7,8,19,3,2,0,43,0,20,0,41,0,45,8,8,7,16,21,0,4,21,0,5,17,0,29,31,0,5,21,1,14,16,17,0,1,0,45,17,25,21,0,2,0,12,16,22,0,3,11,14,31,0,3,0,7,21,0,1,0,12,16,17,22,0,4,11,14,21,0,4,0,13,0,45,17,0,5,0,107,17,14,0,45,0,20,16,22,0,5,11,14,21,0,1,0,14,16,22,0,6,11,0,27,21,0,4,17,0,24,0,35,0,8,7,0,46,19,0,17,9,0,42,0,15,8,16,22,0,7,11,14,31,0,6,0,28,31,0,4,17,0,34,15,153,7,21,0,2,0,14,16,17,14,21,0,7,0,30,0,20,0,30,0,6,7,21,0,5,19,0,33,0,29,7,21,0,1,0,15,16,19,21,1,72,21,0,2,19,7,16,0,1,0,45,17,25,21,0,1,0,31,0,6,7,16,0,3,16,0,27,0,41,0,32,0,46,7,0,7,0,22,19,0,18,0,45,19,8,16,0,31,0,6,7,16,0,1,0,45,17,25,21,0,1,0,12,16,0,12,0,46,17,0,5,0,108,17,14,21,0,1,0,30,21,1,7,7,16,0,35,0,8,7,0,46,17,0,5,0,109,17,14,21,0,1,21,1,36,16,25,21,0,1,0,22,16,22,0,3,11,14,21,0,1,21,1,12,0,46,17,22,0,4,11,0,35,0,8,7,0,46,17,22,0,5,11,14,31,0,3,0,17,16,0,30,0,8,0,41,21,0,5,8,0,42,0,6,8,7,31,0,5,0,17,16,0,15,31,0,4,17,17,0,33,0,29,7,21,0,1,0,15,16,17,25,21,0,1,21,1,4,16,21,1,153,16,14,21,0,1,0,12,16,0,20,0,45,17,25,21,0,1,0,12,16,0,33,0,7,7,0,46,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,31,0,4,0,27,31,0,3,17,22,0,6,11,14,21,0,6,0,35,0,8,7,0,46,17,0,17,16,0,15,31,0,6,17,0,30,0,8,0,41,21,0,5,8,0,42,0,6,8,7,31,0,5,0,17,16,17,0,33,0,29,7,21,0,1,0,15,16,17,25,21,0,1,0,12,16,0,13,0,46,17,0,5,0,110,17,14,21,0,1,0,22,16,0,6,0,46,17,0,17,16,0,30,21,0,1,0,42,0,29,0,41,0,17,8,8,7,16,0,1,0,41,0,16,0,41,0,45,8,8,16,25,21,0,1,0,12,16,0,13,0,46,17,0,5,0,111,17,14,21,0,1,0,22,16,22,0,3,11,14,21,0,3,0,6,0,46,17,0,17,16,0,30,21,0,1,0,42,0,29,0,41,15,154,8,8,7,16,0,1,0,41,0,16,0,41,21,0,3,8,8,16,25,21,0,1,22,0,3,22,0,4,4,2,11,14,15,155,22,0,5,11,14,0,24,0,39,31,0,3,8,0,25,0,6,21,0,5,0,13,0,41,0,45,8,7,9,31,0,5,0,21,7,3,2,0,43,0,13,0,41,0,45,8,8,19,25,21,0,1,0,12,16,0,12,0,46,17,0,5,0,116,17,14,21,0,2,21,1,45,21,0,1,0,22,16,17,0,33,0,16,7,21,0,1,17,25,21,0,2,0,12,16,0,12,0,46,17,0,5,0,117,17,14,21,0,1,0,14,16,22,0,3,11,0,22,0,40,0,12,8,21,0,2,17,0,5,0,118,17,14,0,45,22,0,4,11,14,31,0,3,0,34,15,156,7,21,0,2,17,14,21,0,1,0,15,16,0,16,21,0,4,17,25,21,0,2,0,30,21,0,1,0,42,21,1,49,8,7,16,25,21,0,1,22,0,2,22,0,3,22,0,4,22,0,5,22,0,6,22,0,7,4,6,11,14,0,120,0,26,31,0,2,17,0,26,0,119,17,22,0,8,11,14,0,121,0,26,21,0,8,17,22,0,9,11,14,0,122,0,26,21,0,8,17,22,0,10,11,14,0,123,0,26,21,0,8,17,22,0,11,11,14,0,124,0,26,31,0,8,17,22,0,12,11,14,0,24,0,30,31,0,5,0,30,0,0,0,12,0,46,19,7,0,15,9,0,35,0,8,7,0,46,19,3,2,0,43,21,1,4,8,7,0,15,9,0,35,0,8,7,0,46,19,0,5,31,0,12,19,3,2,0,16,31,0,4,17,22,0,13,11,14,15,157,15,158,3,2,0,43,0,25,0,39,31,0,3,8,8,25,21,0,1,0,12,16,0,13,0,46,17,0,5,0,125,17,14,21,0,1,0,22,16,0,20,0,45,17,0,5,0,126,17,14,21,0,1,0,29,0,45,0,20,16,17,25,21,0,2,0,30,21,1,46,0,41,21,0,1,0,22,16,8,7,16,25,21,0,2,0,30,21,1,46,0,41,21,0,1,8,7,16,25,21,0,1,0,12,16,0,13,0,46,17,0,5,0,128,17,14,21,0,1,0,22,16,22,0,3,11,14,21,0,1,0,29,21,0,3,0,17,16,0,30,0,7,0,41,0,46,0,7,31,0,3,17,8,7,16,17,25,21,0,2,21,1,6,16,0,5,0,129,17,14,21,0,1,0,12,0,45,17,0,6,21,0,1,17,0,9,21,0,2,17,0,11,16,0,8,21,0,1,17,0,7,21,0,2,17,25,21,0,2,21,1,4,0,44,0,15,0,16,0,45,19,8,16,22,0,2,12,14,21,0,2,21,1,7,16,0,5,0,131,17,14,21,0,2,22,0,3,11,22,0,4,11,14,21,0,1,0,8,21,0,3,17,0,17,16,0,31,0,33,15,159,0,44,15,160,8,7,7,16,25,21,0,2,0,22,16,0,12,21,0,1,17,0,5,0,132,17,14,21,0,2,0,30,0,12,0,41,0,11,0,39,0,19,8,8,7,16,0,35,0,8,7,0,46,17,0,5,0,131,17,14,21,0,2,21,1,36,16,25,0,32,0,45,7,0,5,0,133,19,25,21,0,1,21,1,1,16,22,0,3,11,14,21,0,3,0,16,0,45,17,0,45,0,42,0,13,8,0,32,31,0,3,7,0,28,0,46,19,0,30,21,0,0,7,9,0,35,0,8,7,0,46,19,3,2,0,43,0,13,0,41,0,47,8,8,16,25,21,0,1,15,161,21,0,2,19,25,0,33,21,0,1,7,25,15,162,0,24,3,2,0,35,21,0,1,7,16,25,21,0,1,21,0,2,16,25,21,0,1,15,163,0,25,21,1,62,9,0,44,15,164,8,3,2,0,43,0,25,0,39,0,0,8,0,13,0,51,19,8,21,0,2,17,25,21,0,1,21,1,8,0,40,21,0,4,21,1,65,21,1,23,21,0,4,7,0,37,0,30,21,0,4,7,8,8,8,21,0,2,17,25,21,0,1,21,1,8,0,40,21,0,4,21,1,65,0,30,21,0,4,7,8,8,21,0,2,17,25,21,0,1,25,0,45,21,0,1,3,2,0,43,21,0,2,8,25,21,0,1,21,0,5,0,40,21,0,4,8,21,0,2,17,22,0,6,11,14,21,1,55,0,35,0,24,21,1,4,9,0,44,0,15,0,42,0,16,8,8,7,21,0,1,19,0,45,0,14,0,24,0,35,0,8,7,0,46,19,0,17,9,0,42,0,15,8,9,3,2,0,43,21,1,4,8,9,22,0,7,11,14,15,165,22,0,8,11,14,21,1,1,0,45,0,16,0,41,0,47,8,0,12,0,32,21,0,8,7,19,3,2,0,43,0,16,0,41,0,45,8,0,12,0,53,19,8,9,22,0,9,11,14,21,0,5,21,1,85,21,0,9,17,22,0,10,11,14,0,45,21,0,8,0,50,8,22,0,11,11,14,31,0,11,31,0,10,16,0,45,21,1,68,3,2,21,1,1,0,29,0,46,0,51,3,2,19,3,2,0,43,31,0,9,8,16,22,0,12,22,0,13,4,2,11,14,0,24,0,39,21,1,69,8,0,7,0,46,19,0,44,15,166,8,22,0,14,11,14,0,24,0,36,15,167,8,22,0,15,11,14,31,0,13,31,0,14,21,0,6,17,0,32,21,0,1,7,0,42,31,0,15,8,0,32,21,0,5,7,21,1,150,9,15,168,9,3,2,0,43,21,1,69,8,16,25,21,0,1,0,34,21,1,72,7,21,0,2,17,0,15,16,0,35,0,8,7,0,46,17,25,21,0,2,0,16,0,46,17,21,0,1,3,2,0,43,21,0,2,0,16,0,45,17,8,25,21,0,1,0,15,16,0,30,21,1,73,7,16,0,35,0,18,7,0,45,17,0,6,0,46,17,25,0,1,0,42,0,24,0,36,0,32,3,0,7,0,15,21,1,75,0,40,21,0,2,8,19,8,8,21,1,77,0,24,0,36,0,25,8,21,0,1,19,3,2,0,43,0,15,0,39,0,22,8,0,20,0,45,19,8,25,21,0,1,0,15,16,0,16,0,45,17,21,1,75,16,22,0,3,11,14,21,0,1,0,15,16,0,30,21,1,75,0,45,21,1,13,3,2,0,43,0,22,0,40,0,12,8,8,21,0,3,19,0,5,0,137,19,7,16,14,21,0,3,0,35,0,8,7,0,46,17,0,17,16,0,15,31,0,3,17,0,30,0,33,0,16,7,7,21,0,1,0,30,21,1,10,7,16,17,25,21,0,1,0,12,0,40,0,18,8,21,0,2,17,0,33,0,7,7,0,46,17,22,0,3,11,14,21,0,1,21,1,75,0,40,21,1,11,8,21,0,2,17,22,0,4,11,14,21,0,4,0,30,0,22,0,13,21,0,3,19,7,16,0,35,0,8,7,0,46,17,0,5,0,138,17,14,21,0,4,0,30,0,28,0,41,0,32,21,0,3,7,0,7,0,22,19,8,7,16,22,0,5,11,14,21,0,5,0,35,21,1,13,7,16,0,5,0,139,17,14,31,0,4,0,30,0,46,0,24,0,16,0,45,19,3,2,0,43,0,22,0,20,31,0,3,19,8,7,16,0,35,0,6,7,0,45,17,22,0,6,11,14,21,0,1,0,15,0,40,0,26,8,21,0,2,17,0,15,31,0,5,0,16,0,45,17,0,26,31,0,6,3,1,17,17,25,0,50,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,30,0,22,7,16,21,1,36,16,0,30,15,169,7,16,25,21,0,1,0,15,16,22,0,3,11,0,22,16,22,0,4,11,14,21,0,3,0,30,21,1,75,7,16,22,0,5,11,14,21,0,5,0,16,0,45,17,0,22,16,22,0,6,11,14,21,0,1,0,12,16,22,0,7,11,14,21,0,5,0,30,0,22,0,12,21,0,6,19,7,16,0,35,0,8,7,0,46,17,0,5,0,140,17,14,21,0,7,0,23,21,0,6,17,0,5,0,141,17,14,15,170,22,0,8,11,14,21,0,1,21,1,75,16,22,0,9,11,14,0,46,22,0,10,11,14,0,45,0,20,16,22,0,11,11,22,0,12,11,14,21,0,7,0,17,16,0,34,15,171,7,21,0,9,21,1,55,16,21,0,8,0,8,7,0,46,17,21,1,55,16,17,14,0,34,15,172,31,0,3,0,30,0,15,7,16,7,7,22,0,13,11,14,21,0,11,21,0,13,15,173,3,2,0,43,31,0,6,0,20,21,0,7,17,8,21,0,12,17,25,21,0,2,0,22,16,22,0,3,11,14,21,0,1,0,22,16,22,0,4,11,14,21,0,3,0,23,21,0,4,17,0,5,0,144,17,14,21,0,1,0,34,0,8,0,41,21,0,2,0,42,0,16,8,8,0,24,3,2,0,43,0,25,0,13,31,0,3,19,8,7,31,0,4,0,17,16,17,25,21,0,1,21,0,2,9,25,21,0,1,22,0,3,22,0,4,22,0,5,4,3,11,14,31,0,5,31,0,4,31,0,3,19,25,21,0,1,22,0,3,22,0,4,4,2,11,14,31,0,4,31,0,3,7,25,21,0,1,22,0,3,22,0,4,22,0,5,4,3,11,14,31,0,5,31,0,4,31,0,3,8,25,0,32,21,1,68,7,22,0,0,11,14,15,174,22,0,1,11,14,0,0,0,23,0,51,19,0,44,21,0,1,21,1,69,7,8,22,0,2,11,14,15,175,22,0,3,11,14,15,176,22,0,4,11,14,15,177,22,0,5,11,14,0,146,0,24,0,147,0,45,21,0,3,0,46,8,21,0,4,9,0,148,0,46,21,0,3,0,45,8,21,0,4,9,0,149,0,46,21,0,3,0,46,8,31,0,4,9,0,150,0,46,21,0,3,0,46,8,31,0,5,9,0,151,0,46,31,0,3,0,46,8,3,12,21,1,19,16,22,0,6,22,0,7,4,2,11,14,15,178,3,1,0,26,31,0,7,21,1,37,0,41,0,30,0,22,7,8,21,0,6,17,17,21,1,16,31,0,6,21,1,81,16,8,22,0,8,11,14,15,179,22,0,9,11,14,15,180,0,42,0,24,0,16,0,46,19,31,0,9,0,25,19,21,0,2,9,0,32,0,32,21,1,68,7,7,15,181,21,1,84,0,16,0,41,0,45,8,19,0,24,0,16,0,46,19,31,0,2,9,3,4,0,43,0,24,0,16,0,45,19,0,39,0,51,0,24,0,47,3,2,0,43,0,13,0,41,0,47,8,8,3,2,0,43,0,13,0,41,0,45,8,8,8,8,8,25,21,0,1,0,7,0,46,17,22,0,2,11,14,0,152,0,153,3,2,0,16,21,0,1,17,22,0,3,11,14,0,19,0,42,0,12,8,0,7,0,46,19,0,12,0,41,0,45,8,0,7,0,46,19,3,2,0,16,21,0,1,17,22,0,4,11,14,15,182,15,183,3,2,0,16,21,0,1,17,22,0,5,11,14,0,154,0,26,31,0,3,17,0,26,0,119,17,22,0,6,11,14,0,155,0,26,21,0,6,17,22,0,7,11,14,0,156,0,26,31,0,6,17,22,0,8,11,14,21,1,8,0,42,0,24,0,36,15,184,15,185,3,2,0,43,0,25,0,39,21,1,4,8,8,8,8,25,21,0,1,0,12,16,0,13,0,46,17,0,5,0,157,17,14,21,0,1,21,1,12,0,46,17,22,0,3,11,14,21,0,2,0,12,0,40,0,7,8,21,0,1,17,15,186,21,0,2,17,14,21,0,3,0,35,0,8,7,21,0,1,15,187,0,37,0,46,8,21,0,2,17,17,25,21,0,1,21,1,89,21,0,2,17,22,0,3,11,14,21,0,1,0,15,16,22,0,4,11,0,22,16,22,0,5,11,0,11,31,0,3,17,22,0,6,11,14,31,0,4,0,27,21,0,6,0,7,31,0,5,17,17,0,26,31,0,6,0,33,21,1,10,0,42,0,27,8,7,0,37,21,0,1,0,42,15,188,8,8,21,0,2,17,17,0,15,21,0,1,21,1,75,16,17,25,21,0,1,21,1,89,21,0,2,17,22,0,3,11,14,21,0,1,0,15,16,22,0,4,11,0,22,16,0,11,21,0,3,17,22,0,5,11,14,21,0,5,0,33,21,1,10,0,42,0,28,0,41,0,7,0,41,31,0,3,8,8,8,7,0,37,21,0,1,0,42,15,189,8,8,21,0,2,17,0,26,31,0,4,0,28,31,0,5,17,17,0,15,21,0,1,21,1,75,16,17,25,15,190,22,0,3,11,14,15,191,22,0,4,11,14,21,0,1,21,0,3,31,0,4,3,2,0,43,21,1,4,8,16,25,21,0,2,0,12,16,0,23,0,46,17,0,5,0,163,17,14,21,0,2,21,1,10,16,22,0,2,12,0,22,16,22,0,3,11,14,21,0,1,21,0,3,0,20,0,45,17,0,44,0,24,0,36,15,192,8,8,21,0,2,17,25,21,0,1,21,1,75,16,0,27,21,0,2,17,22,0,3,11,14,21,0,1,21,1,12,21,0,2,17,22,0,4,11,0,35,0,8,7,0,46,17,22,0,5,11,14,21,0,1,0,15,16,22,0,6,11,14,21,0,5,0,17,16,0,15,31,0,4,17,22,0,7,11,14,21,0,1,15,193,0,36,0,32,21,0,3,0,35,0,8,7,0,46,17,0,17,16,0,30,15,194,7,16,0,15,31,0,3,17,7,8,16,25,21,0,4,22,0,5,11,14,15,195,22,0,6,11,14,15,196,22,0,7,11,14,21,0,1,21,0,5,21,1,8,9,15,197,15,198,31,0,7,3,4,0,43,0,12,0,20,0,45,19,0,40,0,6,0,41,0,8,0,41,0,47,8,8,8,8,21,0,2,17,21,1,79,16,25,21,0,1,0,12,16,0,13,0,46,17,0,5,0,168,17,14,21,0,4,22,0,5,11,14,15,199,22,0,6,11,14,21,0,1,31,0,6,15,200,3,2,0,43,0,46,0,37,0,22,0,20,0,45,19,8,8,21,0,2,17,25,21,0,2,0,12,16,0,23,0,46,17,0,5,0,171,17,14,21,0,2,21,1,10,16,22,0,3,11,14,21,0,3,0,30,21,1,7,0,7,0,46,19,7,16,22,0,4,11,0,35,0,6,7,0,45,17,22,0,5,11,14,21,0,5,0,23,0,46,17,0,5,0,172,17,14,21,0,1,21,1,10,16,22,0,6,11,0,22,16,22,0,7,11,14,21,0,3,0,24,0,35,0,8,7,0,46,19,15,201,3,2,0,43,31,0,5,8,16,22,0,8,11,14,21,0,6,21,0,7,0,12,21,0,8,17,0,7,0,46,17,0,44,0,24,0,36,15,202,8,8,16,0,15,21,0,3,17,25,21,0,1,0,30,21,1,6,7,16,0,35,0,8,7,0,46,17,0,5,0,176,17,14,21,0,1,0,30,0,13,0,41,0,50,8,7,16,0,35,0,8,7,0,46,17,0,5,0,177,17,14,0,3,22,0,5,11,14,21,0,1,0,25,0,37,0,45,8,0,44,0,24,15,203,0,22,0,42,0,33,0,7,7,8,19,8,21,0,2,17,22,0,1,12,14,21,0,1,0,4,21,0,1,21,0,5,16,22,0,6,11,17,22,0,7,11,14,0,45,22,0,8,11,14,31,0,6,0,30,15,204,0,33,0,29,7,31,0,7,19,21,0,4,9,7,16,25,21,0,1,0,12,16,0,12,0,46,17,0,5,0,178,17,14,21,1,99,0,24,7,22,0,3,11,14,21,0,1,21,0,3,0,1,0,45,0,39,0,17,8,19,0,30,21,1,8,0,39,15,205,8,7,0,35,0,30,0,30,0,26,7,7,7,3,0,0,20,16,0,20,16,19,0,1,0,30,0,45,7,3,0,0,42,0,15,8,0,1,0,24,19,9,19,3,2,0,43,21,1,74,0,20,0,46,19,8,16,25,21,0,2,0,12,16,22,0,3,11,14,21,0,1,0,12,16,0,13,21,0,3,17,0,5,0,179,17,14,21,0,1,21,1,75,16,22,0,4,11,0,27,21,0,3,17,0,34,0,7,7,21,0,2,21,1,75,16,17,22,0,5,11,14,21,0,5,0,45,0,16,0,41,0,45,8,0,12,0,46,19,3,2,0,43,21,0,3,0,12,0,46,17,8,16,22,0,6,11,14,31,0,5,0,30,0,12,0,41,0,45,8,7,0,35,0,8,7,0,46,19,0,46,3,2,0,43,21,0,6,8,16,0,5,0,180,17,14,21,0,1,0,42,0,24,0,36,0,25,0,39,21,0,1,0,15,16,15,206,15,207,3,2,0,43,21,0,1,0,12,16,0,12,21,0,3,17,8,16,8,8,8,22,0,7,11,14,21,0,2,0,15,16,21,1,99,21,0,7,7,31,0,6,17,0,1,3,0,31,0,7,16,17,25,21,0,1,21,1,4,16,0,5,0,181,17,14,21,0,1,21,1,101,21,1,132,3,2,0,43,21,0,2,21,1,74,16,0,13,0,47,17,8,21,0,2,17,25,21,0,1,0,12,16,0,23,0,46,17,0,5,0,182,17,14,21,0,1,21,1,10,16,22,0,1,12,14,21,0,1,0,22,16,0,51,0,42,0,13,8,0,8,0,13,0,41,0,46,8,19,16,0,5,0,183,17,14,21,0,1,0,30,21,1,6,7,16,0,35,0,8,7,0,46,17,0,5,0,184,17,14,21,0,2,0,30,0,25,0,8,0,33,0,9,0,39,0,11,8,7,19,0,33,0,7,7,0,46,19,0,6,0,7,19,0,41,21,0,1,0,22,16,8,7,16,0,33,0,29,7,21,0,1,17,25,21,0,1,21,1,103,0,46,0,45,3,2,0,37,0,47,3,1,8,19,25,21,0,1,21,1,104,21,0,5,7,21,0,2,17,22,0,6,11,0,30,0,21,0,41,0,45,8,7,16,22,0,7,11,14,21,0,4,22,0,8,11,14,15,208,15,209,3,2,0,16,21,0,4,0,46,21,1,62,3,2,0,43,0,0,0,13,0,51,19,8,16,17,22,0,9,11,14,15,210,22,0,10,11,14,15,211,22,0,11,11,14,15,212,22,0,12,11,14,21,0,1,21,0,12,31,0,6,7,21,0,2,17,25,0,24,0,25,3,2,0,43,0,20,8,22,0,6,11,14,21,0,1,21,1,104,21,0,5,7,0,34,0,7,0,42,21,0,6,8,31,0,6,0,7,0,25,19,3,2,0,43,0,24,0,13,0,45,19,8,7,0,12,0,40,21,1,11,8,19,21,0,2,17,22,0,7,11,14,0,24,0,20,9,21,1,94,0,24,21,1,67,0,20,7,9,3,3,0,43,0,12,0,42,0,23,8,0,6,0,46,19,0,8,0,45,0,42,0,21,8,19,8,22,0,8,11,14,21,0,1,21,0,8,21,0,7,0,16,0,41,0,22,0,33,0,7,7,0,46,19,8,16,17,21,1,66,21,0,4,7,21,0,2,31,0,8,31,0,7,0,16,0,45,17,17,17,21,1,79,16,25,21,0,4,22,0,6,11,14,0,45,15,213,0,37,0,32,15,214,7,8,21,0,2,17,22,0,7,11,14,21,0,1,21,0,5,21,0,2,17,22,0,8,11,14,15,215,22,0,9,11,14,21,0,1,31,0,9,15,216,3,2,0,43,21,0,8,21,1,7,16,8,16,25,21,0,2,21,1,108,21,0,1,17,0,11,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,0,21,21,0,2,17,17,25,21,0,2,21,0,1,3,2,0,16,21,0,1,0,20,21,0,2,17,17,25,21,0,2,21,1,120,16,21,1,120,0,46,17,0,5,0,188,17,14,21,0,2,0,30,21,1,120,7,16,22,0,3,11,0,35,21,1,123,7,0,45,17,22,0,4,11,14,21,0,1,21,1,120,16,21,1,122,21,0,4,17,0,5,0,189,17,14,21,0,1,21,1,75,16,0,27,21,0,4,17,21,1,124,21,0,2,0,30,21,1,75,7,16,21,1,83,16,17,22,0,5,11,14,21,0,5,21,0,3,21,1,120,0,46,17,21,1,129,21,0,3,17,0,42,21,1,122,8,21,1,114,21,1,122,0,41,0,45,8,19,16,0,35,21,1,114,7,0,46,17,0,5,0,180,17,14,0,45,3,1,0,26,31,0,5,17,0,29,21,0,3,0,31,21,1,123,7,16,21,1,130,0,45,17,17,21,1,112,31,0,3,17,22,0,6,11,14,21,0,2,0,30,21,1,126,7,16,22,0,2,12,0,30,21,1,119,7,16,0,33,21,1,124,7,21,0,6,17,22,0,7,11,14,0,32,21,0,1,7,21,1,98,21,0,1,21,1,12,31,0,4,17,0,42,0,26,8,19,22,0,8,11,14,21,0,7,0,35,21,1,116,7,0,46,17,3,1,21,0,8,16,0,42,0,29,8,22,0,9,11,14,21,0,2,0,16,0,41,0,45,8,0,40,21,1,99,21,0,9,7,8,0,34,21,1,99,0,24,7,7,21,1,116,31,0,7,21,1,128,16,21,1,130,0,46,17,0,31,21,1,116,7,16,21,1,128,16,19,0,35,0,30,0,30,21,1,123,7,7,7,9,0,30,31,0,9,7,9,3,2,0,43,0,24,0,39,21,1,119,8,21,1,119,0,46,19,8,31,0,6,17,0,1,21,0,2,0,30,0,45,7,16,31,0,8,16,17,25,21,0,2,21,1,120,16,0,33,21,1,124,7,0,46,17,22,0,3,11,14,21,0,3,21,1,122,0,45,17,0,5,0,190,17,14,21,0,1,21,1,120,16,21,1,122,31,0,3,17,0,5,0,191,17,14,21,0,1,21,1,136,0,41,21,0,2,8,21,1,126,0,39,21,1,40,8,21,1,126,21,1,75,19,0,42,0,34,21,1,11,7,8,9,0,40,21,1,136,8,21,0,2,17,25,21,0,2,21,1,120,16,21,1,121,0,46,17,0,5,0,192,17,14,21,0,1,21,1,75,16,21,1,119,0,40,21,1,122,8,21,0,2,17,0,5,0,193,17,14,21,0,2,21,1,126,16,0,30,21,1,7,7,16,0,35,21,1,114,7,0,46,17,0,5,0,194,17,25,21,0,1,21,1,75,16,21,1,135,21,0,2,17,0,30,0,35,21,1,112,7,7,16,21,1,127,16,0,30,0,32,21,0,1,7,21,1,50,0,29,0,41,21,0,2,8,19,7,16,25,21,0,1,21,1,139,21,0,2,17,14,21,0,2,21,1,126,16,22,0,2,12,14,21,0,2,21,1,137,16,21,1,125,16,0,35,21,1,123,7,0,45,17,21,1,124,21,0,1,21,1,120,16,17,22,0,3,11,14,21,0,3,21,1,117,21,0,2,17,0,35,21,1,114,7,0,46,17,0,5,0,195,17,14,21,0,1,21,1,140,31,0,3,21,1,127,16,0,24,21,1,129,0,33,21,1,137,0,39,21,1,125,8,7,19,21,0,2,17,0,26,21,0,2,17,17,25,21,0,1,21,1,139,21,0,2,17,14,21,0,2,21,1,126,16,22,0,2,12,14,21,0,1,21,1,120,16,22,0,3,11,14,21,0,2,21,0,3,0,42,21,1,117,8,21,1,114,21,1,137,19,16,0,35,21,1,114,7,0,46,17,21,1,152,16,14,21,0,1,21,1,140,31,0,3,21,1,127,16,0,24,21,1,129,0,33,21,1,137,0,39,21,1,125,8,7,19,21,0,2,17,0,26,21,0,2,17,21,1,14,16,17,25,21,0,1,21,1,150,16,25,21,0,5,14,21,0,1,21,0,4,21,0,2,17,25,21,0,1,21,1,150,16,0,24,15,217,3,2,0,43,0,45,0,24,21,1,1,0,39,0,46,0,16,0,41,0,32,0,47,7,21,1,124,21,1,119,19,8,21,1,75,0,32,21,1,144,7,19,3,2,0,43,0,16,0,41,0,45,8,21,1,120,0,53,19,8,8,9,3,2,0,43,21,1,75,0,41,0,32,21,1,154,7,8,21,1,114,21,1,75,19,8,8,21,0,1,17,25,21,0,1,21,1,1,16,25,21,0,1,21,1,150,16,25,21,0,2,0,42,21,0,1,8,0,37,21,0,2,21,0,1,9,8,25,21,0,1,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,1,146,21,1,125,9,22,0,7,11,14,31,0,6,15,218,15,219,0,32,21,1,154,7,3,2,0,43,0,24,0,39,21,0,7,8,8,3,2,0,43,0,25,0,39,31,0,7,8,8,31,0,4,17,25,21,0,1,21,1,1,16,25,21,0,1,21,1,159,16,25,21,0,1,21,1,163,16,25,21,0,2,21,0,1,16,25,21,0,1,21,1,166,16,25,21,0,2,0,35,21,0,1,7,16,25,0,24,21,1,74,0,39,21,1,153,8,21,0,1,19,0,25,0,24,19,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,74,21,0,1,17,21,1,153,16,14,31,0,6,25,21,0,1,21,1,74,16,21,1,120,0,47,17,21,1,152,16,14,21,0,1,0,30,21,1,120,7,16,21,1,120,0,46,17,0,35,21,1,114,7,0,46,17,21,1,153,16,14,21,0,1,21,1,151,16,22,0,3,11,14,21,0,3,0,30,21,1,7,7,16,0,35,21,1,114,7,0,46,17,21,1,153,16,14,21,0,1,0,30,21,1,130,0,41,0,50,8,7,16,21,1,151,16,21,1,118,21,0,3,17,0,35,21,1,114,7,0,46,17,21,1,153,16,14,21,0,3,0,3,16,22,0,4,11,14,0,46,21,1,122,21,0,4,17,0,35,21,1,114,7,0,46,17,21,1,153,16,14,31,0,4,21,1,125,16,21,1,129,16,22,0,5,11,14,21,0,5,0,30,0,50,7,16,21,1,151,21,0,1,0,30,21,1,119,7,16,21,1,129,16,17,0,29,31,0,5,21,1,151,31,0,3,17,21,1,31,16,17,25,21,0,2,21,1,120,16,21,1,120,0,46,17,21,1,152,16,14,21,0,2,0,30,21,1,7,7,16,0,35,21,1,114,7,0,46,17,21,1,152,16,14,21,0,2,21,1,135,16,22,0,3,11,14,21,0,1,0,30,21,1,119,7,0,40,21,1,74,8,21,0,3,17,21,1,153,16,14,21,0,1,21,1,151,0,40,0,29,0,41,21,1,31,8,8,31,0,3,17,25,21,0,1,21,1,4,16,21,1,153,16,14,21,0,1,21,1,120,16,21,1,120,0,45,17,21,1,153,16,14,21,0,1,21,1,126,16,0,16,0,45,17,25,21,0,2,21,1,120,0,40,21,1,124,8,21,0,1,17,22,0,3,11,14,21,0,3,0,46,0,42,21,1,122,8,21,1,114,21,1,122,0,41,0,45,8,19,16,21,1,153,16,14,21,0,2,0,46,21,1,119,3,2,0,43,21,0,3,8,16,22,0,4,11,14,21,0,1,21,1,119,16,21,1,122,21,0,4,17,21,1,153,16,14,21,0,1,21,1,158,21,1,133,0,41,21,0,4,8,3,2,0,43,31,0,3,8,16,21,1,74,21,0,2,17,21,1,153,16,14,21,0,1,21,1,134,31,0,4,17,25,21,0,1,21,1,119,16,21,1,120,0,47,17,21,1,153,16,14,21,0,1,21,1,158,16,21,1,74,21,0,2,17,21,1,153,16,14,21,0,1,21,1,158,0,46,17,25,21,0,1,21,1,119,16,21,1,120,0,46,17,21,1,153,16,14,21,0,1,21,1,158,16,25,21,0,1,21,1,120,16,21,1,120,0,46,17,21,1,152,16,14,21,0,1,0,30,21,1,7,7,16,0,35,21,1,114,7,0,46,17,21,1,152,16,14,21,0,1,21,1,134,0,41,0,46,8,21,1,122,21,1,134,0,41,0,50,8,19,0,35,21,1,114,7,0,46,19,16,21,1,153,16,14,21,0,1,0,3,16,25,0,24,0,39,21,1,74,8,21,1,117,0,45,19,21,1,153,9,0,25,21,1,162,21,1,143,21,0,1,7,7,19,25,0,24,0,39,21,1,74,8,21,1,117,0,45,19,21,1,153,9,0,25,0,45,0,39,21,1,152,8,0,37,21,1,161,21,1,143,21,0,1,7,7,8,19,25,0,24,0,39,21,1,120,8,21,1,117,0,45,19,21,1,153,9,0,25,21,1,170,21,1,143,21,0,1,7,0,24,0,41,21,1,4,0,39,21,1,153,8,8,9,7,19,25,21,1,162,21,1,143,21,0,1,7,7,25,0,24,0,39,21,1,120,8,21,1,117,0,45,19,21,1,153,9,0,25,0,24,21,0,1,21,1,130,19,0,37,21,1,119,21,1,117,0,46,19,0,44,21,1,134,0,41,0,46,8,21,0,1,21,1,134,0,41,0,50,8,19,21,1,151,21,1,158,19,8,8,19,25,21,0,1,0,32,15,220,7,3,2,0,43,21,1,120,0,41,0,32,21,1,144,7,8,8,25,21,1,143,21,0,2,7,22,0,3,11,14,21,0,3,0,41,21,0,1,8,0,37,31,0,3,8,21,1,143,21,0,1,7,9,25,21,0,1,21,1,165,21,1,143,21,0,2,7,8,25,21,0,1,21,1,164,21,0,2,8,21,1,155,21,0,1,21,1,124,16,21,1,164,21,0,2,8,8,25,21,0,1,21,1,124,16,21,1,164,21,0,2,8,25,21,1,143,21,0,1,7,0,37,21,1,143,21,0,2,7,8,25,21,1,143,21,0,1,7,0,41,21,0,2,8,25,21,0,1,0,37,21,1,154,8,25,21,1,143,21,0,2,7,21,1,143,21,0,1,7,9,0,37,21,0,1,0,32,0,45,0,39,21,1,152,8,7,15,221,3,2,0,43,0,24,0,39,21,1,146,8,8,21,0,2,17,8,25,21,0,1,15,222,21,0,5,21,1,171,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,1,117,21,1,136,21,0,1,19,21,1,171,9,22,1,2,12,14,21,0,1,21,1,3,3,2,25,21,0,1,21,2,2,16,25,21,0,1,21,2,2,16,25,21,0,1,0,14,0,40,21,2,13,8,21,0,2,17,0,5,0,98,17,14,21,0,1,0,34,21,0,4,7,21,0,2,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,7,0,27,21,0,6,17,21,2,13,31,0,5,17,0,5,0,99,17,14,21,0,7,0,28,31,0,6,17,0,35,0,8,7,0,46,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,0,40,0,30,0,32,31,0,10,7,0,16,0,6,0,41,0,8,0,41,31,0,8,8,8,19,21,0,4,21,0,9,0,42,0,16,8,19,7,8,31,0,9,0,22,16,17,0,15,16,0,15,31,0,7,17,25,21,0,1,21,1,2,21,0,2,17,25,21,0,1,0,30,21,1,2,0,41,21,0,2,8,7,16,25,21,0,2,0,30,21,0,1,0,42,21,1,2,8,7,16,25,21,0,1,0,30,21,1,2,7,16,25,21,0,1,21,1,2,21,0,2,17,25,21,0,1,21,2,23,21,1,2,7,21,0,2,17,25,21,2,11,0,16,0,23,19,21,2,11,21,2,25,19,22,0,3,11,14,21,0,1,0,22,0,40,21,0,3,8,21,0,2,17,22,0,4,22,0,5,4,2,11,14,21,0,1,15,223,0,40,15,224,8,21,0,2,17,22,0,6,11,14,21,0,4,31,0,6,3,2,25,21,0,2,22,0,3,11,14,21,0,1,22,0,4,11,14,15,225,21,1,6,3,2,0,43,0,12,0,41,21,1,7,8,8,22,0,5,11,14,0,45,21,0,5,16,25,21,0,1,0,12,0,41,0,45,8,0,44,21,0,2,8,9,25,0,33,21,0,1,7,25,21,1,3,0,16,21,0,1,17,21,0,4,16,0,46,0,13,21,0,1,17,0,44,15,226,21,0,5,7,8,21,0,2,17,25,21,0,2,0,12,16,0,33,0,7,7,0,46,17,22,0,3,11,0,7,21,0,1,0,12,16,17,22,0,4,11,14,31,0,3,0,13,0,45,17,0,5,0,101,17,14,21,0,4,0,13,0,45,17,0,5,0,102,17,14,21,0,2,21,2,12,0,46,17,22,0,5,11,14,21,0,2,0,22,16,22,0,6,11,14,21,0,1,21,2,8,16,22,0,1,12,14,21,0,1,21,2,12,21,0,4,17,22,0,7,11,14,21,0,1,0,14,16,0,27,31,0,4,17,22,0,8,11,0,35,0,8,7,0,46,17,22,0,9,11,14,21,0,1,0,15,0,40,15,227,15,228,3,2,0,43,21,0,6,0,20,0,45,17,8,8,21,0,2,17,0,15,31,0,8,17,25,21,0,1,0,12,16,0,13,0,46,17,0,5,0,100,17,14,21,0,1,0,22,16,22,0,3,11,14,21,0,1,21,0,3,0,39,0,17,8,15,229,3,2,0,43,21,0,3,0,13,0,47,17,8,16,25,21,0,2,0,12,16,0,33,0,7,7,0,46,17,22,0,3,11,14,21,0,3,0,13,0,45,17,0,5,0,104,17,14,21,0,1,0,12,16,0,13,21,0,3,17,0,5,0,105,17,14,21,0,2,0,22,16,22,0,4,11,14,21,0,2,21,2,12,0,46,17,22,0,5,11,0,35,0,8,7,0,46,17,22,0,6,11,14,21,0,1,0,12,16,0,33,0,7,7,31,0,3,17,22,0,7,11,14,21,0,1,0,14,16,0,27,21,0,7,17,22,0,8,11,0,35,0,8,7,0,46,17,22,0,9,11,14,21,0,1,15,230,15,231,3,2,0,43,0,45,21,2,12,0,41,31,0,7,8,21,2,13,31,0,5,19,3,2,0,43,21,0,4,0,20,0,45,17,8,8,21,0,2,17,0,15,31,0,8,17,25,0,17,0,42,0,30,0,6,7,0,41,0,30,21,0,1,0,42,0,8,8,7,8,8,22,0,3,11,14,21,0,2,21,0,3,22,1,5,13,14,21,0,2,0,7,21,0,1,17,0,6,0,46,17,0,18,0,45,17,31,0,3,22,1,7,13,25,21,0,1,0,7,21,1,3,17,0,17,16,0,30,0,6,0,41,21,0,1,8,7,16,25,21,0,1,0,5,21,1,4,19,0,25,0,24,19,25,21,1,4,0,8,21,0,1,17,0,6,21,0,2,21,2,45,21,0,1,17,17,22,1,4,12,25,21,0,2,0,12,16,0,23,0,46,17,0,5,21,1,10,17,14,21,0,2,21,1,13,16,14,21,0,2,0,15,16,22,0,2,12,0,22,16,22,0,3,11,14,21,0,1,0,12,16,0,13,21,0,3,17,0,5,21,1,11,17,14,0,45,0,20,16,22,0,4,11,14,21,0,1,0,14,16,22,0,5,11,0,27,21,0,3,17,22,0,6,11,0,34,15,232,7,21,0,2,17,14,21,0,1,0,15,31,0,5,0,28,31,0,3,17,0,26,31,0,6,0,35,0,8,7,0,46,17,3,1,17,17,0,29,21,0,4,17,25,21,0,1,0,12,16,0,13,0,46,17,0,5,21,1,9,17,14,21,0,1,21,1,6,21,0,2,17,25,21,0,2,0,12,21,1,4,17,25,21,1,3,0,6,22,1,4,13,14,21,0,1,0,6,0,46,17,25,21,0,1,0,37,21,0,2,8,25,21,0,1,0,1,0,45,19,25,21,0,1,0,1,21,0,2,19,25,21,0,2,0,36,21,0,1,21,2,64,21,0,2,17,8,25,21,0,4,22,0,6,11,14,21,0,1,22,0,7,22,0,8,22,0,9,4,3,11,14,21,0,5,21,2,4,0,21,31,0,8,19,0,44,15,233,0,39,21,1,7,8,8,16,31,0,7,21,0,2,17,22,0,10,11,14,31,0,10,31,0,9,0,44,15,234,8,16,25,0,46,22,0,3,11,14,0,45,15,235,0,35,0,18,7,0,45,19,0,6,0,46,19,3,2,0,43,21,2,4,8,22,0,4,11,14,21,0,1,21,0,4,16,22,0,5,11,14,21,0,2,21,2,11,0,40,21,2,11,8,0,32,21,2,68,7,0,15,0,40,21,2,11,8,3,2,0,43,21,2,70,8,15,236,3,3,0,43,31,0,5,0,11,0,47,17,8,21,0,1,17,25,21,0,2,22,0,3,22,0,4,4,2,11,14,15,237,0,41,21,0,2,8,22,0,5,11,14,15,238,22,0,6,11,14,15,239,0,41,0,45,8,22,0,7,11,14,21,0,1,0,32,21,0,4,7,0,16,0,45,19,31,0,7,3,2,0,43,21,1,12,0,39,21,2,4,8,8,16,25,21,1,6,21,0,1,16,25,21,0,1,0,12,0,41,21,1,4,8,0,7,0,46,19,0,44,15,240,8,16,14,21,1,5,0,16,0,46,0,6,21,1,3,17,22,1,3,12,17,25,21,0,2,22,0,5,11,14,21,0,4,22,0,6,11,14,21,0,1,0,30,15,241,7,16,25,21,0,2,22,0,3,11,14,21,1,9,0,16,21,0,1,17,22,0,4,11,14,21,1,5,0,30,0,16,0,41,21,0,1,8,7,16,22,0,5,11,14,21,0,4,0,17,16,0,30,0,8,0,41,21,0,3,8,7,16,0,33,0,29,7,21,0,5,17,22,0,6,11,14,31,0,3,0,17,16,0,30,0,25,7,21,0,6,17,0,30,0,24,7,21,1,10,0,17,16,17,0,15,16,21,2,13,31,0,5,17,0,5,0,142,17,14,21,0,6,21,2,36,16,22,0,7,11,14,21,0,6,21,1,8,0,6,7,0,45,17,0,29,21,0,7,17,0,34,0,7,7,21,0,7,0,22,16,0,17,16,17,22,0,8,11,14,31,0,8,0,30,0,24,7,21,1,12,17,0,34,0,6,7,31,0,6,0,29,21,0,7,17,0,30,0,8,7,21,1,12,17,17,22,1,12,12,14,31,0,7,0,30,0,6,0,41,21,0,4,0,42,0,8,8,8,7,21,1,11,17,22,1,11,12,14,31,0,4,0,8,22,1,10,13,25,21,0,4,0,16,21,0,1,17,0,16,21,0,2,17,25,21,1,5,0,16,0,45,17,0,28,21,1,7,17,22,0,3,11,14,21,1,5,0,30,0,28,0,41,21,1,7,8,21,2,13,21,0,3,19,7,16,0,35,0,8,7,0,46,17,0,5,0,143,17,14,21,0,3,0,35,0,8,7,16,22,0,4,11,0,17,16,0,15,31,0,3,17,22,0,5,11,14,21,0,5,0,30,0,25,7,21,0,1,17,21,1,13,31,0,5,0,30,0,6,0,41,0,8,0,41,31,0,4,8,8,7,21,0,2,17,17,25,0,32,21,2,68,7,21,0,1,3,2,0,43,21,0,4,0,7,0,46,19,0,40,0,8,0,37,0,24,8,8,8,25,21,0,1,15,242,21,0,1,21,0,4,21,0,5,3,3,7,3,2,0,43,0,24,21,0,2,9,8,25,21,1,0,0,37,21,0,1,8,25,21,0,1,0,37,21,1,0,8,25,21,1,1,21,0,2,7,22,0,3,11,14,21,0,1,21,0,3,15,243,15,244,3,3,0,43,0,32,0,51,7,0,7,0,0,19,8,16,25,21,0,1,21,1,8,16,22,0,3,11,14,21,0,1,31,0,3,21,0,2,17,25,21,0,1,21,2,1,16,25,21,0,1,0,28,0,46,17,0,30,21,2,85,0,41,0,32,21,0,2,7,8,7,16,25,21,0,1,0,19,16,22,0,5,11,0,20,0,41,21,0,2,8,0,44,21,0,4,8,16,14,31,0,5,0,17,16,0,30,21,0,1,0,6,21,0,2,17,0,42,0,6,8,7,0,30,0,45,0,42,0,20,8,0,44,0,49,8,7,9,0,30,0,13,0,41,21,0,2,8,0,44,0,49,8,7,3,2,0,43,21,0,1,0,20,0,45,17,8,16,25,21,0,1,14,0,6,0,18,0,45,19,0,17,9,0,7,0,18,0,45,19,0,17,9,0,30,0,6,7,0,24,0,39,0,20,8,19,3,2,0,43,0,20,0,41,0,45,8,8,25,21,0,2,21,2,6,16,0,5,21,1,8,17,14,21,0,2,0,13,0,45,17,22,0,3,11,14,21,0,1,0,22,16,0,6,0,18,0,45,19,0,11,3,2,0,43,21,0,3,8,21,0,2,17,22,0,4,11,14,15,245,21,0,1,7,22,0,5,11,14,0,46,22,0,6,11,14,0,24,22,0,7,11,14,21,0,1,0,12,0,20,0,46,19,0,44,15,246,0,41,21,0,2,8,8,16,14,21,0,1,0,15,16,0,28,0,27,3,2,0,43,21,0,3,0,12,21,1,2,17,8,21,0,6,0,8,31,0,4,17,17,21,1,2,0,44,0,24,0,45,0,42,0,21,8,0,44,15,247,8,0,22,0,7,21,0,2,0,39,0,19,8,19,19,8,16,21,0,7,16,25,21,0,2,0,12,16,0,23,0,46,17,0,5,21,1,7,17,14,21,0,2,0,15,16,22,0,2,12,14,21,0,2,0,30,21,2,6,7,16,0,35,0,8,7,0,46,17,0,5,21,1,8,17,14,21,0,2,0,22,16,22,0,3,11,14,21,0,1,21,2,75,16,0,22,0,42,0,21,8,0,44,15,248,8,21,0,3,17,22,0,4,11,14,15,249,22,0,5,11,14,0,45,0,20,16,22,0,6,11,14,0,46,22,0,7,11,14,15,250,22,0,8,11,14,0,45,22,0,9,11,14,21,0,2,0,34,15,251,21,1,5,15,252,7,31,0,8,0,25,19,3,2,0,43,21,1,4,8,7,21,0,4,0,27,21,0,3,17,17,22,0,10,11,14,21,0,1,0,15,0,41,21,0,4,8,15,253,3,2,0,43,21,0,6,0,12,16,0,20,0,45,17,8,16,25,21,0,1,0,13,0,45,17,0,5,0,158,17,14,21,0,1,0,23,0,46,17,0,5,0,159,17,14,21,0,2,21,2,75,16,0,28,21,0,1,0,7,0,46,17,17,21,2,13,21,1,3,17,0,5,0,160,17,25,21,0,2,0,46,0,22,3,2,0,43,0,24,0,12,0,40,0,13,8,21,0,1,19,8,16,25,21,0,2,0,17,16,0,30,21,0,1,0,1,16,7,16,25,21,0,2,0,17,16,0,30,21,0,1,0,1,16,7,16,25,21,0,1,21,2,7,16,0,5,0,161,17,14,21,0,1,0,17,16,25,21,0,1,0,12,16,0,12,0,46,17,0,5,0,162,17,14,21,0,1,0,30,21,1,3,7,16,0,35,0,30,0,26,0,41,21,2,11,8,7,7,3,0,0,20,16,17,0,1,21,0,1,0,30,0,45,7,16,17,25,21,0,1,0,12,16,0,13,21,1,3,17,0,5,0,164,17,14,21,0,2,0,30,21,2,7,7,16,0,35,0,8,7,16,0,5,0,165,17,14,21,0,1,21,2,75,16,22,0,3,11,14,21,0,2,0,34,0,7,0,6,0,46,19,7,21,0,3,0,27,21,1,3,17,17,22,0,4,11,14,21,0,4,0,30,0,13,0,41,0,45,8,7,16,0,35,0,8,7,16,0,5,0,166,17,14,21,0,3,0,28,21,1,3,17,22,0,5,11,0,35,0,8,7,0,46,17,22,0,6,11,14,0,46,0,7,21,1,3,17,15,254,16,0,33,0,29,7,31,0,3,17,0,26,21,0,6,3,1,17,0,31,0,8,7,16,21,2,55,16,22,0,7,11,14,21,0,2,0,24,0,34,15,255,7,31,0,7,19,0,35,0,30,0,6,7,7,9,0,40,0,30,0,6,7,8,31,0,4,17,0,46,0,42,0,12,8,0,7,0,46,19,0,44,0,33,0,17,0,15,31,0,5,19,0,42,0,30,0,6,7,8,7,8,31,0,6,17,0,33,0,29,7,21,0,1,0,15,16,17,25,21,1,7,0,30,21,0,1,0,20,16,7,16,25,21,1,7,0,30,0,6,0,41,21,0,1,0,8,21,1,5,17,8,7,16,0,33,0,29,7,21,1,6,17,25,21,2,94,0,41,0,46,8,0,40,21,0,1,21,2,65,0,34,21,0,1,7,0,37,0,30,21,0,1,7,8,8,8,25,21,0,2,0,22,0,40,0,12,8,21,0,1,17,0,5,0,167,17,14,21,0,1,21,1,6,21,1,5,7,21,0,2,17,25,21,0,1,21,1,6,21,1,5,0,41,21,0,2,8,7,16,25,21,0,2,21,1,6,21,0,1,0,42,21,1,5,8,7,16,25,21,0,1,21,2,75,16,0,28,0,46,17,22,0,3,11,14,15,256,22,0,4,11,14,21,1,5,0,32,21,0,1,7,0,15,31,0,4,19,21,2,21,0,42,21,2,98,8,3,2,0,43,0,24,0,39,21,2,18,8,0,7,0,46,19,8,31,0,3,17,25,21,0,1,21,2,94,0,46,17,0,35,21,1,5,7,21,0,2,17,25,21,0,1,0,34,0,24,0,46,3,2,0,43,0,25,8,7,21,1,4,17,0,35,0,8,7,0,46,17,22,0,3,11,14,21,0,3,0,20,0,45,17,0,5,0,173,17,14,21,1,4,0,22,16,0,17,16,0,34,0,8,7,21,1,4,17,0,35,0,6,7,0,45,17,22,0,4,11,14,21,1,3,0,16,31,0,4,17,21,2,97,16,22,0,5,11,14,0,54,0,20,21,0,5,17,0,5,0,174,17,14,0,12,0,41,0,11,8,0,5,0,175,19,0,25,0,24,19,22,0,6,11,14,21,0,3,0,9,21,1,7,17,31,0,6,0,11,0,18,3,3,0,43,21,0,5,0,11,0,47,17,8,16,22,0,7,11,14,21,1,3,0,34,0,24,21,0,7,3,2,0,43,0,25,8,7,21,1,4,17,22,1,3,12,14,31,0,7,0,8,31,0,3,17,31,0,5,0,12,0,51,17,0,44,0,20,0,41,21,1,7,8,0,44,15,257,8,8,16,25,21,1,8,0,17,16,0,30,0,25,7,0,41,0,1,0,39,0,20,8,8,15,258,3,2,0,43,21,1,7,0,20,0,45,17,8,21,0,1,17,25,0,24,21,1,5,21,0,1,0,16,21,0,2,17,19,22,1,5,12,14,21,0,1,0,27,21,0,2,17,25,21,0,1,0,17,16,0,30,0,6,0,41,21,1,8,8,7,16,0,24,21,0,1,0,6,22,1,8,13,17,25,21,0,1,0,15,16,21,1,3,16,0,30,21,0,1,21,2,75,16,21,2,92,16,0,15,16,0,42,0,29,8,7,16,25,21,1,4,0,28,21,1,3,17,22,0,3,11,0,35,0,8,7,0,46,17,22,0,4,11,14,21,0,4,0,17,16,0,15,31,0,3,17,0,42,0,30,0,6,0,41,0,8,0,41,31,0,4,8,8,7,8,0,33,0,29,7,21,0,1,19,25,21,0,1,0,42,0,29,8,25,21,0,2,14,21,0,1,25,21,0,2,0,36,21,0,1,8,25,21,0,1,21,1,9,0,30,21,0,1,7,8,25,21,0,1,21,1,9,21,2,23,21,0,1,7,8,25,0,45,22,0,2,11,14,15,259,21,0,1,7,22,0,3,11,14,21,0,1,0,34,15,260,7,21,1,7,17,0,22,0,21,0,47,19,0,44,0,26,0,41,0,45,3,1,8,8,16,22,0,4,22,0,5,4,2,11,14,21,1,8,15,261,15,262,15,263,3,4,0,43,31,0,5,0,42,0,6,0,41,31,0,4,0,8,0,47,19,8,8,8,25,15,264,0,32,21,0,2,7,7,25,0,25,21,0,1,9,25,0,45,22,0,3,11,22,0,4,11,14,21,1,8,21,2,24,15,265,7,16,14,21,0,1,3,1,22,0,5,11,14,15,266,0,41,21,1,7,8,22,0,6,11,14,21,0,3,21,0,6,21,1,6,17,22,0,7,11,14,21,0,4,0,7,16,21,0,5,31,0,6,0,41,21,2,150,8,3,2,0,43,0,20,0,41,0,45,8,8,21,1,6,17,22,0,8,11,14,21,1,8,21,2,24,0,32,31,0,7,31,0,8,3,2,7,0,16,0,45,0,42,0,20,8,19,0,16,0,19,19,7,16,25,21,1,8,0,17,16,0,35,0,24,0,39,21,1,6,21,1,7,16,8,7,21,0,1,17,25,21,0,1,21,2,155,21,0,2,8,21,2,144,21,0,1,8,25,0,24,21,2,143,21,1,5,7,21,0,2,19,15,267,21,2,143,21,0,1,7,8,25,0,24,15,268,21,1,5,7,21,0,1,19,21,2,143,21,0,2,7,9,25,21,0,2,21,2,144,21,0,1,8,25,0,24,15,269,21,0,2,7,21,0,1,19,25,21,0,1,25,21,1,5,0,17,16,0,30,0,7,0,41,21,0,1,0,22,16,0,6,0,50,17,8,7,16,0,33,0,29,7,21,0,1,17,25,21,0,1,0,34,0,12,7,21,0,2,17,0,31,0,8,7,16,0,35,0,6,7,0,45,17,22,0,3,11,14,21,0,2,0,29,0,41,0,17,8,21,0,3,17,0,35,0,8,7,0,46,17,22,0,4,11,14,31,0,3,0,21,0,41,21,1,5,8,0,44,0,32,21,0,2,21,0,1,3,2,7,0,30,0,16,7,0,20,19,0,39,15,270,8,8,16,14,21,0,4,25,21,1,4,0,6,0,41,21,0,1,8,0,40,21,2,5,8,21,1,3,17,0,12,0,41,0,45,8,0,44,21,0,1,0,6,0,46,17,0,39,21,1,5,8,8,16,25,0,32,0,45,7,0,13,21,0,4,21,3,28,21,0,1,7,21,0,2,17,19,25,21,0,1,14,21,1,9,0,17,16,0,30,0,45,7,16,25,21,0,2,21,3,9,16,22,0,3,11,14,21,0,2,0,42,0,16,8,22,0,4,11,14,21,1,5,0,35,0,8,7,0,46,17,22,0,5,11,14,21,0,5,0,12,0,46,17,0,8,0,47,17,0,6,21,0,3,17,21,0,5,21,2,4,15,271,8,16,22,0,6,11,14,0,46,0,7,21,1,6,17,0,17,16,0,30,0,8,0,41,21,0,5,8,0,39,0,6,0,41,21,0,5,8,0,42,31,0,6,8,8,7,16,0,35,0,8,7,0,46,17,0,5,0,103,17,14,31,0,3,0,24,0,44,0,8,0,41,21,0,1,0,39,21,3,9,8,8,8,16,22,0,7,11,14,21,0,1,0,42,0,16,8,22,0,8,11,14,21,1,7,21,3,27,21,1,5,17,22,0,9,22,0,10,4,2,11,14,21,0,10,0,12,0,46,17,0,8,0,47,17,0,6,31,0,7,17,31,0,10,21,2,4,15,272,8,31,0,9,17,22,0,11,11,14,31,0,11,0,41,0,8,0,41,31,0,5,8,8,22,0,12,11,14,15,273,22,0,13,11,14,21,1,9,0,17,16,0,30,0,8,0,41,21,1,7,0,35,0,8,7,0,46,17,8,31,0,13,9,7,16,25,21,0,1,21,3,12,0,46,17,0,35,0,8,7,0,46,17,22,0,3,11,0,12,0,46,17,22,0,4,11,14,21,0,1,0,15,16,22,0,1,12,14,0,46,22,0,5,11,14,0,45,22,0,6,11,14,21,0,1,0,30,0,0,0,39,15,274,8,7,16,14,21,0,4,0,8,0,47,17,0,6,21,0,5,17,22,0,7,11,14,15,275,22,0,8,11,14,0,45,22,0,9,11,22,0,10,11,14,15,276,22,0,11,11,14,21,0,1,0,45,0,45,15,277,3,2,0,43,0,30,0,12,0,41,0,11,8,7,0,35,0,8,7,0,46,19,8,3,2,0,43,21,1,3,0,12,21,0,6,17,0,8,21,0,7,0,12,0,51,17,17,8,16,22,0,12,11,14,21,0,1,31,0,8,31,0,11,3,2,0,43,31,0,12,8,16,25,21,0,1,14,21,1,9,0,17,16,0,30,21,1,4,0,8,21,2,2,17,7,16,25,21,1,6,21,3,28,21,0,1,0,15,16,0,42,0,16,8,0,42,21,3,72,0,7,0,46,19,0,41,21,0,2,0,15,16,0,42,0,16,8,8,8,7,16,22,0,3,11,14,21,0,1,15,278,15,279,3,2,0,43,0,15,0,39,0,22,8,0,20,0,52,19,0,40,0,8,8,8,21,0,2,17,25,21,0,1,21,2,7,21,0,2,17,0,30,0,6,7,21,1,4,0,30,21,0,1,0,42,0,8,8,7,16,17,22,1,4,12,25,21,0,1,3,1,3,0,0,26,3,2,0,43,0,25,21,3,4,9,8,21,1,6,17,22,1,6,12,25,21,0,1,21,2,8,21,1,6,8,25,21,0,1,0,15,16,22,0,3,11,0,22,16,0,6,0,50,17,0,6,22,1,3,13,14,31,0,3,0,30,21,1,4,7,16,25,15,280,22,0,3,11,14,21,3,11,21,0,3,15,281,3,2,0,43,0,24,0,39,0,35,21,3,70,7,8,8,3,2,0,43,0,24,0,16,0,45,19,21,3,4,9,8,22,0,4,11,14,21,0,2,21,0,1,3,2,21,0,4,0,45,17,22,0,5,11,14,21,1,3,0,17,16,0,30,15,282,7,16,22,0,6,11,14,31,0,6,0,30,0,16,0,41,0,46,8,7,21,3,11,0,30,0,16,0,41,0,45,8,7,19,0,32,21,3,68,7,3,2,0,43,31,0,3,0,12,21,0,5,17,8,16,25,21,0,1,21,3,8,16,22,0,1,12,14,21,0,1,0,14,16,22,0,3,11,14,21,0,1,0,15,16,22,0,4,11,0,22,16,22,0,5,11,14,21,1,3,0,3,21,0,5,17,22,0,6,11,14,21,1,3,0,4,21,0,6,17,0,33,0,29,7,22,1,4,13,14,0,45,22,0,7,11,14,0,32,21,1,4,7,0,16,15,283,19,22,0,8,11,14,21,3,72,0,5,0,136,19,22,0,9,11,14,31,0,6,0,34,31,0,4,0,42,0,16,8,21,0,8,0,24,15,284,31,0,8,19,3,3,0,43,0,11,0,41,0,47,8,8,7,31,0,5,0,17,16,17,0,15,31,0,3,17,25,21,0,1,0,34,0,25,0,12,21,0,1,21,0,5,16,19,0,44,21,0,4,8,7,21,0,1,0,22,16,0,17,16,17,25,21,0,1,0,15,0,39,0,32,21,2,12,7,0,16,21,0,2,19,21,1,6,21,0,0,0,41,21,0,2,0,6,0,46,17,8,8,8,0,15,0,14,19,21,1,5,3,2,0,43,21,2,12,0,22,16,0,23,21,0,2,17,8,16,25,21,0,1,22,2,4,12,0,33,0,16,7,21,2,6,17,22,2,5,12,14,0,50,22,2,3,12,25,21,1,5,22,0,3,11,14,21,0,1,21,1,6,22,1,5,13,14,31,0,3,25,21,0,4,21,0,1,21,0,2,17,25,21,0,1,22,0,3,11,14,15,285,25,21,0,1,22,0,3,11,14,15,286,25,21,0,1,0,17,16,0,30,0,32,21,0,4,0,1,16,7,7,16,25,21,0,1,21,3,12,0,46,17,22,0,3,11,0,35,0,8,7,22,1,6,13,14,0,15,0,41,31,0,3,0,26,21,0,2,0,19,16,21,2,2,0,7,0,46,17,0,44,0,24,0,7,21,0,1,0,22,16,19,0,18,0,45,19,8,16,3,1,17,8,22,1,7,12,25,21,1,6,0,8,21,0,2,17,21,1,5,16,0,33,0,26,7,0,26,3,2,0,43,21,1,3,8,21,0,1,17,25,21,0,1,0,26,21,0,1,0,22,16,0,7,21,0,2,17,0,17,0,39,0,30,0,46,7,8,16,17,25,21,0,1,0,30,0,6,7,21,0,2,0,30,21,0,4,0,42,0,8,8,7,16,17,25,21,0,1,0,46,0,42,0,12,8,0,7,0,46,19,0,44,21,1,5,21,0,2,7,0,41,0,17,8,8,21,1,7,17,21,1,5,21,0,2,0,8,21,1,7,17,7,22,1,6,13,14,0,46,22,1,7,12,14,21,0,1,0,22,16,25,21,0,2,0,8,22,1,7,13,14,21,0,2,25,21,0,1,14,0,46,22,1,9,12,25,21,1,4,0,28,21,1,3,17,22,0,3,11,0,26,22,1,10,13,14,31,0,3,0,35,0,8,7,21,1,7,17,0,12,0,41,0,46,8,0,7,0,46,19,0,44,15,287,8,16,14,21,0,1,0,15,16,0,42,0,16,8,22,0,4,11,14,21,1,9,0,24,0,44,15,288,8,21,0,1,17,14,21,1,6,0,15,21,1,10,17,0,30,21,0,4,7,16,25,21,0,1,0,17,16,0,30,0,7,0,41,21,0,1,8,7,16,25,21,0,1,0,17,16,0,30,0,8,0,41,21,0,2,8,7,16,25,21,0,2,0,22,16,0,20,0,45,17,0,5,0,169,17,14,21,0,2,0,22,16,0,17,16,0,34,0,20,0,41,0,45,8,0,42,0,8,8,7,21,0,2,17,25,21,2,7,0,7,21,0,1,17,0,17,16,0,30,21,2,6,0,1,16,7,16,0,26,22,2,6,13,14,21,2,7,25,0,50,22,0,3,11,14,0,46,0,7,21,2,7,17,22,0,4,11,14,21,0,1,0,30,15,289,7,16,25,21,0,1,14,0,45,22,1,3,12,14,21,2,12,21,2,7,0,34,0,6,7,21,0,4,17,7,22,1,2,12,25,21,3,74,0,20,21,0,1,0,18,0,45,17,19,0,45,3,2,0,16,21,0,1,0,13,0,45,17,0,8,21,0,2,17,17,25,0,45,21,1,3,16,14,21,0,1,21,2,10,0,24,21,1,2,21,0,2,19,7,16,25,0,45,21,1,3,16,14,21,0,2,21,2,10,21,0,1,0,42,21,1,2,8,7,16,25,0,45,21,1,3,16,14,21,0,1,21,2,11,21,1,2,7,21,0,2,17,25,0,25,21,0,1,21,0,4,19,25,21,0,1,21,3,6,16,0,5,0,185,17,14,21,0,1,0,11,22,1,4,13,14,21,0,1,0,18,22,1,3,13,25,21,0,1,0,17,16,0,26,21,1,5,17,0,31,21,0,2,7,16,25,21,0,1,21,0,5,16,21,0,4,21,0,2,17,25,21,0,1,21,3,160,16,25,21,0,1,21,3,160,16,25,21,0,1,0,35,21,2,3,7,16,22,0,3,22,0,4,4,2,11,14,31,0,3,22,2,4,12,14,31,0,4,0,8,22,1,4,13,25,21,1,4,0,40,21,0,1,8,25,21,1,8,0,42,21,0,1,0,41,21,1,4,8,8,25,21,0,1,0,42,21,1,12,8,22,0,3,11,14,0,46,0,42,0,21,8,0,44,15,290,8,22,0,4,11,14,0,50,21,0,4,0,46,0,6,21,2,6,17,17,0,6,0,46,17,25,21,0,1,0,13,0,46,17,0,8,22,1,5,13,14,21,0,1,0,6,22,1,6,13,25,21,1,7,21,1,3,21,3,4,15,291,21,0,1,7,8,16,22,0,3,11,14,0,24,21,2,3,3,2,0,43,0,13,0,41,21,2,3,8,8,22,0,4,11,14,0,45,0,12,21,2,3,17,0,6,21,2,3,17,0,2,0,47,17,0,18,16,22,0,5,11,0,17,16,0,30,0,24,0,6,0,46,19,0,7,31,0,5,19,0,10,0,47,19,7,16,0,35,15,292,7,21,2,3,0,17,16,17,25,21,0,1,0,30,21,1,10,0,42,0,7,8,0,7,0,41,21,1,9,8,3,2,0,16,21,3,2,17,7,16,0,4,0,41,0,3,8,16,25,21,2,3,0,8,0,47,17,0,13,21,0,1,0,35,0,11,7,16,22,1,10,12,0,7,21,0,1,0,35,0,18,7,16,22,1,9,12,17,17,25,21,0,1,14,21,2,4,21,2,9,3,2,0,30,0,17,0,30,0,8,0,41,21,2,6,8,7,9,7,16,22,0,3,22,0,4,4,2,11,14,31,0,4,0,30,15,293,7,16,25,21,0,2,21,4,32,16,21,4,55,16,22,0,3,11,14,21,0,1,21,4,31,21,0,2,0,29,21,0,3,17,17,0,30,0,46,0,42,0,7,8,0,18,0,45,19,7,16,0,33,0,29,7,31,0,3,17,22,0,4,11,14,0,7,0,41,0,46,8,0,8,0,41,21,2,4,0,42,0,7,8,8,0,7,0,25,19,3,2,0,16,21,3,2,17,22,0,5,11,14,21,2,9,0,17,16,0,34,0,8,0,41,21,2,6,8,0,40,21,1,3,8,31,0,5,0,25,19,7,31,0,4,17,25,21,0,0,0,45,3,2,25,21,0,2,22,0,3,11,14,21,0,1,0,30,0,15,7,16,22,0,4,11,0,16,0,45,17,0,22,16,22,0,5,11,14,0,50,22,0,6,11,14,15,294,0,42,21,1,4,8,22,0,7,11,14,15,295,25,21,0,1,21,1,5,16,22,0,3,22,0,4,4,2,11,14,31,0,3,22,1,5,12,14,31,0,4,25,0,46,0,7,21,0,1,0,6,22,1,7,13,17,25,0,46,0,7,21,0,1,17,0,17,16,0,30,0,32,21,2,4,7,0,16,0,6,0,41,21,0,1,0,7,21,1,7,17,8,19,21,1,9,21,0,2,19,7,16,14,21,0,2,25,0,45,0,32,21,1,3,21,0,1,7,7,16,21,2,3,16,25,0,45,0,32,21,0,2,21,1,3,21,0,1,8,7,16,21,2,3,16,25,21,0,1,0,17,16,21,2,5,21,0,1,7,22,2,6,13,25,0,32,21,0,2,0,1,16,7,21,1,4,3,2,0,43,0,13,0,41,0,45,8,8,22,1,4,12,25,21,0,1,14,21,3,6,0,16,21,1,4,0,12,21,1,3,17,0,8,21,3,7,17,0,7,0,46,17,0,6,22,1,3,13,17,25,0,47,0,9,21,0,2,17,0,11,16,22,0,3,11,0,6,21,0,1,17,22,0,4,11,21,1,3,16,22,0,5,11,14,21,0,1,31,0,4,3,2,0,16,21,0,5,17,21,1,4,21,0,3,0,8,0,47,17,0,7,21,0,2,17,0,8,31,0,5,17,0,6,31,0,3,17,17,25,21,0,4,0,42,0,16,8,0,40,21,0,1,8,25,21,0,2,22,0,3,11,0,7,16,22,0,4,11,14,0,45,22,0,5,11,22,0,6,11,22,0,7,11,14,0,51,22,0,8,11,14,21,0,1,21,2,4,0,7,0,46,17,0,44,0,30,0,8,0,41,21,2,3,8,7,8,16,0,42,0,16,8,0,40,21,1,3,8,22,0,9,11,14,21,0,9,0,7,0,46,19,0,45,0,46,0,47,3,4,22,0,10,11,14,0,6,15,296,3,2,0,16,21,0,3,0,13,0,52,17,17,22,0,11,11,14,15,297,22,0,12,11,14,15,298,15,299,31,0,12,3,3,0,43,15,300,8,22,0,13,11,14,21,0,1,0,30,21,0,1,0,42,15,301,8,7,16,25,21,1,3,0,30,21,0,1,0,42,21,2,3,8,7,16,21,4,3,16,25,21,1,4,0,30,0,16,0,41,21,0,1,8,7,16,25,0,46,0,6,22,1,6,13,14,21,1,6,21,1,7,0,41,0,32,21,0,0,7,8,0,32,21,1,3,7,3,2,0,43,0,13,0,41,21,1,5,8,8,16,22,0,3,11,14,0,45,31,0,3,16,25,21,0,1,21,1,8,0,7,0,46,17,0,44,21,1,9,0,44,15,302,8,8,0,46,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,4,16,22,1,6,12,0,6,21,1,3,17,21,2,4,16,22,1,5,12,14,21,1,7,0,13,21,4,3,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,46,17,22,1,4,12,0,12,21,1,6,17,0,8,0,47,17,0,6,22,1,8,13,14,21,0,2,25,21,0,1,0,6,0,46,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,0,43,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,47,22,2,8,12,14,21,2,4,22,2,7,12,14,21,0,1,22,2,4,12,25] ,[provide[0],provide[1],provide[2],provide[3],provide[4],provide[5],provide[6],provide[7],provide[8],provide[9],provide[10],runtime_0[0],provide[12],provide[13],provide[14],provide[15],provide[16],provide[17],runtime_0[1],runtime_0[2],runtime_0[3],runtime_0[4],runtime_0[5],runtime_0[6],runtime_0[7],runtime_0[8],runtime_0[9],runtime_0[10],runtime_0[11],runtime_0[12],provide[18],provide[19],runtime_0[13],runtime_0[14],runtime_0[15],runtime_0[16],provide[20],provide[21],provide[22],runtime_0[17],runtime_0[18],runtime_0[19],runtime_0[20],runtime_0[21],runtime_0[22],0,1,2,Infinity,-Infinity,-1,3,8,5,4,'∾','+','-','×','÷','⋆','¬','⌊','⌈','∨','∧','≠','=','>','≥','˙','√','<','⊢','⊣','≍','↑','↓','↕','⌽','⍉','/','⊔','˜','¨','⌜','˘','`','∘','○','⌾','⍟','⊘','⊸','⟜',str("+-×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!˙˜˘¨⌜⁼´˝`∘○⊸⟜⌾⊘◶⎉⚇⍟⎊%"),str("´: Identity not found"),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("⍋ 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("p⊐n or n∊p: Rank of n must be at least cell rank of p"),str("∊𝕩 or ⊐𝕩: 𝕩 must have rank at least 1"),str("⍷𝕩: Rank of 𝕨 cannot exceed rank of 𝕩"),str("/𝕩: 𝕩 must have rank 1"),str("/𝕩: 𝕩 must consist of natural numbers"),str("↑𝕩: 𝕩 must have rank at least 1"),str("↓𝕩: 𝕩 must have rank at least 1"),str("𝕨⊑𝕩: Indices in 𝕨 must consist of integers"),str("𝕨⊑𝕩: Index out of range"),str("𝕨⊏𝕩: Indices in 𝕨 must be integers"),str("𝕨⊏𝕩: Indices out of range"),str("𝕨⊑𝕩: 𝕩 must be a list when 𝕨 is a number"),str("𝕨⊑𝕩: Indices in compound 𝕨 must be lists"),str("𝕨⊑𝕩: Index length in 𝕨 must match rank of 𝕩"),str("𝕨"),str("𝕩: "),str("𝕩 must have rank at least 1 for simple 𝕨"),str("Compound 𝕨 must have rank at most 1"),str("Length of compound 𝕨 must be at most rank of 𝕩"),str("𝕨 must be an array of numbers or list of such arrays"),str("⊏𝕩: 𝕩 must have rank at least 1"),str("⊏𝕩: 𝕩 cannot have length 0"),str("⊏"),str("⌽𝕩: 𝕩 must have rank at least 1"),str("𝕨⌽𝕩: 𝕨 must consist of integers"),str("⌽"),str("𝕨/𝕩: 𝕨 must consist of natural numbers"),str("𝕨/𝕩: Lengths of components of 𝕨 must match 𝕩"),str("𝕨/𝕩: Components of 𝕨 must have rank 0 or 1"),str("/"),str("=≠≡≢"),str("⌾: Incompatible result elements in structural Under"),str(">𝕩: Elements of 𝕩 must have matching shapes"),str("𝕨∾𝕩: Rank of 𝕨 and 𝕩 must differ by at most 1"),str("𝕨∾𝕩: Cell shapes of 𝕨 and 𝕩 must match"),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("∾𝕩: 𝕩 element trailing shapes must match"),str("∾𝕩: empty 𝕩 fill rank must be at least argument rank"),str("∾𝕩: 𝕩 must be an array"),str("⊢⊣˜∘○⊸⟜⊘◶"),str("=≠≢"),str("<"),str("≍"),str("↕/»«⊔"),str("⥊↑↓⌽⍉⊏⊑"),str("↑"),str("↓"),str("𝕩: 𝕨 must "),str("have rank at most 1"),str("consist of integers"),str("« or »: 𝕩 must have rank at least 1"),str("« or »: 𝕨 must not have higher rank than 𝕩"),str("« or »: Rank of 𝕨 must be at least rank of 𝕩 minus 1"),str("« or »: 𝕨 must share 𝕩\'s major cell shape"),str("↕𝕩: 𝕩 must consist of natural numbers"),str("↕𝕩: 𝕩 must be a number or list"),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("˘: Argument lengths don\'t agree"),str("˝: 𝕩 must have rank at least 1"),str("˝: Identity does not exist"),str("∘⌊⌽↑"),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("⊔: Grouping argument must consist of integers"),str("⊔: Grouping argument values cannot be less than ¯1"),str("⊔𝕩: 𝕩 must be a list"),str("𝕨⊔𝕩: Rank of simple 𝕨 must be at most rank of 𝕩"),str("𝕨⊔𝕩: Lengths of 𝕨 must equal to 𝕩, or one more only in a rank-1 component"),str("𝕨⊔𝕩: 𝕩 must be an array"),str("⎉ or ⚇: 𝔽 result must have rank at most 1"),str("⎉ or ⚇: 𝔽 result must have 1 to 3 elements"),str("⎉ or ⚇: 𝔽 result must consist of integers"),str("⍟: 𝕨𝔾𝕩 must consist of integers"),str("≥: Needs two arguments"),str("≤: Needs two arguments"),str("𝕨⊔𝕩: Compound 𝕨 must be a list"),str("𝕨⊔𝕩: Total rank of 𝕨 must be at most rank of 𝕩"),str("⊒: Rank of 𝕨 must be at least 1"),str("⊒: Rank of 𝕩 must be at least cell 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("Cannot currently invert blocks"),str("Cannot invert modifier"),str("⁼: Inverse failed"),str("⁼: Inverse does not exist"),str("⁼: Inverse not found")] ,[[0,1,0,180],[0,0,3890,3],[0,0,3898,3],[0,0,3902,3],[0,0,3915,3],[0,0,3927,3],[0,0,3936,3],[1,1,3942,2],[2,1,3971,3],[1,1,4003,2],[0,0,4020,4],[2,1,4082,5],[0,0,4118,3],[1,0,4125,5],[1,1,4183,4],[1,1,4249,3],[0,0,4304,3],[0,0,4315,4],[1,0,4380,9],[0,0,4449,5],[1,1,4526,5],[1,1,4592,4],[1,0,4648,8],[0,0,4820,8],[0,0,4977,3],[0,0,5022,3],[0,0,5071,6],[0,0,5156,3],[0,0,5180,7],[0,0,5294,3],[0,0,5356,4],[0,0,5427,6],[0,0,5491,3],[0,0,5531,5],[0,0,5608,3],[1,1,5625,14],[0,0,5805,3],[0,0,5851,3],[0,0,5871,3],[0,0,5888,4],[0,0,5946,3],[0,0,5995,5],[0,0,6069,3],[0,1,6128,0],[0,0,6139,4],[0,0,6206,3],[0,0,6216,3],[0,0,6223,3],[0,0,6237,3],[2,1,6245,3],[1,0,6283,5],[1,0,6320,5],[0,0,6347,3],[0,0,6351,3],[2,0,6365,16],[0,0,6653,3],[0,0,6678,3],[0,0,6703,3],[2,1,6730,3],[0,0,6789,4],[0,0,6889,7],[0,0,7086,7],[0,0,7132,14],[0,0,7356,5],[0,0,7435,3],[0,0,7443,6],[0,0,7470,5],[0,0,7491,6],[0,1,7518,10],[1,1,7814,9],[0,0,7971,4],[0,0,8047,7],[0,0,8148,6],[0,0,8250,5],[0,0,8283,4],[0,0,8345,8],[1,0,8457,8],[1,0,8532,7],[0,0,8594,9],[1,0,8752,9],[0,0,8900,4],[0,0,9011,8],[0,0,9225,3],[0,0,9269,3],[1,1,9406,2],[2,0,9427,13],[2,0,9540,9],[2,0,9718,10],[0,0,9791,3],[0,0,9817,3],[0,0,9838,3],[0,0,9859,10],[0,0,10267,4],[0,0,10372,3],[0,0,10446,3],[0,0,10497,4],[0,0,10624,4],[1,1,10740,2],[2,0,10748,6],[1,1,10763,2],[0,0,10866,3],[0,0,10874,3],[0,0,10882,3],[0,0,10902,8],[0,0,10977,3],[0,0,10985,3],[0,0,10993,3],[0,0,11001,3],[0,0,11009,3],[0,0,11017,3],[0,0,11028,3],[2,0,11049,7],[0,0,11090,6],[0,0,11309,4],[0,0,11409,3],[0,0,11452,5],[0,0,11590,3],[0,0,11637,3],[0,0,11663,3],[0,0,11750,3],[0,0,11783,3],[0,0,11827,3],[0,0,11875,3],[0,0,11887,3],[1,1,11960,2],[0,0,11986,4],[0,0,12022,3],[0,0,12037,3],[0,0,12066,3],[0,0,12081,3],[0,0,12099,3],[0,0,12113,3],[0,0,12123,3],[2,0,12175,6],[0,0,12203,3],[0,0,12231,3],[0,0,12239,3],[1,0,12247,5],[1,0,12282,11],[0,0,12443,3],[0,0,12454,3],[0,0,12471,3],[0,0,12488,3],[0,0,12499,3],[0,0,12510,3],[0,0,12525,7],[0,0,12598,6],[0,0,12644,3],[0,0,12662,3],[2,0,12669,6],[0,0,12704,10],[0,0,12881,4],[0,0,12937,10],[0,0,13128,4],[0,0,13195,3],[1,1,13220,2],[0,0,13235,3],[0,0,13262,7],[0,0,13403,3],[0,0,13432,3],[0,0,13442,3],[0,0,13461,3],[0,0,13471,3],[0,0,13480,3],[0,0,13490,3],[2,0,13507,11],[0,0,13580,6],[0,0,13683,8],[0,0,13761,3],[0,0,13769,3],[1,0,13811,7],[0,0,13837,9],[1,0,14083,5],[0,0,14099,6],[1,0,14221,5],[2,0,14254,6],[0,0,14283,3],[0,0,14293,3],[0,0,14303,4],[0,0,14342,4],[0,0,14365,3],[0,0,14373,3],[1,0,14398,6],[1,1,14494,2],[0,0,14544,8],[0,0,14725,11],[0,0,14930,3],[0,0,14989,3],[0,0,15016,3],[0,0,15033,3],[0,0,15050,3],[0,0,15070,3],[0,0,15130,8],[0,0,15391,3],[0,0,15405,3],[1,1,15436,2],[0,0,15470,3],[0,0,15505,3],[0,0,15523,3],[0,0,15541,5],[0,0,15612,3],[0,0,15632,8],[0,0,15862,3],[0,0,15903,3],[0,0,15933,3],[0,0,15964,3],[0,0,15998,5],[0,0,16065,3],[2,1,16074,3],[2,1,16082,3],[1,1,16092,2],[1,1,16106,2],[1,1,16121,6],[0,0,16215,3],[0,0,16225,3],[0,0,16232,9],[0,0,16366,3],[0,0,16392,3],[0,0,16410,3],[0,0,16434,3],[0,0,16455,3],[0,0,16466,3],[1,1,16479,2],[0,0,16483,3],[0,0,16519,5],[0,0,16621,3],[1,0,16668,5],[0,0,16691,3],[0,0,16708,14],[0,0,16992,13],[0,0,17189,3],[0,0,17213,4],[0,0,17296,3],[0,0,17332,3],[0,0,17361,3],[0,0,17372,4],[0,0,17408,7],[0,0,17545,10],[2,0,17706,6],[0,0,17741,3],[0,0,17806,3],[0,0,17834,4],[1,0,17857,5],[0,0,17868,4],[0,0,17879,4],[1,0,17890,5],[0,0,17910,4],[0,0,17985,3],[0,0,18018,3],[1,0,18048,5],[0,0,18073,3],[0,0,18139,3],[0,0,18153,3],[0,0,18164,5],[0,0,18263,3],[0,0,18282,3],[0,0,18301,3],[0,0,18347,3],[0,0,18380,5],[1,0,18410,5],[0,0,18442,3],[0,0,18478,3],[0,0,18503,3],[0,0,18528,3],[1,0,18550,5],[0,0,18560,3],[0,0,18593,3],[2,0,18613,6],[1,1,18628,2],[1,1,18636,2],[0,0,18644,5],[0,0,18682,3],[0,0,18692,3],[0,0,18708,5],[0,0,18759,3],[0,0,18784,6],[0,0,18893,3],[0,0,18933,3],[0,0,18974,5],[0,0,19024,6],[0,0,19158,3],[0,0,19166,8],[0,0,19223,5],[0,0,19252,3],[0,0,19267,3],[1,1,19317,2],[2,1,19335,3],[0,0,19356,3],[0,0,19374,3],[0,0,19403,3],[0,0,19440,6],[1,0,19519,5],[0,0,19534,14],[0,0,19698,3],[0,0,19719,3],[0,0,19735,4],[0,0,19791,3],[0,0,19823,3],[0,0,19906,3],[0,0,19940,3],[0,0,19969,3],[0,0,19986,3],[0,0,20003,3]] ); let rtAssert = runtime[42] = assertFn("!"); runtime.map((r,i) => { r.prim = i; }); let decompose = x => list(!isfunc(x) ? [-1,x] : has(x.prim) ? [0,x] : x.repr ? x.repr() : [1,x]); setPrims(list([decompose, x=>has(x.prim)?x.prim:runtime.length])); let glyphs = ["+-×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!", "˙˜˘¨⌜⁼´˝`", "∘○⊸⟜⌾⊘◶⎉⚇⍟⎊"]; let gl = glyphs.join(""); let glyph = x => { let g = gl[x.prim]; if (!has(g)) throw Error("•Glyph 𝕩: 𝕩 must be a primitive"); return g; } // Compiler runtime[42] = assertFn("Compiler"); let compgen = run( [15,1,25,21,0,1,22,0,3,22,0,4,22,0,5,4,3,11,14,0,58,0,0,0,83,17,22,0,6,11,14,31,0,3,31,0,4,31,0,5,21,0,6,0,21,0,89,17,0,90,0,91,0,92,0,93,0,94,0,20,0,58,0,50,3,2,17,0,43,0,33,7,0,59,17,0,95,0,58,0,25,16,0,0,0,84,17,0,60,22,0,7,11,0,25,16,0,45,0,0,7,0,97,17,0,20,16,0,42,0,21,7,0,96,17,0,61,0,0,0,83,17,0,21,0,100,17,0,21,0,99,0,24,0,59,17,17,0,21,0,98,17,0,101,3,14,0,44,0,13,7,0,11,0,51,0,22,8,0,21,19,16,22,0,8,22,0,9,4,2,11,14,21,0,9,0,49,0,0,7,0,27,0,62,19,0,53,0,42,0,44,0,22,7,7,8,16,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,22,0,21,22,0,22,22,0,23,4,14,11,14,0,34,0,53,0,1,8,0,12,0,9,0,15,0,52,0,62,8,19,0,34,0,52,0,63,8,19,22,0,24,11,14,21,0,13,0,34,16,22,0,25,11,14,21,0,18,0,0,0,52,0,1,0,53,0,22,8,8,0,64,17,22,0,26,11,14,0,13,0,11,0,63,19,0,42,0,30,7,0,102,19,0,53,0,21,8,22,0,27,11,14,15,2,22,0,28,11,14,15,3,21,0,8,7,22,0,29,11,14,21,0,19,0,34,16,22,0,30,11,0,0,0,63,17,22,0,31,11,14,0,63,0,66,0,67,0,59,0,68,0,59,0,62,3,2,0,69,0,62,0,66,0,25,16,0,28,16,0,30,0,64,17,3,9,0,41,31,0,9,7,0,23,0,13,19,0,53,0,42,0,44,0,20,7,7,8,16,0,21,16,0,42,0,21,7,0,65,17,22,0,32,11,14,0,2,0,49,0,6,7,9,22,0,33,11,14,21,0,33,0,52,0,13,0,50,0,25,8,8,22,0,34,11,14,21,0,33,0,52,0,13,0,50,0,25,8,0,0,0,63,19,8,22,0,35,11,14,15,4,22,0,36,11,14,15,5,22,0,37,11,14,15,6,22,0,38,11,14,15,7,22,0,39,11,25,21,0,1,0,11,16,0,44,15,8,7,21,0,4,17,0,21,16,25,21,1,28,21,1,27,0,52,0,103,8,0,104,0,19,3,3,7,0,42,0,40,7,0,62,19,22,0,2,11,14,21,0,1,0,53,0,33,8,0,53,0,17,0,57,0,18,0,30,0,13,19,0,50,31,0,2,8,8,8,0,18,0,19,19,22,0,3,11,14,21,0,1,0,31,16,22,0,4,11,14,0,19,0,31,21,0,1,0,33,21,0,4,17,19,0,6,0,63,19,0,42,0,1,7,0,63,19,0,42,0,33,7,31,0,4,19,31,0,3,0,19,19,25,0,85,0,14,21,0,1,17,22,0,3,11,14,0,86,0,14,21,0,1,17,22,0,4,11,0,9,0,52,0,26,0,52,0,62,0,62,3,2,8,8,16,0,30,16,22,0,5,11,14,0,87,0,14,21,0,1,17,22,0,6,11,0,30,16,22,0,7,11,14,21,0,5,21,0,7,0,24,0,59,17,21,0,3,0,30,16,3,3,0,21,16,22,0,8,11,0,31,16,22,0,9,11,14,21,0,8,0,33,21,0,9,17,22,0,8,12,14,31,0,5,0,0,0,66,17,31,0,7,0,24,0,63,17,0,63,0,21,21,1,6,0,14,21,0,1,17,17,0,30,16,0,30,0,52,21,0,3,0,49,0,0,7,16,0,21,0,62,17,0,53,0,33,0,50,0,27,0,53,0,1,8,8,8,8,16,3,3,0,21,16,0,33,31,0,9,17,22,0,10,11,14,0,19,0,34,0,59,19,0,14,0,62,19,0,57,15,9,8,22,0,11,11,14,0,30,0,52,21,0,10,0,31,21,0,8,17,0,44,0,62,7,0,21,0,63,19,21,0,11,0,13,0,53,0,21,8,19,0,23,0,13,19,16,8,0,46,0,30,7,9,0,23,21,0,1,0,13,16,19,22,0,12,11,14,31,0,8,21,0,12,16,22,0,13,11,14,31,0,10,31,0,12,16,22,0,14,11,14,21,0,14,0,10,21,0,13,17,22,0,15,11,0,49,0,13,7,0,63,17,22,0,16,11,14,21,0,16,0,11,31,0,14,17,0,9,21,0,6,0,10,21,0,4,17,17,0,47,0,10,7,0,57,15,10,8,16,14,0,88,0,14,21,0,1,17,0,9,21,0,16,17,22,0,17,11,14,31,0,4,0,9,21,0,13,17,0,27,16,0,10,21,0,17,17,0,30,16,22,0,18,11,14,21,0,18,31,0,17,0,53,0,33,8,0,2,0,83,0,1,0,88,17,19,0,1,21,0,1,0,53,0,33,8,19,16,22,0,19,11,14,21,0,6,0,9,22,0,13,13,0,26,16,0,9,21,0,6,17,22,0,20,11,0,12,22,0,16,13,14,31,0,15,0,9,31,0,6,17,0,49,0,13,7,16,0,11,0,63,0,53,0,21,8,0,51,0,2,0,52,0,49,0,0,7,8,8,0,18,19,31,0,20,0,27,16,0,12,31,0,13,17,22,0,21,11,17,0,42,0,1,7,0,63,17,0,42,0,39,7,21,0,1,17,22,0,22,11,14,21,0,16,0,30,16,22,0,23,11,14,21,0,16,0,27,0,63,17,0,30,16,0,23,0,52,0,13,8,21,0,23,17,22,0,24,11,14,15,11,22,0,25,11,14,21,0,23,31,0,3,0,53,0,33,8,0,2,0,1,19,21,0,24,17,0,1,22,0,24,13,14,21,0,1,0,33,21,0,23,17,21,1,29,16,22,0,26,11,14,21,1,20,21,1,24,21,0,26,17,0,26,16,0,12,21,1,19,0,34,16,0,14,21,0,26,17,17,22,0,27,11,14,21,1,22,0,34,0,51,0,42,0,1,7,0,22,0,18,19,8,21,1,19,17,21,1,24,21,0,26,17,0,11,31,0,27,17,22,0,28,11,0,11,0,52,0,27,8,16,22,0,29,11,14,21,1,21,0,47,0,0,7,16,0,0,0,59,17,0,14,21,0,26,17,22,0,30,11,14,21,1,22,0,34,16,0,14,21,0,26,17,22,0,31,11,14,21,0,30,0,12,21,0,28,17,0,18,0,30,0,10,19,0,26,0,30,0,19,19,0,63,19,0,11,0,30,19,21,0,29,17,0,47,0,10,7,0,57,15,12,8,16,14,21,0,26,0,30,21,0,29,17,0,42,0,1,7,21,1,21,0,34,16,17,0,42,0,3,0,50,0,5,8,7,21,1,7,17,22,0,32,11,14,21,1,21,0,34,16,0,0,21,1,7,17,0,16,21,0,26,17,0,9,21,0,28,17,0,2,21,1,7,17,0,1,22,0,26,13,14,21,0,28,0,26,16,0,12,21,0,31,17,0,47,0,10,7,0,57,15,13,8,16,14,21,0,31,0,10,0,52,0,27,8,16,0,13,22,0,29,13,14,31,0,31,0,30,21,0,29,17,0,19,0,0,0,8,0,53,0,2,8,19,0,62,0,16,21,0,32,17,0,2,0,66,17,17,22,0,33,11,0,11,0,62,17,22,0,34,11,14,21,0,34,0,8,16,0,21,0,62,17,0,33,21,0,29,0,49,0,0,7,16,17,0,9,21,0,28,17,22,0,35,11,0,12,21,0,28,17,22,0,36,11,14,21,0,28,0,2,21,0,26,17,0,21,0,52,0,62,8,0,30,21,0,35,0,21,0,62,17,0,26,0,53,0,10,8,16,0,11,21,0,30,0,21,0,62,17,17,19,0,51,21,1,37,8,21,0,24,17,22,0,37,11,14,31,0,32,0,30,21,0,34,17,0,14,0,52,0,66,8,0,53,0,9,8,0,0,0,19,19,21,0,36,0,11,0,52,0,26,8,16,0,42,0,30,7,21,0,30,17,17,22,0,38,11,14,21,0,33,0,30,31,0,34,17,0,14,0,63,17,22,0,39,11,14,31,0,35,0,12,21,0,29,17,0,49,0,0,7,16,0,2,21,0,30,0,12,31,0,36,17,17,0,42,0,1,7,0,63,17,22,0,40,11,14,21,0,40,0,11,0,52,0,49,0,6,7,0,27,0,59,19,8,16,0,30,16,21,0,26,0,53,0,33,8,0,12,21,1,21,0,34,16,19,0,11,21,0,39,19,0,53,0,19,0,47,0,10,7,9,0,57,15,14,8,8,16,14,21,1,8,0,33,21,0,26,17,0,39,31,0,40,17,0,39,0,66,0,21,31,0,39,17,17,22,0,41,11,14,31,0,16,0,27,16,0,49,0,0,7,16,0,33,31,0,21,0,30,16,0,21,31,0,18,17,17,0,21,21,0,29,0,30,16,0,33,0,52,0,32,8,31,0,33,17,17,22,0,42,11,14,31,0,37,31,0,19,31,0,22,3,3,0,21,31,0,41,17,22,0,43,11,14,21,0,43,0,44,0,35,7,16,22,0,44,11,0,42,0,44,0,30,0,52,0,49,0,6,7,0,27,0,59,19,0,12,0,19,19,8,7,7,22,0,43,13,14,21,0,43,0,34,0,52,0,63,8,0,54,21,0,2,8,16,22,0,43,12,14,21,1,22,21,1,24,21,0,26,17,0,10,21,0,28,17,0,8,16,22,0,45,11,14,31,0,28,0,26,0,53,0,12,8,16,0,10,21,0,45,17,0,42,0,30,7,22,0,23,13,14,21,0,26,0,33,0,52,31,0,42,8,0,54,21,0,43,0,44,0,13,7,16,22,0,46,11,0,27,21,1,31,17,0,49,0,0,7,16,0,0,31,0,44,17,0,21,16,8,16,21,0,25,31,0,45,0,10,21,0,29,17,17,22,0,26,12,14,21,1,13,0,34,0,53,0,1,8,0,2,21,1,24,19,21,0,26,17,0,1,22,0,26,13,14,21,1,25,0,14,21,0,26,17,0,42,0,21,7,0,13,0,21,19,0,63,17,0,30,16,0,24,0,63,17,0,24,0,59,17,22,0,47,11,0,44,0,63,7,16,0,49,0,13,7,16,22,0,48,11,14,21,1,15,0,34,16,0,0,0,67,0,64,3,2,17,0,37,21,0,26,0,33,21,0,48,0,1,21,0,47,17,17,0,0,21,0,48,17,17,0,26,0,53,0,10,8,16,0,12,31,0,48,17,0,42,0,30,7,31,0,47,17,22,0,49,11,14,21,1,25,0,13,21,0,26,17,0,33,0,52,31,0,49,8,0,54,0,44,0,63,7,8,16,0,42,15,15,7,22,0,26,13,14,0,62,0,21,21,1,32,17,0,33,21,0,26,0,5,21,1,31,17,17,0,30,0,52,31,0,46,0,23,0,66,17,0,47,0,0,7,16,0,22,21,1,31,17,21,1,24,21,0,26,17,8,0,54,31,0,38,8,16,22,0,50,11,14,21,1,18,0,34,16,0,64,3,2,21,1,24,21,0,26,17,0,2,0,64,17,0,0,22,0,26,13,14,21,0,26,0,14,0,2,0,58,19,0,0,0,11,19,21,1,30,17,0,1,22,0,26,13,14,31,0,26,31,0,50,31,0,43,21,0,24,21,0,23,3,5,25,15,16,22,0,3,11,14,21,1,28,21,1,27,0,52,0,109,8,0,110,21,1,8,0,53,0,33,8,0,111,3,4,7,22,0,4,11,14,21,1,19,0,47,0,25,0,53,0,0,8,7,16,0,21,0,112,0,47,0,1,7,16,0,0,21,1,21,0,34,16,17,17,0,44,21,0,1,0,53,0,14,8,7,16,22,0,5,22,0,6,22,0,7,22,0,8,22,0,9,4,5,11,14,21,1,21,0,34,16,0,11,21,0,1,17,0,10,21,0,5,17,0,8,16,21,0,2,21,0,3,21,0,1,0,53,0,30,8,0,50,31,0,4,8,8,16,14,21,0,1,0,14,0,62,17,22,0,10,11,0,10,21,0,5,17,22,0,11,11,0,10,21,0,6,17,22,0,12,11,14,21,0,11,0,10,21,0,7,17,0,8,16,22,0,13,11,14,21,0,11,0,27,16,0,12,21,0,7,17,21,0,2,21,0,3,0,113,8,16,14,21,0,12,0,10,21,0,7,17,0,9,21,0,12,0,26,0,63,17,17,21,0,2,21,0,3,0,114,8,16,14,21,0,1,0,30,21,0,12,17,0,11,0,52,0,27,8,0,10,0,14,0,52,0,62,8,19,16,0,8,16,21,0,2,0,30,31,0,12,19,21,0,3,0,115,8,16,14,21,0,5,0,27,16,0,12,21,0,7,17,0,10,21,0,10,17,0,26,0,10,31,0,5,0,26,16,0,9,21,0,8,17,19,0,9,0,27,19,0,63,17,0,12,21,0,9,0,10,31,0,8,17,17,21,0,2,31,0,3,0,116,8,16,14,21,0,13,0,9,0,52,0,8,21,1,35,0,51,0,12,8,21,1,20,0,34,16,0,13,21,0,1,17,0,11,21,0,6,17,19,0,15,0,26,19,8,16,22,0,14,11,0,9,0,52,0,49,0,0,7,21,1,33,0,1,0,19,19,0,8,19,0,16,0,70,19,8,16,22,0,15,11,14,21,1,19,0,34,16,0,0,0,63,17,0,1,21,0,1,17,0,2,21,0,15,17,0,30,21,0,6,0,8,16,17,0,42,0,33,7,0,58,0,25,16,0,21,0,71,0,63,3,2,17,0,21,0,59,17,17,22,0,16,11,14,21,0,16,0,49,0,0,0,52,0,58,0,53,0,2,8,8,0,2,0,15,0,52,0,62,8,19,7,0,62,17,0,30,31,0,16,0,15,0,62,17,0,26,0,53,0,12,8,16,17,22,0,17,11,14,31,0,7,0,27,16,0,30,31,0,13,0,27,0,53,0,12,8,16,22,0,18,11,17,0,42,0,33,7,0,63,0,59,3,2,17,0,2,22,0,17,13,14,31,0,10,0,30,31,0,11,17,22,0,19,11,14,31,0,14,0,26,0,53,0,12,8,0,30,9,0,51,0,1,0,52,31,0,6,0,26,16,21,1,35,16,0,53,0,33,8,8,0,19,0,2,0,11,19,0,1,0,52,0,27,8,19,0,1,0,1,19,8,31,0,15,17,0,30,21,0,19,17,22,0,20,11,14,21,0,19,0,8,16,0,2,21,0,17,17,0,26,16,0,30,21,0,19,17,0,42,0,1,7,31,0,20,17,22,0,21,11,0,7,16,0,4,0,58,17,22,0,22,11,14,0,63,0,72,3,2,0,33,31,0,9,0,30,31,0,18,17,17,0,2,31,0,17,17,0,30,31,0,19,17,0,30,0,52,21,0,21,0,11,0,62,17,8,0,54,0,2,8,21,0,22,17,0,30,0,52,31,0,21,0,12,0,62,17,8,0,54,0,42,0,3,7,8,31,0,22,17,25,21,0,2,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,31,0,4,0,13,16,22,0,7,11,14,15,17,22,0,8,11,14,15,18,22,0,9,11,14,21,0,1,0,13,16,0,11,0,62,17,0,40,0,121,17,14,21,1,15,21,1,24,21,0,1,17,0,2,21,0,3,0,2,0,66,17,0,1,0,59,17,17,22,0,10,11,0,49,0,0,7,16,22,0,11,11,0,31,16,22,0,12,11,14,0,59,0,14,21,0,3,17,0,33,21,0,12,17,22,0,13,11,14,21,0,1,0,33,21,0,12,17,22,0,14,11,0,30,0,52,0,62,0,53,0,11,8,8,0,42,0,1,7,0,63,19,0,17,0,57,31,0,8,8,0,30,0,52,0,62,0,53,0,12,8,8,19,21,0,10,0,33,21,0,12,17,17,14,31,0,11,0,34,21,0,12,0,34,16,17,0,15,0,62,17,0,40,0,122,17,14,21,0,14,0,30,21,0,13,17,0,14,0,52,21,1,25,8,0,9,0,52,0,27,8,0,14,0,52,21,1,15,0,34,16,8,19,16,21,0,12,0,30,21,0,13,19,21,0,9,0,123,8,16,14,31,0,13,0,21,0,63,17,0,9,0,52,0,26,0,52,0,63,8,8,16,15,19,16,14,21,0,10,0,0,21,0,3,17,0,15,0,62,17,0,26,16,22,0,15,11,0,12,21,1,14,0,34,16,0,14,21,0,1,17,17,0,1,22,0,3,13,14,21,0,3,0,15,0,62,17,0,27,16,0,9,31,0,15,17,0,12,21,0,3,0,69,0,53,0,15,8,0,9,0,11,0,52,0,73,8,19,16,17,0,13,0,50,0,25,8,21,0,9,0,125,8,16,14,21,1,30,21,0,7,3,2,21,1,24,21,0,1,17,0,26,16,0,12,0,65,0,14,21,0,3,17,17,0,13,0,50,0,25,8,21,0,9,0,126,8,16,14,0,65,0,14,21,0,3,17,22,0,16,11,0,10,0,52,0,26,8,16,22,0,17,11,14,0,69,0,14,21,0,3,17,0,10,0,52,0,26,8,16,22,0,18,11,0,33,0,52,21,0,12,0,33,0,52,21,0,17,0,53,0,33,8,0,31,9,8,16,8,0,54,0,27,8,16,22,0,19,11,14,21,0,19,0,10,21,0,18,17,0,8,16,22,0,20,11,14,21,1,15,0,34,16,0,0,0,63,17,0,14,21,0,1,17,22,0,21,11,14,21,1,17,0,34,16,0,14,21,0,1,17,0,33,21,0,21,0,8,16,21,1,34,16,17,22,0,22,11,14,21,0,22,0,11,21,0,20,17,0,13,0,50,0,25,8,21,0,9,0,127,8,16,14,21,0,17,0,10,21,0,18,17,22,0,23,11,0,33,21,0,12,17,0,31,16,0,42,0,33,7,22,0,12,13,14,0,59,0,14,21,0,3,17,0,10,31,0,23,17,0,33,21,0,12,17,0,21,0,63,17,0,0,0,52,0,49,0,0,7,8,16,0,31,16,0,42,0,33,7,0,8,0,31,0,53,0,42,0,33,7,8,19,0,33,0,52,0,31,8,0,18,19,21,0,12,0,21,0,59,17,17,0,24,0,59,17,0,49,0,0,7,16,0,31,16,22,0,24,11,14,21,1,15,0,34,16,0,0,0,66,17,0,66,3,2,21,1,24,21,0,1,17,0,2,21,0,10,17,0,33,21,0,24,17,22,0,25,11,0,49,0,0,7,16,22,0,26,11,0,31,16,22,0,27,11,14,21,0,27,0,42,0,33,7,22,0,24,13,14,21,0,27,0,42,0,33,7,22,0,26,13,14,21,0,27,0,42,0,33,7,22,0,25,13,14,21,0,24,0,42,0,33,7,22,0,1,13,14,21,0,24,0,42,0,33,7,22,0,10,13,14,21,0,24,0,42,0,33,7,22,0,5,13,14,21,0,24,0,42,0,33,7,22,0,6,13,14,0,62,0,12,21,0,25,17,22,0,28,11,0,49,0,0,7,16,22,0,29,11,14,0,62,0,11,21,0,25,17,0,30,16,22,0,30,11,14,0,18,0,30,0,10,19,0,42,0,21,7,0,30,0,21,19,0,63,19,22,0,31,11,14,0,14,21,0,31,0,50,0,8,8,21,0,28,19,22,0,32,11,14,21,0,1,0,31,21,1,26,0,34,16,0,0,0,62,0,67,0,65,0,64,3,4,17,17,22,0,33,11,14,21,1,26,21,1,24,21,0,1,17,0,30,16,22,0,34,11,14,21,0,33,21,0,32,0,63,17,22,0,35,11,14,31,0,33,21,0,32,0,52,0,67,8,0,2,0,66,19,0,6,31,0,32,0,52,0,66,8,19,16,22,0,36,11,0,0,0,52,0,11,0,52,0,62,8,0,10,21,0,35,19,8,16,22,0,37,11,14,21,0,37,0,34,16,0,11,0,62,17,21,0,1,0,50,15,20,8,0,30,9,21,0,9,0,128,8,16,14,21,0,35,0,2,0,67,17,0,0,0,62,0,66,0,67,3,3,0,33,21,0,36,17,17,22,0,38,11,14,21,0,3,0,33,0,52,21,0,24,0,33,21,0,30,17,8,0,54,31,0,37,0,24,0,63,17,8,16,0,2,21,0,20,17,0,42,0,1,7,21,0,18,17,22,0,3,12,14,31,0,20,0,9,31,0,21,17,22,0,39,11,14,0,62,0,11,21,0,3,17,0,33,0,52,21,0,12,8,0,54,0,27,0,52,0,63,8,8,16,22,0,40,11,0,27,16,0,9,21,0,39,17,22,0,41,11,14,21,0,3,0,33,21,0,41,0,8,16,21,1,34,16,17,0,2,21,0,41,17,0,0,21,0,3,17,0,19,0,15,0,66,19,0,11,21,0,40,19,0,1,0,19,19,0,6,0,19,0,14,0,67,19,0,2,31,0,40,0,0,0,63,17,19,0,33,0,52,21,0,12,8,0,54,0,27,8,9,19,16,22,0,42,11,14,21,0,42,0,33,0,0,0,6,0,63,19,0,5,0,19,19,31,0,41,0,8,16,0,49,0,0,7,16,0,53,0,19,0,1,0,33,19,8,19,0,62,0,14,21,0,42,17,0,9,21,0,39,17,0,8,16,21,1,34,16,17,0,6,22,0,42,13,14,21,0,42,0,27,16,0,2,31,0,39,17,0,0,22,0,3,13,14,21,0,22,0,19,0,1,0,8,0,53,0,2,8,19,22,0,42,13,14,0,59,0,14,21,0,3,17,0,27,0,63,17,0,9,0,73,0,14,21,0,3,17,17,0,1,22,0,3,13,14,0,62,0,14,21,0,3,17,0,27,16,0,12,21,0,16,17,21,0,24,0,50,0,31,8,21,0,9,0,129,8,16,14,31,0,17,0,19,0,1,0,8,0,53,0,2,8,19,22,0,3,13,14,21,0,24,0,42,0,33,7,22,0,16,13,14,21,1,30,0,1,21,0,1,17,22,0,43,11,14,31,0,25,0,1,22,0,10,13,14,21,0,10,0,49,0,0,7,16,0,31,16,22,0,12,12,14,21,0,16,0,10,0,52,0,26,8,16,0,33,21,0,12,17,0,31,16,0,42,0,33,7,22,0,12,13,14,21,0,24,0,33,21,0,12,17,22,0,44,11,14,21,0,18,0,1,21,0,19,17,0,33,21,0,44,17,0,12,0,30,0,51,0,1,8,0,11,19,0,62,17,0,42,0,3,7,0,66,17,0,0,0,63,17,22,0,45,11,14,21,1,15,0,34,16,0,0,0,64,17,0,14,21,0,1,17,0,33,21,0,12,17,0,30,16,22,0,46,11,14,31,0,10,0,33,21,0,12,17,0,12,21,0,12,0,53,0,30,8,0,11,9,0,51,0,22,8,0,11,19,0,62,17,0,44,0,21,7,21,0,28,0,30,16,21,0,30,3,2,17,22,0,47,11,14,31,0,47,0,47,15,21,7,16,14,21,0,18,0,33,21,0,44,17,0,31,16,22,0,48,11,0,42,0,33,7,22,0,12,13,14,21,0,24,0,33,21,0,12,17,22,0,44,12,14,21,0,12,0,31,16,22,0,49,11,14,21,0,12,0,42,0,33,7,22,0,1,13,14,21,0,44,0,42,0,33,7,22,0,3,13,14,21,0,44,0,42,0,33,7,22,0,42,13,14,31,0,18,0,12,31,0,19,17,0,33,31,0,44,17,0,30,16,0,21,31,0,48,0,31,16,0,33,21,0,46,17,17,22,0,46,12,14,21,0,3,0,68,0,53,0,15,8,0,9,0,11,0,52,0,74,8,19,16,22,0,50,11,14,0,62,0,11,21,0,3,17,0,11,21,0,50,17,22,0,51,11,14,21,0,51,0,27,16,21,1,34,16,0,42,0,33,7,21,0,42,17,22,0,52,11,0,15,0,63,17,22,0,53,11,14,0,62,0,11,21,0,42,17,22,0,54,11,14,0,62,0,11,21,0,52,17,22,0,55,11,14,21,0,50,0,9,21,0,55,17,21,0,12,21,0,9,0,130,8,16,14,0,66,0,16,21,0,3,17,0,9,0,66,0,11,21,0,52,17,17,22,0,56,11,0,30,16,0,28,16,22,0,57,11,14,0,67,0,14,21,0,3,17,22,0,58,11,0,9,21,0,56,17,0,26,16,0,10,21,0,56,17,22,0,59,11,14,0,66,0,25,16,0,37,21,0,3,17,0,10,21,0,59,17,0,11,21,0,58,17,0,11,21,0,54,17,0,27,0,15,31,0,58,19,0,9,0,26,19,16,0,12,21,0,56,17,21,0,12,21,0,9,0,131,8,16,14,0,62,0,14,21,0,3,17,0,11,0,52,0,10,0,52,0,27,8,8,21,0,59,17,0,26,0,53,0,9,8,16,21,0,12,21,0,9,0,132,8,16,14,0,63,0,16,31,0,42,17,0,26,16,0,9,21,1,14,0,34,16,0,0,0,66,17,0,14,21,0,1,17,17,0,11,21,0,53,17,22,0,60,11,14,21,0,60,0,10,21,0,59,17,0,8,16,0,28,0,54,21,1,33,0,1,0,18,19,0,52,0,13,0,50,0,25,8,8,8,16,22,0,61,11,14,21,0,50,0,30,16,22,0,62,11,0,0,0,52,21,0,61,0,53,0,33,8,8,16,0,0,0,63,17,22,0,63,11,14,21,0,3,0,33,21,0,62,17,0,13,0,73,17,22,0,64,11,14,21,0,3,0,33,21,0,63,17,22,0,65,11,14,21,0,52,0,33,21,0,63,17,0,6,0,62,17,0,13,21,0,65,17,0,9,21,0,64,17,21,0,12,0,33,21,0,63,19,21,0,9,0,133,8,16,14,21,1,30,0,1,21,0,1,17,21,0,7,0,53,0,11,8,0,9,0,15,0,52,0,74,8,19,16,22,0,66,11,14,21,0,1,0,33,21,0,62,17,0,42,0,1,7,21,1,14,0,34,16,17,0,0,31,0,65,0,15,0,62,17,17,0,0,21,0,64,17,22,0,67,11,14,21,0,1,0,44,0,62,7,16,0,33,0,52,21,0,63,8,0,54,21,0,67,8,16,0,1,0,52,0,26,8,16,0,33,21,0,49,17,0,2,0,52,0,49,0,0,7,0,14,0,62,19,0,10,0,52,0,27,8,9,8,16,0,49,0,0,7,16,0,27,16,22,0,68,11,0,33,21,0,12,17,0,2,16,22,0,69,11,14,21,1,14,0,34,16,0,42,0,1,7,21,1,30,17,0,14,21,0,43,17,0,11,21,0,68,17,21,0,31,0,50,0,8,8,21,0,28,17,22,0,70,11,14,21,0,24,0,33,21,0,30,17,0,21,0,62,17,0,30,0,52,0,8,8,21,0,70,17,0,42,0,1,7,0,63,17,15,22,16,14,21,0,69,0,11,21,1,15,21,1,24,0,11,0,34,0,0,0,67,19,0,53,0,14,8,19,21,0,1,17,0,10,21,0,51,17,0,10,31,0,66,17,0,10,21,0,50,17,17,21,0,12,21,0,9,0,135,8,16,14,21,0,69,0,33,21,0,62,17,0,11,0,66,0,14,31,0,67,17,17,21,0,12,0,33,21,0,62,19,21,0,9,0,136,8,16,14,21,0,69,0,12,0,52,0,27,8,16,0,9,21,0,3,0,15,0,62,17,17,0,9,21,0,52,0,11,0,62,17,17,21,0,12,21,0,9,0,137,8,16,14,21,0,69,0,33,21,0,62,17,22,0,71,11,0,12,22,0,64,13,14,21,0,62,0,30,31,0,71,17,22,0,72,11,14,31,0,16,0,27,16,22,0,73,11,0,30,16,22,0,74,11,14,21,0,43,21,0,7,0,53,0,11,8,0,9,0,15,0,52,0,62,8,19,16,0,11,31,0,73,17,0,11,31,0,50,0,9,21,0,69,17,0,26,16,0,33,21,0,49,17,17,22,0,75,11,0,30,16,22,0,76,11,14,21,0,68,0,33,21,0,76,17,22,0,77,11,14,0,66,0,66,3,2,21,1,24,21,0,68,17,22,0,78,11,0,33,21,0,76,17,22,0,79,11,14,0,63,0,66,3,2,21,1,24,21,0,77,17,22,0,80,11,14,21,0,78,0,33,21,0,34,17,21,0,34,21,0,9,0,138,8,16,14,21,0,43,0,33,21,0,76,17,22,0,81,11,0,30,21,0,79,17,0,39,21,0,38,0,13,16,0,21,21,0,29,0,33,21,0,76,17,0,30,21,0,79,17,17,22,0,82,11,17,22,0,83,11,14,21,0,29,0,33,21,0,76,17,0,41,21,0,27,0,33,21,0,30,17,0,21,21,0,1,0,13,16,17,7,0,33,0,30,0,52,21,0,79,8,19,0,21,31,0,27,0,30,21,0,28,17,0,21,0,59,17,0,53,0,33,8,0,0,21,0,77,0,14,0,63,17,19,19,16,22,0,84,11,14,21,0,84,0,31,16,0,33,0,52,21,0,81,0,30,0,52,21,0,79,8,0,53,0,21,8,16,22,0,85,11,0,53,0,33,8,0,31,9,8,16,22,0,86,11,14,21,0,86,0,30,0,52,0,15,0,52,21,0,79,0,13,16,8,8,16,15,23,16,14,21,0,86,0,33,0,52,21,0,79,0,42,0,30,7,16,0,1,16,0,21,21,0,79,17,0,53,0,33,0,50,0,49,0,0,7,8,8,0,31,9,8,16,0,30,0,52,21,0,79,0,13,16,0,53,0,11,8,8,16,22,0,86,12,14,21,0,86,0,42,0,33,7,22,0,79,13,14,31,0,81,0,33,21,0,86,17,0,13,0,52,0,27,0,52,0,59,8,8,16,0,11,21,0,79,17,21,0,76,0,33,21,0,86,19,21,0,9,0,30,21,1,27,0,140,19,8,16,14,21,0,80,0,33,21,0,86,17,21,0,31,0,24,0,63,19,0,16,0,30,19,21,0,79,17,0,33,21,0,86,0,30,21,0,79,17,0,31,16,17,0,39,31,0,82,17,22,0,87,11,14,21,0,76,0,33,0,52,21,0,86,8,0,54,0,33,0,52,21,0,79,21,1,34,16,8,8,16,22,0,88,11,14,31,0,78,0,9,31,0,75,17,0,49,0,0,7,16,21,1,33,0,1,0,19,19,21,0,28,17,22,0,89,11,0,30,31,0,28,0,26,0,63,17,17,22,0,90,11,14,21,0,34,0,44,0,62,7,16,0,21,21,0,88,31,0,26,0,53,0,33,8,0,51,0,1,8,21,0,76,17,17,22,0,91,11,14,21,0,91,0,23,0,52,0,13,8,21,0,76,17,0,11,0,62,17,0,9,31,0,80,17,21,0,76,21,0,9,0,141,8,16,14,21,0,43,0,33,21,0,34,17,0,0,0,66,17,0,0,0,52,0,15,0,52,0,62,8,8,16,0,0,21,0,35,0,2,0,67,17,0,33,21,0,29,0,33,21,0,34,17,17,17,0,21,0,63,0,1,31,0,89,17,0,0,21,0,38,0,33,21,0,29,17,17,0,33,31,0,88,17,17,22,0,92,11,14,21,0,91,0,33,0,52,31,0,86,8,0,54,0,19,0,11,0,62,19,31,0,31,0,33,0,52,0,49,0,0,7,8,0,18,19,21,0,79,19,0,9,0,18,0,14,0,62,19,0,9,21,0,79,0,26,0,63,17,19,19,8,21,0,77,17,22,0,93,11,14,21,0,74,21,0,34,0,21,21,0,76,17,3,2,0,30,0,66,0,67,3,2,17,0,21,16,22,0,94,11,14,21,0,74,0,44,0,60,7,16,31,0,43,0,33,31,0,74,17,31,0,68,0,33,31,0,34,17,0,21,31,0,77,17,0,11,0,62,17,0,0,31,0,93,0,2,0,58,17,17,0,0,0,75,17,31,0,91,31,0,92,3,5,22,0,95,11,14,21,0,59,0,8,16,0,49,0,0,7,16,21,1,33,0,1,0,19,19,21,0,51,17,0,7,0,10,0,12,19,0,66,17,0,9,21,0,53,17,22,0,96,11,14,31,0,56,0,27,16,0,10,0,63,0,14,21,0,3,17,17,22,0,97,11,0,11,21,0,69,0,11,21,0,51,17,0,10,0,52,0,26,8,16,0,10,21,0,59,17,0,10,31,0,96,17,22,0,98,11,17,0,30,16,22,0,99,11,14,31,0,97,0,10,31,0,98,17,0,12,21,0,53,17,21,0,12,21,0,9,0,142,8,16,14,0,62,0,14,21,0,3,17,0,11,21,0,59,17,0,10,0,62,0,16,21,0,3,17,0,9,31,0,53,17,17,0,11,31,0,54,17,0,26,16,0,33,21,0,99,17,22,0,100,11,14,21,1,25,0,11,21,0,1,17,0,30,16,22,0,101,11,0,42,0,33,7,21,0,1,17,22,0,102,11,0,9,16,0,38,16,22,0,103,11,0,27,0,1,0,19,19,0,59,17,0,30,16,0,33,31,0,102,17,22,0,104,11,14,31,0,7,0,0,21,1,30,17,22,0,105,11,0,16,21,0,1,17,0,30,16,22,0,106,11,0,21,31,0,101,17,22,0,107,11,14,21,0,1,0,33,31,0,106,17,0,0,21,0,103,0,13,16,0,42,0,1,7,31,0,105,17,17,0,21,22,0,104,13,14,31,0,49,0,33,31,0,30,17,22,0,108,11,14,21,1,25,0,14,21,0,1,17,22,0,109,11,14,21,1,15,0,34,16,0,0,0,66,17,0,14,21,0,1,17,22,0,110,11,14,21,1,15,0,34,16,0,0,0,65,17,0,14,21,0,1,17,22,0,111,11,21,1,34,0,51,0,11,8,21,0,110,17,0,9,21,0,109,17,22,0,112,11,14,21,0,55,0,9,21,0,112,0,10,21,0,111,17,0,27,16,17,21,0,12,21,0,9,0,143,8,16,14,0,62,0,21,21,0,112,17,0,49,0,0,7,16,0,30,0,63,0,21,21,0,111,17,17,0,24,0,63,17,0,27,0,53,0,1,8,16,0,0,31,0,51,0,26,0,63,17,0,30,31,0,111,17,0,8,16,17,0,42,0,21,7,31,0,45,17,22,0,113,11,14,31,0,109,0,11,31,0,112,17,0,11,0,74,0,14,21,0,3,17,0,27,16,0,10,21,0,55,17,17,0,30,16,22,0,114,11,14,31,0,110,0,30,16,22,0,115,11,14,21,0,100,0,0,21,0,99,17,0,0,0,52,21,0,61,0,53,0,33,8,0,2,21,0,100,19,8,16,22,0,116,11,14,21,0,116,0,30,31,0,55,0,33,21,0,99,17,22,0,117,11,0,2,21,0,100,0,0,0,63,17,17,17,0,21,22,0,114,13,14,21,0,117,0,8,16,22,0,117,12,14,21,0,117,0,42,0,30,7,22,0,99,13,14,21,0,117,0,42,0,30,7,22,0,100,13,14,31,0,117,0,42,0,30,7,22,0,116,13,14,21,0,107,21,0,107,21,0,108,21,0,108,21,0,46,0,30,0,66,17,21,0,114,21,0,63,0,30,21,0,64,17,0,63,0,0,21,0,72,17,0,63,0,0,21,0,72,17,31,0,61,0,33,21,0,57,17,0,6,0,63,17,0,0,21,0,57,17,31,0,116,21,0,115,3,12,0,21,16,0,42,0,33,7,21,0,12,17,0,21,31,0,94,17,22,0,118,11,0,31,16,22,0,119,11,14,31,0,107,0,44,0,62,7,16,31,0,104,21,0,108,0,44,0,76,7,16,31,0,108,0,13,16,0,25,16,0,0,0,63,17,31,0,113,0,22,31,0,69,0,33,31,0,46,17,0,0,0,67,17,17,0,29,16,0,20,16,31,0,114,0,44,0,77,7,16,21,0,1,0,0,21,0,60,17,0,33,31,0,62,0,30,21,0,64,17,17,0,0,21,1,14,0,34,16,0,0,0,63,17,0,1,0,78,17,17,0,6,0,78,17,21,0,72,0,44,0,79,7,16,21,0,1,0,33,0,63,0,1,31,0,72,17,17,0,42,0,1,7,21,1,30,17,31,0,3,0,33,21,0,57,17,0,0,0,64,17,31,0,52,0,33,21,0,99,17,0,2,0,81,17,0,1,31,0,100,17,0,0,0,80,17,0,14,0,52,0,58,8,0,2,0,61,19,0,0,0,19,19,16,31,0,70,0,2,0,65,17,0,0,0,82,17,22,0,120,11,0,24,0,59,17,3,12,0,21,31,0,95,17,0,21,16,0,33,21,0,119,17,22,0,121,11,14,0,19,0,42,0,33,7,21,0,12,19,0,21,0,13,0,53,0,42,0,24,0,52,0,1,8,7,8,19,22,0,122,11,14,31,0,63,0,30,31,0,64,17,0,42,0,1,7,0,63,17,31,0,57,21,0,99,3,3,0,21,16,21,0,122,21,0,5,0,13,16,0,42,0,1,7,0,63,17,0,5,31,0,118,17,0,28,0,52,0,13,0,50,0,1,8,8,21,0,115,17,17,22,0,123,11,14,21,0,5,21,0,6,3,2,0,44,0,33,0,52,0,28,0,52,21,0,115,0,13,16,8,0,33,21,0,119,19,0,42,0,21,7,0,59,19,8,7,21,0,123,31,0,60,0,10,31,0,59,17,0,8,16,0,27,16,21,1,34,16,0,33,31,0,99,17,31,0,122,31,0,123,17,3,2,17,22,0,124,11,14,31,0,120,0,34,0,59,17,0,21,21,0,121,17,31,0,103,31,0,36,31,0,35,0,8,16,31,0,115,0,13,0,51,0,1,8,31,0,121,17,0,16,31,0,119,17,0,21,0,63,17,0,30,16,31,0,38,0,0,31,0,90,17,31,0,83,31,0,87,3,6,31,0,124,3,4,25,21,0,2,0,13,0,13,0,66,19,0,57,15,24,8,16,22,0,3,22,0,4,4,2,11,14,21,0,1,21,1,36,31,0,4,17,22,0,5,11,22,0,6,22,0,7,22,0,8,22,0,9,22,0,10,4,5,11,14,31,0,6,21,1,38,31,0,7,21,0,8,0,34,16,31,0,9,31,0,10,3,4,17,22,0,11,22,0,12,22,0,13,22,0,14,4,4,11,14,31,0,11,31,0,8,0,24,0,63,17,0,21,31,0,3,0,33,31,0,12,17,3,1,17,0,21,16,31,0,13,0,12,16,0,29,16,0,43,0,11,7,16,31,0,14,31,0,5,3,5,25,21,0,1,21,0,2,16,25,21,0,1,0,33,0,52,21,0,2,0,30,21,0,1,17,8,0,54,0,44,0,63,7,8,16,21,1,11,21,0,2,0,42,0,33,7,16,17,25,0,62,0,40,21,0,1,0,30,16,0,34,16,0,105,3,2,17,25,21,0,2,0,42,0,30,7,22,1,24,13,14,21,0,1,0,30,21,0,2,17,25,0,62,0,40,21,0,1,0,21,0,62,17,0,33,0,52,0,49,0,0,7,8,21,1,29,17,0,9,21,1,30,17,0,30,16,0,106,3,2,17,25,0,62,0,40,21,1,24,0,30,21,0,1,17,0,107,3,2,17,25,0,62,0,40,21,0,2,0,30,21,0,1,17,0,42,0,33,7,21,1,24,17,0,108,3,2,17,25,21,0,2,0,42,0,30,7,22,1,23,13,14,21,0,1,21,1,25,21,0,2,17,25,0,47,0,10,7,0,57,21,0,1,0,11,0,51,0,22,8,21,0,2,0,53,0,30,8,19,0,42,0,40,7,0,62,19,8,25,0,62,0,28,0,53,0,45,0,14,7,8,0,48,15,25,7,0,19,0,50,0,44,0,62,7,8,19,0,34,0,59,19,3,2,0,55,0,13,0,11,0,62,19,0,51,0,9,8,8,22,0,3,11,14,15,26,22,0,4,11,14,0,62,21,0,4,0,118,8,0,42,0,63,31,0,4,0,119,8,7,3,2,0,55,0,13,0,51,0,12,8,8,22,0,5,11,14,21,0,1,31,0,5,0,120,3,2,0,55,0,13,0,51,0,5,8,0,11,31,0,3,19,8,21,0,2,17,0,42,0,40,7,0,62,17,25,0,14,0,57,0,47,0,10,7,8,0,57,21,0,1,0,11,0,51,0,22,8,21,0,2,0,53,0,30,8,0,42,0,63,0,56,0,33,8,7,0,41,21,1,6,7,0,22,21,1,5,19,19,0,29,0,50,0,9,8,9,19,0,42,0,40,7,0,62,19,8,25,21,1,14,0,21,0,62,17,0,30,21,0,1,17,0,13,21,2,15,0,34,16,0,0,0,65,17,17,21,1,12,0,21,0,62,19,0,30,21,0,1,19,21,1,9,0,124,8,16,25,21,2,26,21,2,24,21,0,1,17,0,9,21,1,29,0,14,0,62,17,17,25,21,1,5,0,33,0,52,21,0,1,8,0,54,21,1,5,0,33,21,0,2,17,8,16,22,1,5,12,14,21,1,6,0,33,0,52,21,0,2,8,0,54,21,1,6,0,33,21,0,1,17,8,16,22,1,6,12,25,21,1,22,0,33,21,0,1,17,21,1,24,0,50,0,31,8,0,33,21,0,1,19,21,1,9,0,134,8,16,25,21,1,84,0,33,0,52,21,0,1,8,0,13,0,52,0,27,8,9,0,51,0,10,8,21,1,85,17,0,8,16,21,1,76,0,30,0,52,21,1,79,8,0,53,0,21,8,9,0,33,21,0,1,19,21,1,9,0,139,8,16,25,21,0,1,0,44,0,44,0,41,0,62,7,0,40,0,144,19,7,7,3,2,25,21,0,1,0,27,16,0,0,21,0,2,17,0,49,0,6,7,16,0,6,21,0,1,17,25,0,36,0,14,0,18,0,50,0,13,8,19,0,42,0,30,7,0,19,19,0,0,21,0,2,19,0,42,0,33,7,21,3,8,19,0,21,0,100,19,0,21,21,0,1,19,0,21,0,117,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[29],runtime[30],runtime[31],runtime[32],runtime[33],runtime[34],runtime[35],runtime[36],runtime[37],runtime[38],runtime[39],runtime[40],runtime[41],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[55],runtime[56],runtime[58],runtime[59],runtime[61],10,-1,26,9,0,1,5,4,2,3,-3,-2,17,3.141592653589793,Infinity,-4,-5,21,15,14,11,28,16,7,25,'\0','0','#','\'','\"','@',str("⋄,"),str("⇐←↩"),str("(){}⟨⟩"),str("‿"),str("·"),str("𝕊𝕏𝕎𝔽𝔾𝕤𝕩𝕨𝕗𝕘"),str(".¯π∞"),str("_"),str("aA"),str("•"),str("𝕨"),str(" "),str("#\'\"@"),str("s"),str("Unknown character"),str(": "),str("Unclosed quote"),str("Words can\'t only have underscores"),str("System dot with no name"),str("Numbers can\'t start with underscores"),str("Letter"),str(" \""),str("\" not allowed in numbers"),str("ea"),str("Negative sign in the middle of a number"),str("Portion of a number is empty"),str("Ill-formed decimal or exponent use"),str("π and ∞ must occur alone"),str("Missing "),str("opening"),str("closing"),str("Malformed bracket nesting"),str("Empty program"),str("Swapped open and closed brackets"),str("Parentheses can\'t contain separators"),str("Empty statement or expression"),str("Invalid assignment or stranding use"),str("Dot must be followed by a name"),str("Can\'t strand Nothing (·)"),str("Special name outside of any block"),str("Dot must be preceded by a subject"),str("Nothing (·) cannot be assigned"),str("Missing operand"),str("Double subjects (missing ‿?)"),str("Role of the two sides in assignment must match"),str("Can\'t return Nothing (·)"),str("Assignment target must be a name or list of targets"),str("Can\'t nest assignments (write aliases with ⇐)"),str("Can\'t use result of function/modifier assignment without parentheses"),str("Can\'t define special name"),str("Redefinition"),str("Undefined identifier"),str("Can\'t export from surrounding scope"),str("Second-level parts of a train must be functions"),str("Can\'t use Nothing (·) in lists"),str("System values not supported")] ,[[0,1,0,0],[0,0,3,40],[1,0,528,5],[1,1,547,5],[0,0,671,51],[0,0,2553,23],[0,0,3366,125],[0,0,8434,15],[0,0,8585,3],[0,0,8593,3],[0,0,8633,3],[0,0,8652,3],[0,0,8675,3],[0,0,8716,3],[0,0,8735,3],[0,0,8763,3],[2,1,8787,3],[0,0,8823,6],[2,1,8960,3],[0,0,9032,3],[0,0,9082,3],[0,0,9104,3],[0,0,9162,3],[0,0,9193,3],[0,0,9255,3],[0,0,9277,3],[2,1,9302,3]] ); let compile = compgen(list(glyphs.map(str))); runtime[42] = rtAssert; let system = (x,w) => { let r = table(s=>sysvals[unstr(s)])(x); if (r.some(v=>!has(v))) { let m = x.filter((_,i)=>!has(r[i])).map(s=>"•"+unstr(s)).join(" "); throw Error("Unknown system values (see •listSys for available): "+m); } return table(v=>v.dynamic?v():v)(r); } let rt_sys = list([runtime, system]); let bqngen = (comp, rt) => src => run.apply(null,comp(str(src),rt)); let bqn = bqngen(compile, rt_sys); // Formatter let fmtnum = x => str(x==Infinity ? "∞" : x==-Infinity ? "¯∞" : (""+x).replace(/-/g,"¯")); let fmt1 = run( [15,1,25,21,0,1,22,0,2,22,0,3,22,0,4,22,0,5,4,4,11,14,0,65,0,15,0,18,0,18,19,0,38,0,66,8,3,2,0,41,0,10,0,38,0,55,8,8,21,0,5,3,2,0,41,0,55,0,39,0,8,8,8,0,19,9,22,0,6,11,14,15,2,22,0,7,11,14,0,11,0,8,0,48,19,0,43,15,3,8,22,0,8,11,14,15,4,22,0,9,11,14,15,5,22,0,10,11,14,15,6,15,7,3,2,0,41,15,8,0,47,3,2,0,41,0,10,0,39,0,10,0,38,0,47,8,0,37,0,7,8,8,8,8,22,0,11,11,14,0,75,0,19,0,74,17,15,9,15,10,3,2,0,41,0,10,0,11,0,44,19,0,7,0,11,0,10,0,48,19,19,8,3,2,0,41,0,14,0,14,0,44,0,44,3,2,19,8,22,0,12,11,14,15,11,22,0,13,11,14,15,12,22,0,14,11,14,15,13,15,14,15,15,3,3,0,41,0,28,0,55,7,0,8,0,17,19,0,36,0,33,0,0,7,0,12,0,0,0,8,0,38,0,44,8,19,0,10,19,8,8,22,0,15,11,14,31,0,6,31,0,15,21,0,14,3,2,0,41,0,32,21,0,2,7,0,12,0,53,19,0,17,0,36,0,33,0,7,7,8,9,8,21,0,14,3,3,0,41,0,13,0,3,0,48,19,8,22,0,16,11,14,15,16,22,0,17,11,14,0,16,0,16,21,0,16,9,21,0,17,0,27,0,47,19,0,19,9,3,2,0,41,0,15,0,12,0,53,19,8,21,0,2,19,22,0,18,11,14,21,0,18,0,36,0,30,0,54,0,0,0,55,17,0,39,0,18,8,7,8,0,17,9,0,21,0,45,19,25,0,47,0,31,0,20,7,21,0,1,0,1,16,17,0,24,0,40,0,35,0,29,0,32,0,2,7,7,7,8,16,0,33,0,45,0,46,3,2,0,42,0,0,8,7,21,0,2,17,0,17,16,0,27,0,38,0,45,8,0,40,0,44,8,16,25,21,0,1,0,14,16,0,21,0,45,17,22,0,3,11,0,4,0,47,17,21,1,7,16,22,0,4,11,14,15,17,22,0,5,11,14,21,0,1,0,17,21,0,1,0,14,16,0,20,0,45,17,0,18,31,0,3,0,33,0,2,7,16,17,17,0,20,0,38,0,33,0,0,7,8,31,0,5,3,2,0,41,0,16,0,36,0,10,8,0,8,0,44,19,8,31,0,4,17,25,21,0,1,0,17,16,0,31,0,28,0,56,7,0,17,0,14,0,27,0,45,19,0,39,0,19,8,19,0,18,0,16,19,7,21,0,1,0,14,16,21,1,7,0,47,17,17,0,18,16,25,0,56,0,17,21,0,1,0,10,16,21,0,2,3,2,17,22,0,3,11,14,21,0,3,21,0,1,31,0,3,3,3,0,19,16,0,18,16,25,0,69,0,18,21,0,1,0,26,16,0,21,0,47,17,0,21,0,45,17,17,0,18,0,68,17,0,19,16,25,21,0,1,0,14,16,0,27,0,45,17,22,0,3,11,14,0,70,21,0,2,0,16,0,3,0,47,19,0,29,0,26,7,0,71,19,0,17,9,21,1,5,3,2,0,41,0,8,0,38,0,49,8,8,16,3,2,0,18,16,0,20,21,0,3,17,0,19,16,21,0,1,0,27,0,40,0,72,0,27,0,47,0,1,21,0,2,17,0,3,0,50,17,0,4,0,44,17,17,8,16,0,73,0,20,0,38,0,1,8,31,0,3,17,0,19,16,3,3,0,18,16,25,21,0,1,0,26,16,0,32,0,11,7,0,67,17,0,34,0,1,7,16,0,35,0,0,7,16,0,11,0,48,17,0,33,0,7,7,16,25,21,0,1,0,31,0,76,7,16,21,1,10,0,47,17,21,1,11,0,48,17,0,27,0,38,0,44,0,45,3,2,8,0,40,0,57,8,16,25,21,0,1,0,14,16,0,67,0,31,21,1,5,7,0,31,0,18,0,38,0,77,8,7,9,0,18,9,0,27,0,40,0,58,8,9,3,2,0,41,0,10,0,8,0,47,19,8,16,0,19,16,25,21,0,1,0,31,0,14,7,16,22,0,3,11,14,21,0,3,0,31,0,27,7,0,47,17,0,17,0,28,0,47,7,0,1,0,11,19,0,43,0,34,0,4,7,8,3,2,0,41,0,11,0,8,0,44,19,8,16,22,0,4,11,14,31,0,3,0,31,0,27,7,16,0,11,0,8,0,44,19,0,43,0,47,0,42,0,34,0,4,7,8,8,16,22,0,5,11,14,21,0,1,0,31,0,20,7,0,47,0,20,21,0,4,0,10,16,0,2,21,0,2,17,0,1,16,17,0,6,31,0,4,17,0,2,21,0,2,17,0,32,0,19,7,21,0,5,17,17,0,11,0,1,0,48,19,0,4,0,44,19,0,43,0,19,8,16,0,48,0,42,0,18,0,36,0,8,8,8,16,22,0,6,11,14,31,0,6,21,1,9,0,9,0,36,21,1,8,8,3,2,0,41,31,0,5,0,17,16,0,13,0,38,0,24,0,38,0,47,8,8,16,8,16,21,1,10,0,48,17,25,21,0,1,0,31,21,1,18,7,16,21,1,13,0,47,0,15,21,0,2,17,17,21,1,11,21,0,1,0,11,16,17,25,21,0,1,0,11,16,22,0,3,11,14,0,78,0,16,0,40,21,0,1,8,16,0,21,0,44,17,22,0,1,12,14,21,0,1,0,14,16,0,21,0,45,17,22,0,4,11,0,10,16,0,1,16,0,11,0,38,0,44,8,0,43,0,46,8,16,22,0,5,11,14,0,59,22,0,6,11,14,15,18,22,0,7,11,14,21,0,1,0,25,0,38,0,16,0,11,21,0,6,19,0,0,0,47,19,8,31,0,7,3,2,0,41,0,11,0,10,0,47,19,8,16,22,0,1,12,14,21,0,6,0,20,0,38,0,1,8,21,0,4,17,21,0,5,0,42,0,18,8,21,0,1,17,31,0,5,0,42,0,18,8,0,62,0,20,21,0,4,0,18,0,47,17,0,27,0,45,17,17,0,17,31,0,4,17,0,27,0,40,31,0,6,8,16,17,0,19,16,21,0,3,0,10,0,47,17,0,43,21,1,8,21,1,10,0,47,19,21,1,11,31,0,3,19,8,16,25,21,0,1,21,1,14,21,1,12,3,2,0,41,0,14,0,11,0,44,19,0,33,0,7,7,9,8,16,25,21,0,1,21,1,14,0,45,17,25,0,79,0,80,0,81,0,82,0,83,3,5,0,31,0,15,0,18,0,18,19,7,0,63,17,22,0,3,11,14,0,16,0,16,0,36,21,1,16,0,36,21,0,3,0,27,16,0,26,3,2,0,41,0,10,0,11,0,47,19,8,8,8,0,8,0,37,0,19,8,0,44,19,21,1,17,3,2,0,41,0,15,0,12,0,53,19,8,21,1,2,19,22,0,4,11,14,21,0,1,21,1,3,16,22,0,5,11,0,27,16,22,0,6,11,14,0,64,0,1,0,84,17,0,27,21,0,6,17,22,0,7,11,14,0,86,0,39,0,18,8,0,18,0,85,19,22,0,8,11,14,0,16,0,31,31,0,4,0,39,0,27,0,38,0,47,8,0,15,0,12,21,0,7,0,3,0,48,17,19,0,43,0,16,0,36,31,0,8,8,8,0,27,0,39,0,0,8,19,8,7,0,10,0,36,0,22,8,0,11,0,44,19,0,1,9,0,47,0,9,21,0,7,17,0,43,0,24,8,9,19,0,18,9,22,0,9,11,14,21,0,5,0,21,0,47,17,0,28,21,0,1,7,21,1,4,0,36,0,17,8,9,31,0,3,0,41,0,48,0,1,21,0,2,17,8,31,0,9,3,3,0,41,31,0,6,0,5,16,0,3,0,48,17,8,16,22,0,10,11,14,21,0,10,21,0,7,0,12,0,48,17,0,43,0,28,31,0,5,7,0,27,0,45,19,21,1,2,9,0,9,0,53,19,0,43,0,87,0,39,0,18,8,8,8,16,22,0,10,12,14,31,0,7,31,0,10,3,2,25,21,0,1,0,18,0,38,0,26,0,36,0,31,0,56,7,8,8,16,0,26,21,0,2,0,0,0,47,17,0,18,0,44,17,0,25,16,0,2,0,38,0,8,0,38,0,23,8,8,16,17,25,0,52,0,0,0,55,17,0,8,21,0,1,17,0,2,0,55,0,1,0,61,17,17,0,0,0,51,0,0,0,55,17,0,16,0,1,0,60,19,0,2,0,11,19,21,0,1,17,17,0,0,21,0,1,17,25] ,[runtime[0],runtime[1],runtime[2],runtime[6],runtime[7],runtime[8],runtime[9],runtime[11],runtime[12],runtime[13],runtime[14],runtime[15],runtime[16],runtime[18],runtime[19],runtime[20],runtime[21],runtime[22],runtime[23],runtime[24],runtime[25],runtime[26],runtime[27],runtime[29],runtime[30],runtime[32],runtime[35],runtime[36],runtime[43],runtime[44],runtime[45],runtime[46],runtime[47],runtime[49],runtime[50],runtime[51],runtime[52],runtime[53],runtime[54],runtime[55],runtime[56],runtime[58],runtime[59],runtime[61],0,-1,Infinity,1,2,5,4,127,32,3,10,'\0',' ','┐','↕','\"','␡','␀','·','*','0',str("@"),str("\'"),str("⟨⟩"),str("⟨"),str("⟩"),str("┌"),str("·─"),str("·╵╎┆┊"),str("┘"),str("┌┐"),str("└┘"),str(" "),str("‿"),str(""),str("array"),str("function"),str("1-modifier"),str("2-modifier"),str("namespace"),str("00321111"),str("("),str(")"),str("{𝔽}")] ,[[0,1,0,0],[1,1,3,19],[0,0,399,3],[0,0,465,6],[0,0,565,3],[0,0,616,4],[0,0,655,3],[0,0,685,4],[0,0,808,3],[0,0,846,3],[0,0,885,3],[0,0,938,7],[0,0,1168,3],[0,0,1201,8],[0,0,1428,3],[0,0,1457,3],[0,0,1467,11],[0,0,1827,3],[0,0,1879,3]] )(list([type, decompose, glyph, fmtnum])); let fmt = x => unstr(fmt1(x)); let fmtErr = (s,e) => { let r=e.src, w=e.message, loc=[]; while (w&&w.loc||(r!=='!'&&w.sh&&w.sh[0]===2)) { let is; [is,w]=w; let n=is.sh?is.sh[0]:0, i=n?is[0]:is; let pair=n&&is.sh.length>1; if (pair) n*=2; let to=i=>s.slice(0,i).join('').split('\n').map(l=>Array.from(l)); let ll=to(i), l=ll.length-1, j=ll[l].length, m=to()[l]; let k=1,o=i-j,cl=j; while (kt?'^':' ').join('')]; loc = add.concat(ol?['(and other lines)']:[], loc); } if (r==='!') w=w?fmt(w).replace(/^/gm,'! '):'! Error'; else w=w.sh?w.join(''):w; return [w].concat(loc).join('\n'); } let isstr = x => x.sh && x.sh.length==1 && x.every(c=>typeof c==="string"); let unixtime = (x,w) => Date.now()/1000; let req1str = (e,x,w) => { if (!isstr(x)) throw Error(e+": 𝕩 must be a string"); if (has(w)) throw Error(e+": 𝕨 not allowed"); return unstr(x); } let dojs = (x,w) => { let s = req1str("•JS",x,w); let r = Function("'use strict'; return ("+s+")")(); let toBQN = x => { if (isnum(x)) return x; if (typeof x==='string') { if (Array.from(x).length!==1) throw Error("•JS: JS strings are one character; use Array.from for BQN strings"); return x; } if (x instanceof Array) return arr(x.map(toBQN),x.sh||[x.length],toBQN(x.fill)); if (isfunc(x)) { let f=(a,b)=>toBQN(x(a,b)); f.m=x.m; return f; } throw Error("•JS: Unrecognized JS result"); } return toBQN(r); } let extendedbqn = (x,w) => { let req = (r,s) => { if (!r) throw Error("•ExtendedBQN: "+s) }; req(!has(w), "𝕨 not allowed"); req(x.sh && x.sh.length===1, "𝕩 must be a list"); req(x.every(e=>e.sh&&e.sh.length===1&&e.sh[0]===2), "𝕩 must contain glyph-primitive pairs"); let pr = glyphs.map(str); let l=0, rt = pr.map(s=>runtime.slice(l,l+=s.length)); x.forEach(([gl,val])=>{ req(typeof gl==="string", "Primitive glyphs must be characters"); req(isfunc(val), "Primitives must be operations"); let k=val.m||0; pr[k].push(gl); rt[k].push(val); }); pr.map(p=>p.sh=[p.length]); rt = list([].concat.apply([],rt)); let bqn = bqngen(compgen(list(pr)),list([rt,system])); return (x,w)=>bqn(req1str("•BQN extension",x,w)); } let dynsys = f => { f.dynamic=1; return f; } let sysvals = { bqn:(x,w)=> bqn(req1str("•BQN",x,w)), js:dojs, extendedbqn, type, glyph, decompose, fmt:fmt1, repr:fmtnum, unixtime, listkeys, listsys: dynsys(() => list(Object.keys(sysvals).sort().map(str))), math: obj2ns(Math,("LN10 LN2 LOG10E LOG2E cbrt expm1 hypot log10 log1p log2 round trunc atan2 cos cosh sin sinh tan tanh").split(" "), f=>typeof f==="function"?runtime[60](f,0):f) }; let make_timed = tfn => { let timed = f => (x,w) => { let n=has(w)?w:1; if (!isnum(n) || n!==Math.floor(n) || n<1) throw Error("•_timed: 𝕨 must be an integer above 1"); return tfn(() => { for (let i=0;i t[0]+t[1]/1e9; sysvals.monotime = (x,w) => sec(process.hrtime()); sysvals.timed = make_timed(f => { let t0=process.hrtime(); f(); return sec(process.hrtime(t0)); }); } else if (typeof performance!=='undefined') { sysvals.monotime = (x,w) => performance.now()/1000; sysvals.timed = make_timed(f => { let t0=performance.now(); f(); return (performance.now()-t0)/1000; }); } if (typeof module!=='undefined') { // Node.js bqn.fmt=fmt; bqn.fmtErr=fmtErr; bqn.compile=compile; bqn.run=run; bqn.sysvals=sysvals; bqn.util={has,list,str,unstr,dynsys,req1str}; module.exports=bqn; }