From 093620ac012d011518073620577d5807f7582267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Ker=C3=A4nen?= Date: Fri, 17 Jun 2022 15:41:48 +0300 Subject: implement Unicode version of Explain --- src/eu.bqn | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/eu.bqn diff --git a/src/eu.bqn b/src/eu.bqn new file mode 100644 index 00000000..0961c269 --- /dev/null +++ b/src/eu.bqn @@ -0,0 +1,79 @@ +# Expression explainer: generates a Unicode box-drawing character diagram to +# show how a BQN program is evaluated + +wh ← 1‿1 + +Explain ← { + b‿const‿blk‿bdy‿(i‿e)‿tok ← 𝕨 + ba‿bc‿bo‿bp ← (⊏/¨1⊸↓)'0'-˜⟨ # For each instruction, number of: + "114113141111111315114131131111=111" # Codes until next opcode + "1110001100000000002221100000000111" # Arguments + "000111//23232303230000011022232111" # Stack values consumed + "1110001111111101111111101101111111" # Stack values output + "0000000011111101010000000000010000" # Position determiner + ⟩ + m ← { # Mask of instruction starts + n ← (↕≠b)+1+ba(⊣⊏˜≠⊸>×⊢)b + Se←{(⊏˜𝕨)Se 1¨⌾((𝕩/𝕨)⊸⊏)𝕩}⍟(0=¯1⊑⊢) + (≠↑∾⟜≠Se 1∾0¨) n + } + mb‿mi ← 0‿¯1 ↓¨ m⊸/¨ b‿i + la←¯1=na←mb⊏bc + na(b⊏˜1+⊣)⌾(la⊸/)˜↩/m + no←1⌾(¯1⊸⊑)mb⊏bo + r←+`no-na + ! 1=¯1⊑r + d←(+`no⊸×)⊸×f←0)○(+`(≠𝕩)↑/⁼)1+e, ti, ti⊏(s+e)÷2⟩ + } 𝕩 + + j←¯1↓((1-˜+`k)⊏ii)⊏˜⊏˜⍟≠{s←𝕩⊏˜g←⍋𝕩⋄(g/˜(⊒s)=s⊏mb⊏bp)⌾((⍷s)⊸⊏)↕≠mb}p + je←j∾¯1 + q←(/k≤j≠p⊏je-la) (⊏≍⊣) p + + pd←⌊¨1+⌽∘∾○<˜˘˜˝ q ⊏ ⍉wh×je≍d + dim←wh×⟨≠𝕩,1+⌈´d⟩+1‿0 + + Path ← {𝕊 (sx‿sy)‿(ex‿ey): + R←{(𝕨⌊𝕩)+↕1+|𝕨-𝕩} + xs←sx R ex ⋄ ys←sy R ey + p←¯1×sx>ex + (xs∾⌜(¯1⊑ys))∾(p⊑xs)∾⌜ys + } + Draw←{𝕊g: g×+˝(2⋆↕4)×>{𝕏g}¨⟨«,«˘,»,»˘⟩} + T←{t‿x 𝕊 s: p←x-⌊(2÷˜≠t) ⋄ ∾(p↑s)‿t‿(s↓˜p+≠t) } + repr←" ╷╶┌╵│└├╴┐─┬┘┤┴┼" + repri←⥊[ + 0‿1‿2‿3‿4‿5‿6‿7‿8‿9‿10‿11‿12‿13‿14‿15 + 1‿1‿3‿3‿5‿5‿7‿7‿9‿9‿11‿11‿13‿13‿15‿15 + 2‿3‿2‿3‿6‿7‿6‿7‿10‿11‿10‿11‿14‿15‿14‿15 + 3‿3‿3‿3‿7‿7‿7‿7‿11‿11‿11‿11‿15‿15‿15‿15 + 4‿5‿6‿7‿4‿5‿6‿7‿12‿13‿14‿15‿12‿13‿14‿15 + 5‿5‿7‿7‿7‿5‿7‿7‿13‿13‿15‿15‿13‿13‿15‿15 + 6‿7‿6‿7‿6‿7‿6‿7‿14‿15‿14‿15‿14‿15‿14‿15 + 7‿7‿7‿7‿7‿7‿7‿7‿15‿15‿15‿15‿15‿15‿15‿15 + 8‿9‿10‿11‿12‿13‿14‿15‿8‿9‿10‿11‿12‿13‿14‿15 + 9‿9‿11‿11‿13‿13‿15‿15‿9‿9‿11‿11‿13‿13‿15‿15 + 10‿11‿10‿11‿14‿15‿14‿15‿10‿11‿10‿11‿14‿15‿14‿15 + 11‿11‿11‿11‿15‿15‿15‿15‿11‿11‿11‿11‿15‿15‿15‿15 + 12‿13‿14‿15‿12‿13‿14‿15‿12‿13‿14‿15‿12‿13‿14‿15 + 13‿13‿15‿15‿13‿13‿15‿15‿13‿13‿15‿15‿13‿13‿15‿15 + 14‿15‿14‿15‿14‿15‿14‿15‿14‿15‿14‿15‿14‿15‿14‿15 + 15‿15‿15‿15‿15‿15‿15‿15‿15‿15‿15‿15‿15‿15‿15‿15 + ] + tp←⌽⚇1 ⌈ii (1‿0+wh×≍)¨ (k/p)⊏d + paths←⌽⚇1 Path¨<˘pd + graphs←{1¨⌾(𝕩⊸⊑) 0⥊˜1+⌽dim}¨paths + out←1↓⊏⟜repr{⊑⟜repri¨(𝕨×≠repr)+𝕩}´Draw¨graphs + {y‿x𝕊ti: out (ti⊑toks)‿x⊸T⌾(y⊸⊏)↩}´˘⍉tp≍ti # place tokens + out =⟜'╷'◶⊢‿'│'¨⌾⊏↩ # fix first row to look better + <˘∾(∾" "‿src‿" ")‿out +} -- cgit v1.2.3 From fb0e65434f9e20a80a40ceb5088aea69404480f3 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 14 Jun 2022 22:06:14 -0400 Subject: Don't allow list destructuring with aliases in bqn.js and vm.bqn --- docs/bqn.js | 2 ++ test/cases/namespace.bqn | 1 + vm.bqn | 5 ++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/bqn.js b/docs/bqn.js index 2ea49108..879859a6 100644 --- a/docs/bqn.js +++ b/docs/bqn.js @@ -75,6 +75,8 @@ let set = (d, id, v) => { let cs=v.sh.slice(1); let c=cs.reduce((a,b)=>a*b,1); let cell = j => arr(v.slice(c*j,c*j+c),cs,v.fill); id.map((n,j)=>set(d,n,cell(j))); + } else if (id.m) { + throw Error("← or ↩: Can't use alias in list destructuring"); } else { if (v.sh) { if (!eq(id.sh,v.sh)) throw Error("← or ↩: Target and value shapes don't match"); diff --git a/test/cases/namespace.bqn b/test/cases/namespace.bqn index d4397fed..421c2e3f 100644 --- a/test/cases/namespace.bqn +++ b/test/cases/namespace.bqn @@ -21,6 +21,7 @@ 2 % b←{a⇐𝕩}2⋄⟨b⇐a⟩↩b⋄b 6 % (d⇐b)‿a←{b⇐1+a⇐𝕩}2⋄a×d ! % a2←0⋄⟨a2⇐a⟩+↩{a⇐1} +! % ⟨b⇐c,d⟩←1‿2 # Namespaces 2 % ns←{a⇐2,b⇐3} ⋄ ⟨a⟩←ns ⋄ a diff --git a/vm.bqn b/vm.bqn index f00f7fb9..b133cbf7 100644 --- a/vm.bqn +++ b/vm.bqn @@ -35,13 +35,15 @@ ref ← { Get ⇐ {𝕩.Get@}¨ arr˙ # Common code for all setter functions # 𝕨S𝕩 sets reference 𝕨 to 𝕩, and e indicates error handling + al ← ∨´ {⟨al⟩:al;0}¨ arr _set_ ← {S _𝕣_ e: Err ← {(e∾": "∾𝕩)!e≡@ ⋄ ⟨1⟩} # e≡@ indicates SetQ, which can't error c ← (e≡@) ⊑ {𝔽}‿{𝔽⎊1} # GetF or Get in F can error # Get field for reference 𝕨 from namespace, if possible F ← {⟨G⇐GetF⟩𝕊𝕩:(G𝕩).Get@ ; !Err"Cannot extract non-name from namespace"} { - 0=•Type𝕩 ? arr ≡○≢◶⟨Err∘"Target and value shapes don't match", S¨⟩ 𝕩 ; + 0=•Type𝕩 ? Err⍟al "Can't use alias in list destructuring" + arr ≡○≢◶⟨Err∘"Target and value shapes don't match", S¨⟩ 𝕩 ; 6=•Type𝕩 ? (⊢ S F⟜𝕩)_c¨ arr ; Err "Multiple targets but atomic value" } @@ -64,6 +66,7 @@ ref ← { Alias ⇐ {env‿name 𝕊 r: SetN‿SetU‿SetQ ⇐ r GetF ⇐ {env.program 𝕩.Field name} + al ⇐ 1 } # Destructuring placeholder · not ⇐ { SetU⇐SetN⇐⊢ ⋄ SetQ⇐0˙ } -- cgit v1.2.3 From 9b5c6783a95dc0a0048e93e6f610beaa20932191 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 14 Jun 2022 22:13:43 -0400 Subject: =?UTF-8?q?Use=20[]=20instead=20of=20>=E2=9F=A8=E2=9F=A9=20in=20a?= =?UTF-8?q?=20few=20places?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/arithmetic.md | 2 +- doc/arrayrepr.md | 2 +- doc/map.md | 2 +- doc/order.md | 6 +++--- doc/rank.md | 2 +- doc/types.md | 2 +- docs/doc/arithmetic.html | 2 +- docs/doc/arrayrepr.html | 4 ++-- docs/doc/map.html | 2 +- docs/doc/order.html | 2 +- docs/doc/rank.html | 2 +- examples/fifty.bqn | 4 ++-- md.bqn | 4 ++-- 13 files changed, 18 insertions(+), 18 deletions(-) diff --git a/doc/arithmetic.md b/doc/arithmetic.md index 86338bca..c3e17bf8 100644 --- a/doc/arithmetic.md +++ b/doc/arithmetic.md @@ -179,7 +179,7 @@ With two arguments many combinations are possible. Arrays of equal shape are mat Arrays with different ranks can also be paired: they are matched by [leading axis agreement](leading.md#leading-axis-agreement). This means that one shape must be a prefix of the other, and elements of the lower-rank array are repeated to match up with cells of the higher-rank one. - 1‿2‿3 ⋆ >⟨0‿1,2‿4,3‿6⟩ + 1‿2‿3 ⋆ [0‿1,2‿4,3‿6] This convention matches up with the way array nesting is handled: first, the leading "outer" axes are looped over, then later ones. diff --git a/doc/arrayrepr.md b/doc/arrayrepr.md index 9ea4aa57..e4f93948 100644 --- a/doc/arrayrepr.md +++ b/doc/arrayrepr.md @@ -153,6 +153,6 @@ BQN has literal notation for lists only right now. To get an array with rank oth ∘‿2 ⥊ ⟨2,3, 4,1, 0,5⟩ - > ⟨2‿3, 4‿1, 0‿5⟩ + [2‿3, 4‿1, 0‿5] The characters `[]` are reserved to potentially combine list notation with merging, allowing the above to be written `[2‿3, 4‿1, 0‿5]`. This would allow non-empty arrays with rank one or more to be written without a primitive, but not rank 0 or empty arrays. Since creating arrays in general would still require primitives like `<` or `⥊`, it's not clear whether this notation is worth it. General array notation is a surprisingly complicated topic; see the article about it [on the APL Wiki](https://aplwiki.com/wiki/Array_notation). diff --git a/doc/map.md b/doc/map.md index bbde53d0..3ec1b6ce 100644 --- a/doc/map.md +++ b/doc/map.md @@ -154,7 +154,7 @@ If the argument lengths don't match then Each gives an error. This differs from Arguments can have any shape as long as the axis lengths match up. As with Table, the result elements don't depend on these shapes but the result shape does. - (>⟨20‿30‿10,50‿40‿60⟩) +⟜↕¨ 2‿1‿0≍3‿2‿1 + [20‿30‿10,50‿40‿60] +⟜↕¨ 2‿1‿0≍3‿2‿1 But arguments don't have to have exactly the same shape: just the same length along corresponding axes. These axes are matched up by [leading axis agreement](leading.md#leading-axis-agreement), so that one argument's shape has to be a prefix of the other's. With equal ranks, the shapes do have to match as we've seen above. diff --git a/doc/order.md b/doc/order.md index 3cd25b71..4adbc0f1 100644 --- a/doc/order.md +++ b/doc/order.md @@ -54,7 +54,7 @@ tp ← ⍉ tx ⋈⌜ y ((∾˜d)×((-∾+˜)pad)+sh∾dim) SVG g Ge ⟨ "rect" Elt rc ∾ sh Rp dim Paths ≍⟜(¯1↓y)¨(wv⊏tx)⋈¨tx - mg Ge (3⥊"String"⋈⊑ci) Gec tp Text¨ >⟨xt,wt,wv⊏xt⟩ + mg Ge (3⥊"String"⋈⊑ci) Gec tp Text¨ [xt,wt,wv⊏xt] ig Ge ("class="∾⊑ci) Ge (-⟜0‿0.33¨ Text¨ (FmtNum ↕≠xt)˙) ⊏tp cg Ge (¯0.8≍¨y) Text⟜Highlight¨ "𝕩"‿"⍋𝕩"‿"∧𝕩" ⟩ @@ -84,7 +84,7 @@ tp ← ⍉ tx ⋈⌜ y ((∾˜d)×((-∾+˜)pad)+sh∾dim) SVG g Ge ⟨ "rect" Elt rc ∾ sh Rp dim Paths (⋈¨⟜tx˘(≍⟜⍋wv)⊏tx) ≍¨⟜<˘ 2↕y - mg Ge ("String"<⊸∾ci) Gec tp Text¨ >⟨xt,wt,FmtNum⍋wv⟩ + mg Ge ("String"<⊸∾ci) Gec tp Text¨ [xt,wt,FmtNum⍋wv] ig Ge (3⥊ci) Gec (-⟜(⋈⟜0.33¨0.035×↕≠xt) Text¨ (FmtNum ↕≠xt)˙)˘ tp cg Ge (¯0.8≍¨y) Text⟜Highlight¨ "𝕩"‿"⍋𝕩"‿"⍋⍋𝕩" ⟩ @@ -105,7 +105,7 @@ The fact that Grade Up inverts a permutation is useful in itself. Note that this When sorting an array, we usually don't care how matching cells are ordered relative to each other (although as mentioned above it's possible to detect it by using fill elements carefully. They maintain their ordering). Grading is a different matter, because often the grade of one array is used to order another one. - ⊢ t ← >⟨ "dog"‿4, "ant"‿6, "pigeon"‿2, "pig"‿4 ⟩ + ⊢ t ← [ "dog"‿4, "ant"‿6, "pigeon"‿2, "pig"‿4 ] 1 ⊏˘ t diff --git a/doc/rank.md b/doc/rank.md index 7c1e2912..594156ce 100644 --- a/doc/rank.md +++ b/doc/rank.md @@ -170,7 +170,7 @@ The Rank modifier also accepts a list of one to three numbers for `𝕘`, as wel As an example, we'll define the matrix-vector product. A matrix is a rank-2 array and a vector is a list, and their product is a list. It's made up of the elements `+´ row × vec` for each row `row` of the matrix. To define this using Rank, we'll change `+´` to `+˝` to get a unit out, and we need to map over the rows of the left argument but not of the right one. Following the rules above, there are several ways to do this, including `+˝∘×⎉1`, `+˝∘×⎉¯1‿1`, and `+˝∘×⎉¯1‿∞`. Note that `⎉¯1` wouldn't work, because the ¯1 is interpreted separately for both arguments—it's equivalent to 1 matrix but 0 for the vector, or `⎉1‿0` overall. for the When correctly defined we can see that multiplication by the matrix `m` below negates the first element of a list, and also swaps it with the second. - ⊢ m ← >⟨0‿1‿0,¯1‿0‿0,0‿0‿1⟩ + ⊢ m ← [0‿1‿0, ¯1‿0‿0, 0‿0‿1] +˝ 0‿1‿0 × 1‿2‿3 diff --git a/doc/types.md b/doc/types.md index 0e1a97ca..dc246f26 100644 --- a/doc/types.md +++ b/doc/types.md @@ -35,7 +35,7 @@ Round ← { or← 0< v +´∘×⟜(⌽-⌾⊑)¨ 1⌽v "Z"∾˜ 'M'⌾⊑ ∾ ⥊ (('L'∾Fmt)¨ v+𝕩) ≍˘ or ('A'∾·Fmt(𝕨‿𝕨∾0‿0)∾∾)¨ (1⌽-v)+𝕩 } -a ← "path" Elt >⟨"d"‿(12 Round d1⊸ר ⥊ ((⊢≍˘1⊸⌽) 0‿2.6‿4) ≍¨ ↕3),¯1⊑cl⟩ +a ← "path" Elt ["d"‿(12 Round d1⊸ר ⥊ ((⊢≍˘1⊸⌽) 0‿2.6‿4) ≍¨ ↕3), ¯1⊑cl] FS ← {𝕩 Enc˜ "g"Attr⟨"font-size",(Fmt𝕨)∾"px"⟩} ((0‿2-p)∾dim) SVG ⟨ diff --git a/docs/doc/arithmetic.html b/docs/doc/arithmetic.html index 0ae6824c..46831cad 100644 --- a/docs/doc/arithmetic.html +++ b/docs/doc/arithmetic.html @@ -302,7 +302,7 @@ ┘

Arrays with different ranks can also be paired: they are matched by leading axis agreement. This means that one shape must be a prefix of the other, and elements of the lower-rank array are repeated to match up with cells of the higher-rank one.

-↗️
    123  >01,24,36
+↗️
    123  [01,24,36]
 ┌─        
 ╵  1   1  
    4  16  
diff --git a/docs/doc/arrayrepr.html b/docs/doc/arrayrepr.html
index ce74c543..6009a771 100644
--- a/docs/doc/arrayrepr.html
+++ b/docs/doc/arrayrepr.html
@@ -215,14 +215,14 @@
 

Fortunately, I find that after a reasonable period of adjustment typing ligatures instead of spaces doesn't feel strange, and reading code is improved overall by the more explicit notation. A minor note is that lists of literal numbers, where APL-style stranding is best, tend to show up more in the snippets that beginners write to test out the language than in programs even in the tens of lines. So this issue sticks out in first experiences with BQN, but will come up less later on.

Array notation?

BQN has literal notation for lists only right now. To get an array with rank other than 1, either reshape a list, or merge a list of arrays:

-↗️
    2  2,3, 4,1, 0,5
+↗️
    2  2,3, 4,1, 0,5
 ┌─     
 ╵ 2 3  
   4 1  
   0 5  
       ┘
 
-    > 23, 41, 05
+    [23, 41, 05]
 ┌─     
 ╵ 2 3  
   4 1  
diff --git a/docs/doc/map.html b/docs/doc/map.html
index 396b0a48..e91b4689 100644
--- a/docs/doc/map.html
+++ b/docs/doc/map.html
@@ -222,7 +222,7 @@
 Error: Mapping: Expected equal shape prefix (⟨3⟩ ≡ ≢𝕨, ⟨5⟩ ≡ ≢𝕩)
 

Arguments can have any shape as long as the axis lengths match up. As with Table, the result elements don't depend on these shapes but the result shape does.

-↗️
    (>203010,504060) +¨ 210321
+↗️
    [203010,504060] +¨ 210321
 ┌─                               
 ╵ ⟨ 20 21 ⟩    ⟨ 30 ⟩    ⟨⟩      
   ⟨ 50 51 52 ⟩ ⟨ 40 41 ⟩ ⟨ 60 ⟩  
diff --git a/docs/doc/order.html b/docs/doc/order.html
index a75c2600..af62ea0a 100644
--- a/docs/doc/order.html
+++ b/docs/doc/order.html
@@ -156,7 +156,7 @@
 

The fact that Grade Up inverts a permutation is useful in itself. Note that this applies to Grade Up specifically, and not Grade Down. This is because the identity permutation is ordered in ascending order. Grade Down would invert the reverse of a permutation, which is unlikely to be useful. So the ordinals idiom that goes in the opposite direction is actually not ⍒⍒ but ⍋⍒. The initial grade is different, but the way to invert it is the same.

Stability

When sorting an array, we usually don't care how matching cells are ordered relative to each other (although as mentioned above it's possible to detect it by using fill elements carefully. They maintain their ordering). Grading is a different matter, because often the grade of one array is used to order another one.

-↗️
     t  > "dog"4, "ant"6, "pigeon"2, "pig"4 
+↗️
     t  [ "dog"4, "ant"6, "pigeon"2, "pig"4 ]
 ┌─            
 ╵ "dog"    4  
   "ant"    6  
diff --git a/docs/doc/rank.html b/docs/doc/rank.html
index 23a5630e..8cf63ad2 100644
--- a/docs/doc/rank.html
+++ b/docs/doc/rank.html
@@ -244,7 +244,7 @@
 
  • Two numbers indicate the ranks for 𝕨 and 𝕩.
  • As an example, we'll define the matrix-vector product. A matrix is a rank-2 array and a vector is a list, and their product is a list. It's made up of the elements +´ row × vec for each row row of the matrix. To define this using Rank, we'll change +´ to +˝ to get a unit out, and we need to map over the rows of the left argument but not of the right one. Following the rules above, there are several ways to do this, including +˝×1, +˝×¯11, and +˝×¯1. Note that ¯1 wouldn't work, because the ¯1 is interpreted separately for both arguments—it's equivalent to 1 matrix but 0 for the vector, or 10 overall. for the When correctly defined we can see that multiplication by the matrix m below negates the first element of a list, and also swaps it with the second.

    -↗️
         m  >010,¯100,001
    +↗️
         m  [010, ¯100, 001]
     ┌─        
     ╵  0 1 0  
       ¯1 0 0  
    diff --git a/examples/fifty.bqn b/examples/fifty.bqn
    index c991aae9..fb336dfe 100644
    --- a/examples/fifty.bqn
    +++ b/examples/fifty.bqn
    @@ -55,7 +55,7 @@ _quicksort ← {Cmp←𝔽 ⋄ S←{p←𝕩Cmp˜𝕩⊏˜Rand≠𝕩 ⋄ ∾1
     
     # 8
     PascalsTriangle ← {>𝕩↑¨0(∾+∾˜)⍟(↕𝕩)⥊1}
    -! (>⟨1‿0‿0‿0⋄1‿1‿0‿0⋄1‿2‿1‿0⋄1‿3‿3‿1⟩) ≡ PascalsTriangle 4
    +! [1‿0‿0‿0⋄1‿1‿0‿0⋄1‿2‿1‿0⋄1‿3‿3‿1] ≡ PascalsTriangle 4
     ! 1‿1‿2‿3‿5‿8‿13‿21‿34‿55 ≡ { 𝕩 ↑ +´¨ (+⌜˜↕𝕩) ⊔○⥊ PascalsTriangle 𝕩 } 10
     
     # 9
    @@ -68,7 +68,7 @@ NewtonsMethod ← (2 ÷˜ ⊢ + ÷)´¨∘(1↓↑) ⥊
     
     # 11
     InnerProduct ← +˝∘×⎉1‿2
    -! (>⟨2‿3⋄4‿1⟩) ≡ (>⟨1‿0⋄¯1‿1⟩) InnerProduct >⟨2‿3⋄6‿4⟩
    +! [2‿3⋄4‿1] ≡ [1‿0⋄¯1‿1] InnerProduct [2‿3⋄6‿4]
     
     # 12
     CayleysTheorem ← {R←⥊⊐⊢ ⋄ (R𝕩) ≡ R ⊏˜⌜˜ <˘R𝕩}
    diff --git a/md.bqn b/md.bqn
    index f3393d8d..b74de6c2 100644
    --- a/md.bqn
    +++ b/md.bqn
    @@ -320,7 +320,7 @@ Markdown ← {filename𝕊𝕩:
       }⟜JoinLines
       ProcHtmlBlock ← extensions◶JoinLines‿(<⟜2◶ProcComment‿ProcHtml)
     
    -  lineChars‿lineClas‿procFns ← <˘⍉>⟨
    +  [lineChars,lineClas,procFns] ← ⍉[
         ""    ‿ (!∘0)       ‿ ProcParagraph
         "#"   ‿ LenHeading  ‿ ProcHeading
         ""    ‿ 0           ‿ ProcCode
    @@ -328,7 +328,7 @@ Markdown ← {filename𝕊𝕩:
         "-+*" ‿ LenBullet   ‿ ProcBullet
       # •d    ‿ LenListNum  ‿ ProcListNum
         "<"   ‿ IsHtmlBlock ‿ ProcHtmlBlock
    -  ⟩
    +  ]
     
       ######
       # Inline elements
    -- 
    cgit v1.2.3
    
    
    From 3e541fb767357ab01c85abddb01cb91c95ba01e6 Mon Sep 17 00:00:00 2001
    From: Marshall Lochbaum 
    Date: Thu, 16 Jun 2022 04:55:25 -0400
    Subject: =?UTF-8?q?Prevent=20aliases=20from=20being=20used=20except=20at?=
     =?UTF-8?q?=20the=20top=20level=20of=20a=20=E2=9F=A8=E2=9F=A9=20list?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    ---
     commentary/stability.md        | 1 +
     docs/commentary/stability.html | 1 +
     src/c.bqn                      | 1 +
     test/cases/namespace.bqn       | 3 ++-
     4 files changed, 5 insertions(+), 1 deletion(-)
    
    diff --git a/commentary/stability.md b/commentary/stability.md
    index 548dc7c5..3dfefe47 100644
    --- a/commentary/stability.md
    +++ b/commentary/stability.md
    @@ -9,5 +9,6 @@ I have thousands of lines of running BQN code including the self-hosted sources,
     Various edge cases were fixed when I first ran the primitive specifications through unit tests(!) in February 2021. Since then there have been two compatibility breaks, that is, changes from one intentional (i.e. excluding bugs) non-error behavior to a different behavior.
     - 2021-08-07: Pick (`⊑`) of empty array and Reshape (`⥊`) of empty array to non-empty changed from using fill elements to errors.
     - 2022-05-03: Don't always preserve fill of `𝕩` in structural Under, such as `arr⌾⊢ 
     
  • 2021-08-07: Pick () of empty array and Reshape () of empty array to non-empty changed from using fill elements to errors.
  • 2022-05-03: Don't always preserve fill of 𝕩 in structural Under, such as arr <fill to set fill element (was unspecified but intentionally implemented).
  • +
  • 2022-06-16: Don't allow aliases within strands (against syntax spec but intentional).
  • System functions change more frequently. Some system functions are considered stable and others experimental. At the time of writing, the following seems to hold: system functions that are included in two out of three among the specification, JS REPL, and CBQN are stable. Others may or may not be stable; please ask about these on the forums (or by another channel) if you want to rely on them. Stable system functions are still much more likely to change than syntax or primitives. However, before making a change we'll try to find if there's code that relies on them and notify the owner. As this procedure doesn't scale well, if a system function reaches widespread use we'll be unwilling to change it without a strong reason.

    diff --git a/src/c.bqn b/src/c.bqn index 316617e5..70dac605 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -274,6 +274,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn "Can't nest assignments (write aliases with ⇐)"_err_(ai⊏G) ((5≠ai⊏gac)∧ak=2)aa af>↩alm←ai⊏aa⋄al←alm/ai # aliases al + "Aliases can only appear in ⟨⟩ bracketed lists"_err_(al⊏G) ¬al⊏(fo∨𝕩=⊑bB)<○IT lo ai/˜↩af⋄at/˜↩af∾1¨hj # Lexical resolution (independent of parsing part 2 below) diff --git a/test/cases/namespace.bqn b/test/cases/namespace.bqn index 421c2e3f..ad0974a8 100644 --- a/test/cases/namespace.bqn +++ b/test/cases/namespace.bqn @@ -19,7 +19,8 @@ ! % ⟨a⇐c⟩←{a⇐5}⋄a ! % ⟨c⇐a⟩←{a⇐5}⋄a 2 % b←{a⇐𝕩}2⋄⟨b⇐a⟩↩b⋄b -6 % (d⇐b)‿a←{b⇐1+a⇐𝕩}2⋄a×d +! % (d⇐b)‿a←{b⇐1+a⇐𝕩}2⋄a×d +6 % ⟨d⇐b,a⟩←{b⇐1+a⇐𝕩}2⋄a×d ! % a2←0⋄⟨a2⇐a⟩+↩{a⇐1} ! % ⟨b⇐c,d⟩←1‿2 -- cgit v1.2.3 From b5eecc8e7d7aa2975dc48cd734530306770fc13a Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Thu, 16 Jun 2022 13:38:06 -0400 Subject: Allow zero-length destructuring [] --- docs/bqn.js | 6 +++--- docs/spec/grammar.html | 2 +- spec/grammar.md | 2 +- src/c.bqn | 3 ++- test/cases/header.bqn | 1 + 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/bqn.js b/docs/bqn.js index 879859a6..ceff315f 100644 --- a/docs/bqn.js +++ b/docs/bqn.js @@ -475,10 +475,10 @@ let glyph = x => { // Compiler runtime[43] = assertFn("Compiler"); let compgen_raw = run( - [1,1,7,34,0,1,33,0,3,33,0,4,33,0,5,12,3,48,6,0,59,0,60,11,2,0,0,0,92,17,33,0,6,48,6,34,0,3,32,0,4,34,0,5,32,0,6,0,22,0,98,17,0,99,0,100,0,101,0,102,0,103,0,104,0,21,0,62,0,51,11,2,17,0,45,0,35,26,0,61,17,0,105,0,59,0,27,16,0,0,0,93,17,0,63,33,0,7,48,0,27,16,0,47,0,0,26,0,107,17,0,21,16,0,44,0,22,26,0,106,17,0,64,0,0,0,92,17,0,22,0,110,17,0,22,0,109,0,26,0,61,17,17,0,22,0,108,17,0,111,11,15,0,46,0,13,26,0,24,0,22,21,16,33,0,8,33,0,9,12,2,48,6,32,0,9,0,50,0,0,26,0,29,0,65,21,0,54,0,44,0,46,0,24,26,26,27,16,33,0,10,33,0,11,33,0,12,33,0,13,33,0,14,33,0,15,33,0,16,33,0,17,33,0,18,33,0,19,33,0,20,33,0,21,33,0,22,33,0,23,33,0,24,12,15,48,6,0,36,0,54,0,1,27,0,12,0,9,0,15,0,53,0,65,27,21,0,36,0,53,0,66,27,21,33,0,25,48,6,32,0,13,0,36,16,33,0,26,48,6,32,0,14,0,36,16,0,0,0,67,17,33,0,27,48,6,0,68,0,1,0,54,0,24,27,16,0,0,32,0,19,17,33,0,28,48,6,32,0,19,0,36,16,0,0,0,69,17,33,0,29,48,6,0,13,0,11,0,66,21,0,44,0,32,26,0,112,21,0,54,0,22,27,33,0,30,48,6,1,2,33,0,31,48,6,1,3,32,0,8,26,33,0,32,48,6,0,116,0,32,0,53,34,0,4,0,54,0,39,27,27,16,32,0,32,16,33,0,33,48,6,32,0,20,0,36,16,33,0,34,48,0,0,0,66,17,33,0,35,48,6,0,66,0,67,0,71,0,61,0,61,0,72,0,61,0,65,11,2,0,73,0,65,0,68,0,74,11,2,0,32,16,0,8,16,11,10,0,43,34,0,9,26,0,25,0,13,21,0,54,0,44,0,46,0,21,26,26,27,16,0,22,16,0,44,0,22,26,0,70,17,33,0,36,48,6,0,2,0,50,0,6,26,20,33,0,37,48,6,32,0,37,0,53,0,13,0,51,0,27,27,27,33,0,38,48,6,32,0,37,0,53,0,13,0,51,0,27,27,0,0,0,66,21,27,33,0,39,48,6,0,19,0,32,0,10,21,0,44,0,22,26,0,32,0,22,21,0,66,21,33,0,40,48,6,1,4,33,0,41,48,6,1,5,33,0,42,48,6,1,6,33,0,43,48,6,1,7,33,0,44,48,7,34,0,1,0,11,16,0,46,1,8,26,34,0,4,17,0,22,16,7,32,1,31,32,1,30,0,53,0,113,27,0,114,0,20,11,3,26,0,42,20,33,0,2,48,6,32,0,1,0,54,0,35,27,0,54,0,18,0,58,0,19,0,32,0,13,21,0,51,34,0,2,27,27,27,0,19,0,20,21,33,0,3,48,6,32,0,1,0,35,34,0,1,0,33,16,33,0,4,48,17,33,0,5,48,0,26,0,53,0,1,27,0,14,0,26,21,0,66,17,0,49,0,10,26,0,58,0,22,0,53,0,65,27,0,44,0,32,26,32,0,5,21,0,22,0,115,21,0,42,20,27,16,6,0,20,0,33,34,0,5,21,0,6,0,66,21,0,44,0,1,26,0,66,21,0,44,0,35,26,34,0,4,21,34,0,3,0,20,21,7,34,0,2,33,0,3,33,0,4,12,2,48,6,0,94,0,14,32,0,1,17,33,0,5,48,6,0,95,0,14,32,0,1,17,33,0,6,48,0,9,0,53,0,28,0,53,0,65,0,65,11,2,27,27,16,0,32,16,33,0,7,48,6,0,96,0,14,32,0,1,17,33,0,8,48,0,32,16,33,0,9,48,6,32,0,7,32,0,9,0,26,0,61,17,32,0,5,0,32,16,11,3,0,22,16,33,0,10,48,0,33,16,33,0,11,48,6,32,0,10,0,35,32,0,11,17,33,0,10,49,6,34,0,7,0,0,0,67,17,34,0,9,0,26,0,66,17,0,66,0,22,32,1,6,0,39,32,0,1,17,17,0,32,16,0,32,0,53,32,0,5,0,50,0,0,26,16,0,22,0,65,17,0,54,0,35,0,51,0,29,0,54,0,1,27,27,27,27,16,11,3,0,22,16,0,35,34,0,11,17,33,0,12,48,6,0,20,0,36,0,61,21,0,14,0,65,21,0,58,1,9,27,33,0,13,48,6,0,32,0,53,32,0,12,0,33,32,0,10,17,0,46,0,65,26,0,22,0,66,21,32,0,13,0,13,0,54,0,22,27,21,0,25,0,13,21,16,27,0,48,0,32,26,20,0,25,32,0,1,0,13,16,21,33,0,14,48,6,34,0,10,32,0,14,16,33,0,15,48,6,34,0,12,34,0,14,16,33,0,16,48,6,32,0,16,0,10,32,0,15,17,33,0,17,48,0,50,0,13,26,0,66,17,33,0,18,48,6,32,0,18,0,11,34,0,16,17,0,9,32,0,8,0,10,32,0,6,17,17,0,49,0,10,26,0,58,1,10,27,16,6,0,97,0,14,32,0,1,17,0,9,32,0,18,17,33,0,19,48,6,34,0,6,0,9,32,0,15,17,0,29,16,0,10,32,0,19,17,0,32,16,33,0,20,48,6,32,0,20,34,0,19,0,54,0,35,27,0,2,0,92,0,1,0,97,17,21,0,1,32,0,1,0,54,0,35,27,21,16,33,0,21,48,6,32,0,8,0,9,33,0,15,50,0,28,16,0,9,32,0,8,17,33,0,22,48,0,12,33,0,18,50,6,34,0,17,0,9,34,0,8,17,0,50,0,13,26,16,0,11,0,66,0,54,0,22,27,0,52,0,2,0,53,0,50,0,0,26,27,27,0,19,21,34,0,22,0,29,16,0,12,34,0,15,17,33,0,23,48,17,0,44,0,1,26,0,66,17,0,44,0,41,26,32,0,1,17,33,0,24,48,6,32,0,18,0,32,16,33,0,25,48,6,32,0,18,0,29,0,66,17,0,32,16,0,25,0,53,0,13,27,32,0,25,17,33,0,26,48,6,32,0,25,34,0,5,0,54,0,35,27,0,2,0,1,21,32,0,26,17,0,1,33,0,26,50,6,34,0,1,0,35,32,0,25,17,32,1,32,16,33,0,27,48,6,32,1,21,32,1,25,32,0,27,17,0,28,16,0,12,32,1,20,0,36,16,0,14,32,0,27,17,17,33,0,28,48,6,32,1,29,0,14,32,0,27,17,33,0,29,48,6,32,1,23,0,36,0,52,0,44,0,1,26,0,24,0,19,21,27,32,1,20,17,32,1,25,32,0,27,17,0,11,34,0,28,17,0,10,32,0,29,17,33,0,30,48,0,11,0,53,0,29,27,16,33,0,31,48,6,32,1,22,0,49,0,0,26,16,0,0,0,61,17,0,14,32,0,27,17,33,0,32,48,6,32,1,23,0,36,16,0,14,32,0,27,17,33,0,33,48,6,32,0,32,0,12,32,0,30,17,0,19,0,32,0,10,21,0,28,0,32,0,20,21,0,66,21,0,11,0,32,21,32,0,31,17,0,49,0,10,26,0,58,1,11,27,16,6,32,0,27,0,32,32,0,31,17,0,44,0,1,26,32,1,22,0,36,16,17,0,44,0,3,0,51,0,5,27,26,32,1,7,17,0,2,32,0,29,0,32,32,0,31,17,0,8,16,17,33,0,34,48,6,32,1,22,0,36,16,0,0,32,1,7,17,0,16,32,0,27,17,0,9,32,0,30,17,0,2,32,1,7,17,0,1,33,0,27,50,6,32,0,30,0,28,16,0,12,32,0,33,17,0,49,0,10,26,0,58,1,12,27,16,6,32,0,33,0,10,0,53,0,29,27,16,0,13,33,0,31,50,6,34,0,33,0,32,32,0,31,17,0,20,0,0,0,8,0,54,0,2,27,21,0,65,0,16,32,0,34,17,0,2,0,67,17,17,33,0,35,48,0,11,0,65,17,33,0,36,48,6,32,0,36,0,8,16,0,22,0,65,17,0,35,32,0,31,0,50,0,0,26,16,17,0,9,32,0,30,17,33,0,37,48,0,12,32,0,30,17,33,0,38,48,6,32,0,30,0,2,32,0,27,17,0,22,0,53,0,65,27,0,32,32,0,37,0,22,0,65,17,0,28,0,54,0,10,27,16,0,11,32,0,32,0,22,0,65,17,17,21,0,52,32,1,42,27,32,0,26,17,33,0,39,48,6,34,0,34,0,32,32,0,36,17,0,14,0,53,0,67,27,0,54,0,9,27,0,0,0,20,21,32,0,38,0,11,0,53,0,28,27,16,0,44,0,32,26,32,0,32,17,17,33,0,40,48,6,32,0,37,0,12,32,0,31,17,0,50,0,0,26,16,0,2,32,0,32,0,12,32,0,38,17,17,33,0,41,48,0,11,0,53,0,50,0,6,26,0,29,20,27,16,33,0,42,48,6,32,0,29,0,32,32,0,42,17,0,11,32,0,35,0,32,34,0,36,17,0,14,0,66,17,17,33,0,43,48,6,32,0,31,33,0,44,48,0,9,34,0,37,17,0,10,32,0,42,17,33,0,31,49,6,32,0,29,0,32,32,0,31,17,0,8,16,0,44,0,32,26,33,0,35,50,0,32,0,53,0,11,0,53,0,65,27,27,16,0,14,0,66,17,33,0,45,48,6,32,0,43,0,22,0,65,17,0,35,32,0,41,17,0,11,0,53,32,0,42,27,0,10,0,13,0,53,32,0,29,27,21,16,0,9,32,0,32,0,12,34,0,38,17,17,0,49,0,10,26,0,58,1,13,27,16,6,34,0,42,0,11,32,0,29,17,0,32,16,32,0,27,0,54,0,35,27,0,12,32,1,22,0,36,16,21,0,11,32,0,45,21,0,54,0,20,0,49,0,10,26,20,0,58,1,14,27,27,16,6,34,0,43,0,8,16,0,2,0,53,0,50,0,0,26,27,16,0,22,0,65,17,0,44,0,1,26,0,66,17,0,35,33,0,41,50,6,32,1,8,0,35,32,0,27,17,0,41,34,0,41,17,0,41,0,67,0,22,34,0,45,17,17,0,36,0,55,0,22,0,53,32,0,4,27,27,16,33,0,46,48,6,34,0,18,0,29,16,0,50,0,0,26,16,0,35,34,0,23,0,32,16,0,22,34,0,20,17,17,0,22,34,0,29,0,12,32,0,31,17,0,32,16,0,35,0,53,0,34,27,34,0,35,17,17,33,0,47,48,6,34,0,39,34,0,21,34,0,24,11,3,0,22,34,0,46,17,33,0,48,48,6,32,0,48,0,46,0,37,26,16,33,0,49,48,0,44,0,46,0,32,0,53,0,50,0,6,26,0,29,0,61,21,0,12,0,20,21,27,26,26,33,0,48,50,6,32,0,48,0,36,0,53,0,66,27,0,55,34,0,3,27,16,33,0,48,49,6,32,1,23,32,1,25,32,0,27,17,0,10,32,0,30,17,0,8,16,33,0,50,48,6,34,0,44,0,10,32,0,50,17,0,44,0,32,26,33,0,26,50,6,34,0,30,0,28,0,54,0,12,27,16,0,10,32,0,50,17,0,44,0,32,26,33,0,25,50,6,32,0,27,0,35,0,53,34,0,47,27,0,55,32,0,48,0,46,0,13,26,16,33,0,51,48,0,29,32,1,35,17,0,50,0,0,26,16,0,0,34,0,49,17,0,22,16,0,26,0,53,0,13,27,34,0,4,17,27,16,0,32,34,0,50,0,10,32,0,31,17,17,33,0,27,49,6,32,1,13,0,36,0,54,0,1,27,0,2,32,1,25,21,32,0,27,17,0,1,33,0,27,50,6,32,1,26,0,14,32,0,27,17,0,44,0,22,26,0,13,0,22,21,0,66,17,0,32,16,0,26,0,66,17,0,26,0,61,17,33,0,52,48,0,46,0,66,26,16,0,50,0,13,26,16,33,0,53,48,6,32,1,16,0,36,16,0,0,0,71,0,68,0,75,11,3,17,33,0,54,48,6,32,0,27,0,35,32,0,53,0,1,32,0,52,17,17,0,0,0,53,32,0,53,27,0,44,0,39,26,34,0,54,21,0,10,32,1,14,0,54,32,1,25,27,21,16,0,28,0,54,0,10,27,16,0,12,34,0,53,17,0,44,0,32,26,34,0,52,17,33,0,55,48,6,32,1,26,0,13,32,0,27,17,0,35,0,53,34,0,55,27,0,55,0,46,0,66,26,27,16,0,44,1,15,26,33,0,27,50,6,34,0,51,0,25,0,67,17,0,49,0,0,26,16,0,24,32,1,35,17,32,1,25,32,0,27,17,0,10,32,1,29,0,14,32,0,27,17,17,33,0,56,48,6,0,65,0,22,32,1,36,17,0,35,32,0,27,0,5,32,1,35,17,17,0,32,0,53,34,0,56,27,0,55,34,0,40,27,16,33,0,57,48,6,32,0,27,0,15,0,53,0,0,0,53,0,71,27,27,0,0,0,68,21,0,2,0,68,0,54,0,24,27,32,1,25,0,20,21,21,32,1,19,0,36,16,17,0,0,33,0,27,50,6,32,0,27,0,14,0,2,0,59,21,0,0,0,11,21,32,1,34,17,0,1,33,0,27,50,6,34,0,27,34,0,57,34,0,48,32,0,26,32,0,25,11,5,7,1,16,33,0,3,48,6,32,1,31,32,1,30,0,53,0,122,27,0,123,32,1,8,0,54,0,35,27,0,124,11,4,26,33,0,4,48,6,32,1,20,0,49,0,27,0,54,0,0,27,26,16,0,22,0,125,0,49,0,1,26,16,0,0,32,1,22,0,36,16,17,17,0,46,32,0,1,0,54,0,14,27,26,16,33,0,5,33,0,6,33,0,7,33,0,8,33,0,9,12,5,48,6,32,1,22,0,36,16,0,11,32,0,1,17,0,10,32,0,5,17,0,8,16,0,10,32,1,29,0,14,32,0,1,17,17,32,0,2,32,0,3,32,0,1,0,54,0,32,27,0,51,34,0,4,27,27,16,6,32,0,1,0,14,0,65,17,33,0,10,48,0,10,32,0,5,17,33,0,11,48,0,10,32,0,6,17,33,0,12,48,6,32,0,11,0,10,32,0,7,17,0,8,16,33,0,13,48,6,32,0,11,0,29,16,0,12,32,0,7,17,32,0,2,32,0,3,0,126,27,16,6,32,0,12,0,10,32,0,7,17,0,9,32,0,12,0,28,0,66,17,17,32,0,2,32,0,3,0,127,27,16,6,32,0,1,0,32,32,0,12,17,0,11,0,53,0,29,27,0,10,0,14,0,53,0,65,27,21,16,0,8,16,32,0,2,0,32,34,0,12,21,32,0,3,0,128,27,16,6,32,0,5,0,29,16,0,12,32,0,7,17,0,10,32,0,10,17,0,28,0,10,34,0,5,0,28,16,0,9,32,0,8,17,21,0,9,0,29,21,0,66,17,0,12,32,0,9,0,10,34,0,8,17,17,34,0,2,34,0,3,0,129,27,16,6,32,0,13,0,9,0,53,0,8,32,1,39,0,52,0,12,27,32,1,21,0,36,16,0,13,32,0,1,17,0,11,32,0,6,17,21,0,15,0,28,21,27,16,33,0,14,48,0,9,0,53,0,50,0,0,26,32,1,37,0,1,0,20,21,0,8,21,0,16,0,76,21,27,16,33,0,15,48,6,32,1,20,0,36,16,0,0,0,66,17,0,1,34,0,1,17,0,2,32,0,15,17,0,32,32,0,6,0,8,16,17,0,44,0,35,26,0,59,0,27,16,0,22,0,77,0,66,11,2,17,0,22,0,61,17,17,33,0,16,48,6,32,0,16,0,50,0,0,0,53,0,59,0,54,0,2,27,27,0,2,0,15,0,53,0,65,27,21,26,0,65,17,0,32,34,0,16,0,15,0,65,17,0,28,0,54,0,12,27,16,17,33,0,17,48,6,34,0,7,0,29,16,0,32,34,0,13,0,29,0,54,0,12,27,16,33,0,18,48,17,0,44,0,35,26,0,66,0,61,11,2,17,0,2,33,0,17,50,6,34,0,10,0,32,34,0,11,17,33,0,19,48,6,34,0,14,0,28,0,54,0,12,27,0,32,20,0,52,0,1,0,53,34,0,6,0,28,16,32,1,39,16,0,54,0,35,27,27,0,20,0,2,0,11,21,0,1,0,53,0,29,27,21,0,1,0,1,21,27,34,0,15,17,0,32,32,0,19,17,33,0,20,48,6,32,0,19,0,8,16,0,2,32,0,17,17,0,28,16,0,32,32,0,19,17,0,44,0,1,26,34,0,20,17,33,0,21,48,0,7,16,0,4,0,59,17,33,0,22,48,6,0,66,0,78,11,2,0,35,34,0,9,0,32,34,0,18,17,17,0,2,34,0,17,17,0,32,34,0,19,17,0,32,0,53,32,0,21,0,11,0,65,17,27,0,55,0,2,27,32,0,22,17,0,32,0,53,34,0,21,0,12,0,65,17,27,0,55,0,44,0,3,26,27,34,0,22,17,7,34,0,2,33,0,3,33,0,4,33,0,5,33,0,6,33,0,7,12,5,48,6,34,0,4,0,13,16,33,0,8,48,6,1,17,33,0,9,48,6,1,18,33,0,10,48,6,32,0,1,0,13,16,0,11,0,65,17,0,42,0,131,17,6,32,1,16,32,1,25,32,0,1,17,0,2,32,0,3,0,2,0,67,17,0,1,0,61,17,17,33,0,11,48,0,50,0,0,26,16,33,0,12,48,0,33,16,33,0,13,48,6,0,61,0,14,32,0,3,17,0,35,32,0,13,17,33,0,14,48,6,32,0,1,0,35,32,0,13,17,33,0,15,48,0,32,0,53,0,65,0,54,0,11,27,27,0,44,0,1,26,0,66,21,0,17,0,32,0,53,0,65,0,54,0,12,27,27,21,32,0,11,0,35,32,0,13,17,17,0,8,0,58,32,0,1,0,51,34,0,9,27,27,16,6,34,0,12,0,36,32,0,13,0,36,16,17,0,12,0,65,17,32,0,13,0,25,0,66,21,32,0,10,0,132,27,16,6,32,0,15,0,32,32,0,14,17,33,0,16,48,0,14,0,53,32,1,26,27,0,10,0,14,0,53,32,1,27,27,21,0,9,0,53,0,29,27,0,14,0,53,32,1,16,0,36,16,27,21,16,32,0,13,0,32,32,0,14,21,32,0,10,0,133,27,16,6,0,14,0,53,0,67,0,54,0,0,27,27,0,10,0,14,21,33,0,17,48,6,32,0,16,0,32,0,53,0,13,0,53,32,1,26,27,27,16,0,14,0,53,32,1,27,27,0,9,0,53,0,29,27,32,0,17,0,53,32,1,16,0,36,16,0,0,0,70,17,27,21,16,32,0,13,0,32,32,0,14,21,0,32,34,0,16,0,13,32,1,26,21,21,32,0,10,0,134,27,16,6,34,0,14,0,22,0,66,17,0,9,0,53,0,28,0,53,0,66,27,27,16,1,19,16,6,0,70,0,14,32,0,3,17,33,0,18,48,0,10,0,53,0,28,27,16,33,0,19,48,6,32,0,11,0,0,32,0,3,17,0,15,0,65,17,0,11,32,0,18,17,0,28,16,33,0,20,48,0,12,32,1,15,0,36,16,0,14,32,0,1,17,17,0,1,33,0,3,50,6,32,0,3,0,15,0,65,17,0,11,32,0,18,17,0,29,16,0,9,32,1,15,0,36,16,0,0,0,67,17,0,14,32,0,1,17,0,10,34,0,20,17,17,0,12,32,0,3,0,73,0,54,0,15,27,0,9,0,11,0,53,0,80,27,21,16,17,0,13,0,27,20,32,0,10,0,136,27,16,6,32,1,27,0,14,32,0,1,17,0,9,32,0,3,0,14,0,80,17,0,29,16,17,0,13,0,27,20,32,0,10,0,137,27,16,6,32,1,34,32,0,8,11,2,32,1,25,32,0,1,17,0,28,16,0,12,32,0,18,17,0,13,0,27,20,32,0,10,0,138,27,16,6,0,73,0,14,32,0,3,17,0,10,0,53,0,28,27,16,33,0,21,48,0,35,0,53,32,0,13,0,35,0,53,32,0,19,0,54,0,35,27,0,33,20,27,16,27,0,55,0,29,27,16,33,0,22,48,6,32,0,22,0,10,32,0,21,17,0,8,16,33,0,23,48,6,32,1,16,0,36,16,0,0,0,66,17,0,14,32,0,1,17,33,0,24,48,6,32,1,18,0,36,16,0,14,32,0,1,17,0,2,0,67,17,0,0,32,1,28,0,36,16,0,0,0,67,17,0,14,32,0,1,17,17,0,35,32,0,24,0,8,16,32,1,38,16,17,33,0,25,48,6,0,65,33,0,26,48,6,32,0,25,0,13,16,0,27,16,33,0,27,48,6,1,20,33,0,28,48,6,32,0,19,0,10,32,0,21,17,33,0,29,48,0,35,32,0,13,17,0,33,16,0,44,0,35,26,33,0,13,50,6,32,0,3,0,13,16,0,27,16,0,35,0,53,32,0,13,27,0,55,0,29,0,53,0,13,27,27,16,33,0,30,48,6,0,61,0,14,32,0,3,17,0,10,34,0,29,17,0,35,32,0,13,17,0,22,0,66,17,0,0,0,53,0,50,0,0,26,27,16,0,33,16,0,44,0,35,26,0,8,0,33,0,54,0,44,0,35,26,27,21,0,35,0,53,0,33,27,0,19,21,32,0,13,0,22,0,61,17,17,0,26,0,61,17,0,50,0,0,26,16,0,33,16,33,0,31,48,6,32,1,16,0,36,16,0,0,0,67,17,0,67,11,2,32,1,25,32,0,1,17,0,2,32,0,11,17,0,35,32,0,31,17,33,0,32,48,0,50,0,0,26,16,33,0,33,48,0,33,16,33,0,34,48,6,32,0,34,0,44,0,35,26,33,0,31,50,6,32,0,34,0,44,0,35,26,33,0,33,50,6,32,0,34,0,44,0,35,26,33,0,32,50,6,32,0,31,0,44,0,35,26,33,0,1,50,6,32,0,31,0,44,0,35,26,33,0,18,50,6,32,0,31,0,44,0,35,26,33,0,5,50,6,32,0,31,0,44,0,35,26,33,0,6,50,6,32,0,11,0,35,32,0,31,17,0,44,0,1,26,32,0,32,17,33,0,11,49,0,50,0,0,26,16,0,33,16,33,0,13,49,6,34,0,11,0,35,32,0,13,17,0,12,32,0,13,0,54,0,32,27,0,52,0,24,27,0,11,21,0,65,17,33,0,35,48,6,32,0,18,0,10,0,53,0,28,27,16,0,35,32,0,13,17,0,33,16,0,44,0,35,26,33,0,13,50,6,32,0,31,0,35,32,0,13,17,33,0,36,48,6,32,0,21,0,1,32,0,22,17,0,35,32,0,36,17,0,12,0,32,0,52,0,1,27,0,11,21,0,65,17,0,44,0,3,26,0,67,17,0,0,0,66,17,33,0,37,48,6,32,1,16,0,36,16,0,0,0,68,17,0,44,32,0,17,26,32,0,1,17,0,35,32,0,13,17,0,32,16,33,0,38,48,6,0,65,0,12,32,0,32,17,33,0,39,48,6,0,65,0,11,34,0,32,17,0,32,16,33,0,40,48,6,32,0,39,0,32,16,32,0,40,11,2,0,46,0,22,26,33,0,35,50,6,32,0,21,0,35,32,0,36,17,0,33,16,33,0,41,48,0,44,0,35,26,33,0,13,50,6,32,0,31,0,35,32,0,13,17,33,0,36,49,6,32,0,13,0,33,16,33,0,42,48,6,32,1,14,0,36,16,0,14,32,0,1,17,33,0,43,48,6,32,1,14,0,36,16,0,0,0,66,17,0,14,32,0,1,17,33,0,44,48,6,32,1,27,0,14,32,0,1,17,33,0,45,48,6,32,0,45,0,10,32,0,44,17,0,10,32,0,43,17,0,11,32,0,39,0,50,0,10,26,16,17,0,13,0,27,20,32,0,10,0,139,27,16,6,32,0,44,0,10,32,0,39,17,33,0,46,48,0,50,0,0,26,16,33,0,47,48,6,0,20,32,1,40,0,51,0,8,27,32,0,46,21,33,0,48,48,6,32,0,43,32,0,48,16,33,0,49,48,0,10,34,0,45,32,0,48,16,17,33,0,50,48,6,32,0,44,0,32,32,0,46,17,33,0,51,48,0,8,16,0,22,0,66,17,33,0,52,48,6,32,0,51,0,28,0,54,0,10,27,16,0,22,0,65,17,33,0,53,48,6,32,0,50,0,26,0,9,32,0,51,21,0,11,0,26,0,53,0,1,27,21,0,66,17,32,0,46,0,32,20,32,0,10,0,140,27,16,6,32,0,50,0,26,0,61,17,0,12,32,0,51,17,0,9,0,53,0,29,27,16,32,0,46,0,32,20,32,0,10,0,141,27,16,6,34,0,44,0,32,16,0,22,32,0,40,17,0,35,34,0,51,0,28,16,0,33,16,0,33,16,17,33,0,54,48,6,32,0,43,0,10,32,0,46,17,0,35,0,53,32,0,13,0,30,16,27,0,55,32,1,38,0,54,0,44,0,35,26,27,27,34,0,43,17,33,0,55,48,0,32,16,33,0,56,48,6,32,0,1,0,35,32,0,56,17,0,37,0,1,0,19,0,51,0,13,27,21,32,1,33,17,33,0,57,48,0,14,0,65,17,33,0,58,48,6,32,0,57,0,14,0,53,0,67,27,0,9,32,0,58,0,29,0,66,17,21,0,10,0,16,0,53,0,29,27,21,16,0,11,32,0,58,17,32,0,56,32,0,10,0,142,27,16,6,32,0,57,0,29,16,0,32,34,0,58,17,33,0,59,48,6,34,0,57,0,14,0,65,17,0,44,0,32,26,33,0,56,50,6,32,0,56,0,44,0,35,26,32,0,31,17,32,0,3,0,54,0,35,27,0,2,32,0,23,0,54,0,35,27,21,16,33,0,60,48,6,32,0,60,0,14,0,61,17,33,0,61,48,0,28,0,0,0,29,0,53,0,66,27,21,16,33,0,62,48,0,14,0,67,17,33,0,63,48,6,32,0,55,0,35,32,0,56,0,32,32,0,61,17,0,0,0,66,17,17,32,0,56,0,32,32,0,61,21,32,0,10,0,143,27,16,6,32,0,60,0,15,0,67,17,33,0,64,48,0,11,32,0,63,17,0,20,0,9,0,71,0,14,32,0,60,17,21,0,28,20,0,10,0,29,21,16,33,0,65,48,6,34,0,64,0,10,32,0,61,17,0,9,32,0,65,17,0,10,0,71,0,14,32,0,60,17,0,9,32,0,59,17,17,32,0,56,32,0,10,0,144,27,16,6,34,0,62,0,14,0,66,17,0,9,32,0,60,0,14,0,65,17,17,0,11,32,0,65,17,33,0,66,48,0,10,32,0,65,17,0,8,16,33,0,67,48,6,32,0,61,0,32,32,0,67,17,0,14,0,53,0,29,0,53,0,66,27,27,16,32,0,56,0,32,32,0,67,21,32,0,10,0,145,27,16,6,32,0,22,0,35,32,0,31,17,0,8,16,0,2,32,0,1,17,0,35,32,0,56,17,33,0,68,48,0,33,32,0,8,0,22,32,1,28,17,0,50,0,0,26,16,17,0,44,0,1,26,0,66,17,0,7,0,71,17,33,0,69,48,6,32,0,69,0,13,0,66,17,0,9,32,0,60,0,14,0,65,17,17,0,9,32,0,63,17,33,0,70,48,0,12,32,0,67,17,33,0,71,48,6,32,0,70,0,0,33,0,60,50,6,32,0,70,0,12,33,0,63,50,6,32,0,60,0,5,0,67,17,0,44,0,1,26,0,66,17,0,2,0,71,17,0,2,32,0,71,17,0,0,32,0,60,0,14,0,71,17,0,28,16,0,0,0,70,17,0,2,32,0,65,17,17,0,0,32,0,61,0,28,16,0,0,0,66,17,0,2,32,0,66,17,0,0,34,0,70,17,17,33,0,72,48,6,32,1,28,0,36,16,0,0,32,0,72,17,0,13,34,0,68,17,0,9,32,0,69,0,14,0,65,17,17,32,0,56,32,0,10,0,146,27,16,6,32,0,60,0,14,0,65,17,0,9,32,0,63,17,0,10,32,0,61,17,0,8,16,0,2,33,0,69,50,6,32,0,61,0,12,33,0,67,50,6,32,0,67,0,44,0,32,26,33,0,60,50,6,32,0,66,0,32,32,0,61,0,29,0,66,17,17,33,0,73,48,6,34,0,65,0,2,32,0,59,17,0,29,0,54,0,1,27,16,0,1,33,0,59,50,6,32,0,59,0,2,16,0,11,32,0,67,17,32,0,56,32,0,10,0,142,27,16,6,0,65,0,22,32,0,73,17,0,35,0,53,0,50,0,0,26,27,32,0,61,17,0,12,32,0,66,17,32,0,56,32,0,10,0,147,27,16,6,0,67,0,13,32,0,69,17,0,12,34,0,71,17,32,0,56,32,0,10,0,148,27,16,6,32,0,67,0,44,0,32,26,33,0,59,50,6,32,0,60,0,14,0,66,17,0,10,33,0,73,50,6,32,0,59,0,2,16,0,11,32,0,73,17,32,0,56,0,32,32,0,67,21,32,0,10,0,149,27,16,6,32,0,69,0,13,0,65,17,33,0,74,48,0,0,0,66,17,0,2,34,0,66,17,0,6,32,0,63,17,0,29,16,0,32,32,0,61,17,33,0,75,48,6,32,0,59,0,14,0,67,17,33,0,76,48,0,9,32,0,75,0,14,0,65,17,17,32,0,56,32,0,10,0,150,27,16,6,32,0,52,0,28,0,11,0,20,21,0,66,17,0,11,32,0,50,0,29,16,17,0,28,0,54,0,1,27,16,0,0,0,66,17,0,32,0,53,32,0,49,27,0,55,34,0,76,0,2,0,67,17,0,6,34,0,75,17,27,16,33,0,77,48,6,34,0,67,0,44,0,32,26,33,0,63,50,6,32,0,55,0,35,0,53,32,0,56,27,0,55,32,0,74,0,8,16,27,16,33,0,78,48,6,32,0,56,0,32,32,0,74,17,0,44,0,35,26,32,0,42,17,33,0,79,48,6,32,0,69,0,32,32,0,74,17,0,14,0,67,17,33,0,80,48,6,32,1,28,0,36,16,0,1,32,0,1,17,0,35,0,53,34,0,56,27,0,55,0,1,0,53,32,0,72,27,0,2,34,0,69,0,11,0,65,17,21,0,0,0,20,21,27,16,0,33,0,65,0,71,0,68,0,74,11,4,17,33,0,81,48,6,32,1,28,0,36,16,0,0,0,71,17,0,14,32,0,1,17,0,9,0,71,0,14,32,0,3,17,0,35,32,0,31,17,17,0,0,33,0,81,50,6,34,0,81,0,54,0,14,27,32,1,40,0,51,0,8,27,34,0,39,21,0,35,32,0,52,0,50,0,0,26,0,61,17,21,33,0,82,48,6,32,1,28,32,1,25,32,0,1,17,0,11,32,0,78,17,0,32,16,33,0,83,48,6,0,66,32,0,82,16,33,0,84,48,6,0,71,34,0,82,0,52,0,20,0,2,0,67,21,0,6,0,19,21,27,0,67,17,33,0,85,48,0,0,0,53,0,11,0,53,0,65,27,0,10,32,0,84,21,27,16,33,0,86,48,6,32,0,84,0,32,32,0,49,17,0,11,32,0,73,17,0,11,32,0,63,17,0,10,32,0,86,0,32,32,0,49,17,0,11,32,0,60,17,17,32,0,46,0,51,0,32,27,0,22,0,65,21,0,32,32,0,49,21,32,0,10,0,151,27,16,6,32,0,86,0,32,0,53,32,0,49,27,0,55,34,0,60,27,16,33,0,86,49,0,44,0,1,26,0,66,17,0,6,33,0,85,50,6,32,0,84,0,32,0,53,32,0,49,27,0,55,0,6,0,53,34,0,73,27,27,16,33,0,84,49,6,32,0,86,0,36,16,0,11,0,65,17,32,0,1,0,51,1,21,27,0,32,20,32,0,10,0,152,27,16,6,32,0,84,0,12,32,0,53,17,0,11,34,0,50,0,32,0,53,32,0,49,27,0,55,34,0,63,0,8,16,27,16,0,10,0,53,0,29,27,16,17,0,26,0,66,17,32,0,46,0,32,20,32,0,10,0,153,27,16,6,32,0,84,0,2,0,71,17,0,0,0,65,0,67,0,71,11,3,0,35,32,0,85,17,17,33,0,87,48,6,32,0,84,0,32,32,0,49,17,0,8,16,0,2,0,71,17,0,35,34,0,61,0,50,0,0,26,16,0,29,16,17,0,1,33,0,72,50,6,32,0,3,0,35,0,53,32,0,31,0,35,32,0,40,17,27,0,55,34,0,86,0,32,32,0,52,17,0,26,0,66,17,27,16,0,2,32,0,23,17,0,44,0,1,26,32,0,21,17,33,0,3,49,6,32,0,23,0,9,34,0,24,17,33,0,88,48,6,0,65,0,11,32,0,3,17,0,44,0,22,26,0,66,17,0,35,32,0,30,17,33,0,89,48,0,29,16,0,9,32,0,88,17,33,0,90,48,6,32,0,3,0,35,32,0,90,0,8,16,32,1,38,16,17,0,2,32,0,90,17,0,0,32,0,3,17,0,20,0,15,0,67,21,0,11,32,0,89,21,0,1,0,20,21,0,6,0,20,0,14,0,71,21,0,2,34,0,89,0,0,0,66,17,21,0,44,0,22,26,0,65,21,0,35,34,0,30,21,21,16,33,0,91,48,6,32,0,91,0,35,0,0,0,6,0,66,21,0,5,0,20,21,34,0,90,0,8,16,0,50,0,0,26,16,0,54,0,20,0,1,0,35,21,27,21,0,65,0,14,32,0,91,17,0,9,32,0,88,17,0,8,16,32,1,38,16,17,0,6,33,0,91,50,6,32,0,91,0,29,16,0,2,34,0,88,17,0,0,33,0,3,50,6,32,0,25,0,14,0,66,17,0,9,32,0,91,0,13,0,65,17,17,0,10,33,0,26,50,0,8,16,0,2,33,0,25,50,6,32,0,25,0,1,32,0,25,0,14,0,65,17,0,2,32,0,91,17,17,33,0,91,49,6,0,61,0,14,32,0,3,17,0,29,0,66,17,0,9,0,80,0,14,32,0,3,17,17,0,1,33,0,3,50,6,0,65,0,14,32,0,3,17,0,29,16,0,12,0,70,0,14,32,0,3,17,17,32,0,31,0,51,0,33,27,32,0,10,0,154,27,16,6,34,0,19,0,20,0,1,0,8,0,54,0,2,27,21,33,0,3,50,6,32,1,34,0,1,32,0,1,17,33,0,92,48,6,34,0,35,0,49,1,22,26,16,6,32,0,13,0,44,0,35,26,33,0,1,50,6,34,0,55,0,35,32,0,13,17,33,0,93,48,6,32,0,36,0,44,0,35,26,33,0,3,50,6,32,0,36,0,44,0,35,26,33,0,91,50,6,34,0,21,0,12,34,0,22,17,0,35,32,0,36,17,0,32,16,0,22,34,0,41,0,33,16,0,35,32,0,38,17,33,0,94,48,17,33,0,38,49,6,32,0,1,0,35,34,0,94,17,0,44,0,1,26,32,1,16,0,36,16,0,0,0,68,17,17,0,44,0,22,26,32,0,37,0,46,0,65,26,16,17,33,0,95,48,6,32,0,3,0,72,0,54,0,15,27,0,9,0,11,0,53,0,81,27,21,16,33,0,96,48,6,0,65,0,11,32,0,3,17,0,11,32,0,96,17,33,0,97,48,6,32,0,97,0,29,16,32,1,38,16,0,44,0,35,26,32,0,91,17,33,0,98,48,0,15,0,66,17,33,0,99,48,6,32,0,91,0,1,16,0,6,0,65,17,33,0,100,48,6,32,0,98,0,1,16,0,6,0,65,17,33,0,101,48,6,32,0,13,33,0,27,49,6,32,0,36,0,44,0,35,26,33,0,26,50,6,32,0,96,0,2,32,0,101,17,32,0,28,0,155,26,16,6,32,1,27,0,14,32,0,1,17,0,2,32,0,101,17,32,0,28,0,156,26,16,6,0,67,0,16,32,0,3,17,0,9,0,67,0,11,32,0,98,17,17,33,0,102,48,0,11,32,0,93,17,0,32,16,0,30,16,33,0,103,48,6,0,71,0,14,32,0,3,17,33,0,104,48,0,9,32,0,102,17,0,28,16,0,10,32,0,102,17,33,0,105,48,6,0,67,0,27,16,0,39,32,0,3,17,0,10,32,0,105,17,0,16,32,0,104,17,0,2,0,67,17,0,6,32,0,100,17,0,29,0,2,34,0,104,21,0,6,0,28,21,0,67,17,0,2,32,0,102,17,32,0,28,0,157,26,16,6,32,1,26,0,14,32,0,1,17,33,0,106,48,6,32,1,16,0,36,16,0,0,0,67,17,32,1,14,0,36,16,0,0,0,66,17,11,2,0,39,32,0,1,17,33,0,107,48,6,32,1,16,0,36,16,0,0,0,70,17,0,44,34,0,17,26,32,0,1,17,33,0,108,48,32,1,38,0,52,0,11,27,32,0,107,17,0,9,32,0,106,17,33,0,109,48,6,0,65,0,14,32,0,3,17,0,11,0,53,0,10,0,53,0,29,27,27,32,0,105,17,0,28,0,54,0,9,27,16,32,0,13,32,0,10,0,158,27,16,6,32,1,15,0,36,16,0,0,0,67,17,0,14,32,0,1,17,33,0,110,48,6,0,66,0,16,34,0,91,17,0,28,16,0,9,32,0,110,17,0,11,32,0,99,17,33,0,111,48,6,32,0,97,0,29,0,66,17,0,9,33,0,110,50,6,32,0,110,0,11,32,0,111,17,32,0,13,32,0,10,0,159,27,16,6,32,0,111,0,10,32,0,105,17,0,8,16,0,30,0,55,32,1,37,0,1,0,19,21,0,53,0,13,0,51,0,27,27,27,27,16,33,0,112,48,6,32,0,96,0,32,16,33,0,113,48,0,0,0,53,32,0,112,0,54,0,35,27,27,16,0,0,0,66,17,33,0,114,48,6,32,0,3,0,35,32,0,113,17,0,13,0,80,17,33,0,115,48,6,32,0,3,0,35,32,0,114,17,33,0,116,48,6,32,0,98,0,35,32,0,114,17,0,6,0,65,17,0,13,32,0,116,17,0,9,32,0,115,17,32,0,13,0,35,32,0,114,21,32,0,10,0,160,27,16,6,32,0,1,0,35,32,0,113,17,0,44,0,1,26,32,1,15,0,36,16,17,0,0,32,0,111,0,35,32,0,113,17,17,0,0,34,0,116,0,15,0,65,17,17,0,0,32,0,115,17,33,0,117,48,6,32,0,79,0,22,33,0,114,50,6,32,0,1,0,46,0,65,26,16,0,35,0,53,32,0,114,27,0,55,32,0,79,0,46,0,74,26,16,0,22,32,0,117,17,27,16,0,1,0,53,0,28,27,16,33,0,118,48,6,32,0,118,0,35,32,0,42,17,0,2,0,53,0,50,0,0,26,0,14,0,65,21,0,10,0,53,0,29,0,53,0,66,27,27,20,27,16,0,50,0,0,26,16,0,29,16,33,0,118,49,0,35,32,0,13,17,33,0,119,48,0,2,16,33,0,120,48,6,32,0,100,0,14,0,67,17,0,9,32,0,120,17,33,0,121,48,0,9,32,1,18,0,36,16,0,14,32,0,1,17,17,0,32,16,33,0,122,48,6,32,0,109,0,10,32,0,108,17,0,29,16,0,10,34,0,23,0,8,16,0,35,34,0,36,17,17,0,2,32,0,100,17,0,2,32,0,121,0,8,16,17,34,0,28,0,161,26,16,6,32,0,118,0,14,0,74,17,33,0,123,48,0,2,0,71,17,0,1,33,0,118,50,6,32,0,100,0,14,0,66,17,0,2,32,0,120,17,0,6,33,0,26,50,6,32,1,15,0,36,16,0,44,0,1,26,32,1,34,17,0,14,32,0,92,17,0,11,32,0,118,17,32,0,48,16,33,0,124,48,6,32,0,26,0,35,32,0,42,17,34,0,48,16,33,0,125,48,6,32,0,31,0,35,32,0,54,17,0,22,0,65,17,0,44,0,1,26,0,66,17,1,23,16,6,32,0,125,33,0,126,48,6,32,0,52,32,1,39,0,52,0,16,27,33,0,125,50,6,0,65,0,14,32,0,77,17,0,9,32,0,125,17,0,26,0,66,17,32,0,46,0,32,20,32,0,10,0,163,0,153,11,2,0,56,0,11,0,53,34,0,126,0,26,0,66,17,27,0,49,0,10,26,20,27,27,16,6,32,0,125,0,2,0,67,17,0,6,33,0,77,50,6,32,0,84,0,2,33,0,77,50,6,32,0,77,0,14,0,67,17,0,35,32,0,47,17,0,35,32,0,13,17,33,0,127,48,6,32,0,127,0,14,0,1,0,19,21,33,0,100,50,6,34,0,127,0,14,0,1,0,19,21,33,0,101,50,6,32,1,34,0,1,32,0,1,17,32,0,8,0,54,0,11,27,0,9,0,15,0,53,0,82,27,21,16,33,0,128,48,6,32,1,34,0,0,32,0,8,17,0,16,32,0,1,17,0,9,34,0,123,0,35,32,0,13,17,17,33,0,129,48,0,32,16,33,0,130,48,6,32,1,16,32,1,25,0,11,0,36,0,0,0,71,21,0,54,0,14,27,21,32,0,1,17,0,10,32,1,17,0,36,16,0,14,32,0,1,17,0,28,16,0,12,32,0,97,17,17,0,10,34,0,129,17,0,10,34,0,128,17,0,11,0,65,0,16,32,0,3,17,0,9,32,0,120,17,0,28,16,0,11,32,0,97,17,0,11,32,0,93,17,17,33,0,131,48,6,32,0,120,0,11,34,0,121,0,10,34,0,131,17,0,10,32,0,96,17,17,32,0,13,32,0,10,0,164,27,16,6,32,0,120,0,35,32,0,113,17,0,11,0,67,0,14,34,0,117,17,0,9,34,0,119,0,35,32,0,113,17,0,13,0,68,17,17,17,32,0,13,0,35,32,0,113,21,32,0,10,0,165,27,16,6,32,0,120,0,12,0,53,0,29,27,16,0,9,32,0,3,0,15,0,65,17,17,0,9,32,0,98,0,11,0,65,17,17,0,11,32,0,93,17,32,0,13,32,0,10,0,166,27,16,6,32,0,120,0,35,32,0,113,17,33,0,132,48,0,12,33,0,115,50,6,32,0,113,0,32,34,0,132,17,33,0,133,48,6,32,0,115,0,44,0,32,26,33,0,113,50,6,32,0,79,0,46,0,66,26,16,0,22,34,0,115,17,0,44,0,32,26,33,0,114,50,6,34,0,18,0,29,16,33,0,134,48,0,32,16,33,0,135,48,6,32,0,92,32,0,8,0,54,0,11,27,0,9,0,15,0,53,0,65,27,21,16,0,11,34,0,96,0,9,32,0,120,17,0,28,16,0,35,32,0,42,17,0,10,34,0,134,17,0,10,34,0,78,17,17,0,32,16,33,0,136,48,6,32,0,118,0,35,32,0,83,17,33,0,137,48,0,11,0,65,17,33,0,138,48,6,0,67,0,67,11,2,32,1,25,34,0,118,0,35,32,0,136,17,33,0,139,48,17,33,0,140,48,6,0,70,0,11,34,0,137,17,0,9,32,0,138,17,32,0,83,32,0,10,0,167,27,16,6,32,0,47,0,35,32,0,136,17,33,0,141,48,6,32,0,92,0,35,32,0,136,17,33,0,142,48,6,32,0,7,0,13,16,0,11,32,0,142,17,0,9,32,0,141,0,14,0,65,17,17,0,9,32,0,140,17,33,0,143,48,6,32,0,7,0,35,32,0,142,0,32,32,0,143,17,17,33,0,144,48,0,14,0,65,17,32,0,136,0,32,32,0,143,21,32,0,10,0,168,27,16,6,32,0,140,0,32,0,53,34,0,143,27,0,55,34,0,144,0,15,0,65,17,27,16,33,0,140,49,6,0,65,0,15,32,0,7,17,0,32,16,33,0,145,48,0,46,0,65,26,16,33,0,146,48,6,32,0,142,0,32,32,0,140,17,33,0,147,48,0,22,32,0,145,17,0,41,32,0,87,0,13,16,0,22,32,0,141,0,32,32,0,140,17,33,0,148,48,17,0,22,32,0,146,17,33,0,149,48,17,33,0,150,48,6,32,0,34,0,35,34,0,54,17,0,44,0,1,26,0,66,17,0,22,32,0,1,0,13,16,17,0,35,32,0,148,17,0,22,34,0,34,0,32,34,0,46,17,0,22,0,61,17,0,35,34,0,141,17,0,0,32,0,139,0,14,0,66,17,17,17,33,0,151,48,6,32,0,151,0,33,16,0,35,0,53,32,0,147,0,22,32,0,142,17,33,0,152,48,0,54,0,35,27,0,33,20,27,16,33,0,153,48,6,32,0,153,0,32,0,53,0,15,0,53,32,0,140,0,13,16,27,27,16,1,24,16,6,32,0,153,0,35,34,0,147,0,46,0,61,26,16,0,22,32,0,140,17,0,35,32,0,153,17,0,50,0,0,26,16,33,0,154,48,0,33,16,17,0,32,0,53,32,0,140,0,13,16,0,54,0,11,27,27,16,33,0,153,49,6,32,0,153,0,44,0,35,26,33,0,140,50,6,32,0,153,0,44,0,35,26,33,0,136,50,6,32,0,153,0,44,0,35,26,33,0,139,50,6,34,0,154,0,11,0,65,17,0,10,0,53,0,29,27,16,0,8,16,0,49,0,0,26,16,33,0,155,48,6,34,0,142,0,35,32,0,153,0,25,32,0,155,17,17,33,0,156,48,6,32,0,7,0,13,16,0,16,32,0,156,17,32,0,136,0,25,32,0,155,21,32,0,10,32,0,156,0,54,0,32,27,0,40,20,32,1,30,0,169,21,27,16,6,32,0,139,0,11,0,65,17,33,0,157,48,0,9,0,71,0,11,34,0,139,17,17,33,0,158,48,6,34,0,33,0,35,32,0,136,17,0,35,0,53,32,0,140,32,1,38,16,0,26,32,0,155,17,27,0,22,34,0,7,0,6,0,65,17,0,1,16,33,0,159,48,0,35,32,0,156,17,21,0,1,0,20,21,16,33,0,160,48,6,32,0,160,0,11,0,65,17,0,9,32,0,158,17,32,0,136,32,0,10,0,170,27,16,6,34,0,158,32,1,40,0,26,0,66,21,0,16,0,32,21,32,0,140,17,33,0,161,48,0,35,34,0,153,0,32,32,0,140,17,0,33,16,33,0,162,48,17,0,22,34,0,146,17,0,41,34,0,149,17,33,0,163,48,6,34,0,148,0,22,34,0,159,17,0,38,0,0,32,0,87,0,54,0,35,27,21,16,0,20,0,26,0,53,0,13,27,34,0,145,21,0,35,0,53,0,33,27,34,0,162,21,0,35,32,0,140,0,26,34,0,155,17,0,50,0,0,26,0,61,17,21,0,22,0,35,0,53,34,0,156,27,21,16,33,0,164,48,6,32,0,160,0,11,0,65,17,32,1,40,0,11,34,0,161,0,22,0,66,17,21,0,35,0,53,0,50,0,0,26,27,0,19,21,32,0,140,17,0,9,32,0,140,0,28,0,66,17,0,11,32,0,157,17,17,33,0,165,48,6,32,0,92,0,35,32,0,83,17,0,0,0,71,17,0,0,32,0,84,0,2,0,71,17,0,35,32,0,47,0,35,32,0,83,17,33,0,166,48,17,17,33,0,167,48,6,34,0,166,0,2,0,74,17,0,0,32,0,167,17,0,30,0,55,0,39,27,16,0,22,33,0,165,50,6,0,66,0,1,32,0,79,17,0,44,0,35,26,32,0,13,17,0,0,0,66,17,32,0,135,32,0,83,0,22,32,0,136,17,11,3,0,32,0,71,0,67,0,71,11,3,17,0,22,16,33,0,168,48,6,34,0,138,0,22,34,0,157,17,0,12,0,2,0,67,21,0,0,0,20,21,34,0,165,17,0,0,0,83,17,33,0,169,48,6,32,0,79,0,46,0,83,26,16,32,0,79,0,46,0,65,26,16,34,0,72,0,32,34,0,74,17,32,0,135,0,46,0,79,26,16,34,0,92,0,35,34,0,135,17,34,0,169,34,0,83,0,46,0,65,26,16,0,22,34,0,160,17,34,0,167,0,22,34,0,164,17,11,8,33,0,170,48,6,32,0,105,0,8,16,0,50,0,0,26,16,32,1,37,0,1,0,20,21,32,0,97,17,0,7,0,10,0,12,21,0,67,17,0,9,32,0,99,17,33,0,171,48,6,34,0,102,0,29,16,0,10,0,66,0,14,32,0,3,17,17,33,0,172,48,0,11,32,0,120,0,11,32,0,97,17,0,10,0,53,0,28,27,16,0,10,32,0,105,17,0,10,34,0,171,17,0,10,32,0,93,17,33,0,173,48,17,0,32,16,33,0,174,48,6,34,0,172,0,10,34,0,173,17,0,12,32,0,99,17,32,0,13,32,0,10,0,171,27,16,6,0,65,0,14,32,0,3,17,0,11,32,0,105,17,0,10,0,65,0,16,32,0,3,17,0,9,34,0,99,17,17,0,8,16,0,2,0,67,17,0,6,34,0,100,17,0,28,0,67,17,0,35,32,0,174,17,33,0,175,48,0,13,0,67,17,33,0,176,48,6,32,1,26,0,11,32,0,1,17,0,11,34,0,93,17,0,32,16,33,0,177,48,0,44,0,35,26,32,0,1,17,33,0,178,48,0,9,16,0,40,16,33,0,179,48,0,29,0,1,0,20,21,0,61,17,0,32,16,0,35,34,0,178,17,33,0,180,48,6,34,0,8,0,0,32,1,34,17,33,0,181,48,0,16,32,0,1,17,0,32,16,33,0,182,48,0,22,34,0,177,17,33,0,183,48,6,32,0,1,0,35,34,0,182,17,0,0,32,0,179,0,13,16,0,44,0,1,26,34,0,181,17,17,0,22,33,0,180,50,6,34,0,42,0,35,34,0,40,17,33,0,184,48,6,0,65,0,22,32,0,109,17,0,50,0,0,26,16,0,32,0,66,0,22,32,0,108,17,17,0,26,0,66,17,0,29,0,54,0,1,27,16,0,0,34,0,97,0,28,0,66,17,0,32,34,0,108,17,0,8,16,17,0,44,0,22,26,34,0,37,17,33,0,185,48,6,0,81,0,14,32,0,3,17,0,29,16,0,10,34,0,109,17,0,10,32,0,101,0,14,0,67,17,17,0,12,34,0,106,17,0,32,16,0,22,32,0,79,0,32,0,53,0,8,27,32,0,80,17,17,33,0,186,48,6,34,0,107,0,32,16,33,0,187,48,6,32,1,27,0,14,32,0,1,17,0,32,16,33,0,188,48,6,32,0,176,0,0,32,0,174,17,0,0,0,53,32,0,112,0,54,0,35,27,0,2,32,0,176,21,27,16,33,0,189,48,6,32,0,189,0,32,34,0,101,0,35,32,0,174,17,33,0,190,48,0,14,0,67,17,33,0,191,48,0,2,32,0,176,0,0,0,66,17,17,17,0,22,33,0,186,50,6,32,0,191,0,8,16,33,0,191,49,6,32,0,191,0,44,0,32,26,33,0,174,50,6,32,0,191,0,44,0,32,26,33,0,189,50,6,34,0,80,0,1,16,0,22,34,0,110,0,0,32,0,111,17,0,0,32,0,1,17,0,35,32,0,113,17,0,44,0,1,26,32,1,15,0,36,16,0,0,0,66,17,17,0,6,0,65,17,17,0,0,0,84,17,33,0,192,48,6,32,0,183,32,0,183,32,0,184,32,0,184,32,0,130,32,0,122,32,0,38,0,32,0,67,17,32,0,114,32,0,186,32,0,188,0,66,0,0,32,0,133,17,0,66,0,0,32,0,133,17,34,0,112,0,35,32,0,103,17,0,6,0,66,17,0,0,32,0,103,17,34,0,189,32,0,187,11,15,33,0,193,48,0,22,16,0,44,0,35,26,32,0,13,17,0,22,32,0,168,17,33,0,194,48,0,33,16,33,0,195,48,6,34,0,183,0,46,0,65,26,16,34,0,180,32,0,184,0,46,0,66,26,16,34,0,184,0,13,16,0,27,16,0,0,0,66,17,34,0,130,0,46,0,85,26,16,34,0,122,0,46,0,86,26,16,34,0,185,0,23,34,0,120,0,35,34,0,38,17,0,0,34,0,95,17,0,0,0,62,17,17,0,31,16,0,21,16,34,0,192,34,0,186,0,46,0,74,26,16,34,0,188,0,46,0,87,26,16,32,0,133,0,46,0,88,26,16,34,0,1,0,35,0,66,0,1,34,0,133,17,17,0,44,0,1,26,32,1,34,17,34,0,3,0,35,32,0,103,17,0,0,0,89,17,34,0,98,0,35,32,0,174,17,0,11,0,65,17,0,2,0,70,17,0,0,34,0,175,0,14,0,66,17,0,6,34,0,190,17,0,2,0,67,17,0,0,34,0,176,17,0,32,34,0,191,17,17,0,0,0,90,17,32,0,124,0,0,0,75,17,33,0,196,48,0,26,0,61,17,11,15,0,22,34,0,170,17,0,22,16,0,35,32,0,195,17,33,0,197,48,6,34,0,193,0,46,0,13,26,16,0,22,34,0,168,0,13,16,17,0,35,0,46,0,27,0,54,0,0,27,26,0,50,0,0,26,0,29,20,0,54,0,35,27,21,0,69,0,60,0,91,11,3,17,33,0,198,48,6,34,0,194,0,35,0,53,32,0,198,0,22,16,27,0,55,34,0,113,34,0,79,11,2,0,46,0,13,26,16,0,44,0,32,26,0,66,0,65,11,2,17,0,1,34,0,114,17,34,0,103,32,0,174,11,3,0,22,16,0,44,0,35,26,32,0,13,17,27,16,33,0,199,48,6,32,0,5,32,0,6,11,2,0,46,0,35,0,53,0,35,0,53,32,0,195,27,0,44,0,22,26,0,61,21,27,26,32,0,199,34,0,199,0,35,0,53,34,0,198,0,36,0,61,17,27,0,55,34,0,111,0,10,34,0,105,17,0,8,16,0,29,16,32,1,38,16,0,35,34,0,174,17,0,44,0,35,26,32,0,13,17,27,16,11,2,17,33,0,200,48,6,32,0,49,0,32,0,53,34,0,49,27,0,55,32,0,59,27,16,33,0,59,49,0,11,0,65,17,0,10,32,0,77,0,13,0,66,17,0,9,32,0,84,17,17,0,10,33,0,53,50,6,32,0,53,0,32,16,33,0,201,48,0,44,0,35,26,34,0,77,17,33,0,202,48,0,14,0,66,17,0,0,0,66,17,33,0,203,48,0,32,16,33,0,204,48,6,34,0,202,0,11,0,66,17,0,0,34,0,59,0,35,32,0,201,17,0,2,0,67,17,17,0,5,0,70,17,33,0,205,48,6,32,0,52,0,35,32,0,201,17,33,0,206,48,0,50,0,0,26,0,61,17,33,0,207,48,6,32,0,205,0,0,34,0,203,17,0,35,0,53,0,34,0,51,0,35,0,53,32,0,207,0,54,0,35,27,0,33,20,0,32,34,0,206,21,27,27,27,16,0,6,32,0,84,0,32,32,0,53,0,9,32,0,52,17,17,0,8,16,0,1,0,67,17,17,33,0,208,48,6,32,0,201,0,35,32,0,204,17,0,41,32,0,208,0,50,0,0,26,16,0,22,0,65,17,0,26,0,35,34,0,207,21,0,0,34,0,205,21,0,35,0,0,0,19,0,51,0,38,27,21,34,0,204,21,0,44,0,22,26,0,25,21,0,61,17,17,0,41,0,53,0,32,27,34,0,208,17,33,0,201,49,6,34,0,85,0,32,32,0,52,17,34,0,84,0,8,16,0,32,32,0,52,17,32,0,52,0,32,16,0,32,0,53,34,0,53,0,32,34,0,52,17,27,0,55,34,0,201,27,16,11,3,33,0,209,48,6,34,0,187,0,13,0,52,0,1,27,32,0,197,17,0,16,34,0,195,17,0,22,0,66,17,0,32,16,32,0,150,0,46,0,13,26,16,0,0,34,0,87,17,34,0,150,34,0,163,11,4,33,0,210,48,6,34,0,196,0,36,0,61,17,0,22,34,0,197,17,34,0,179,34,0,209,34,0,210,34,0,200,11,5,7,11,0,0,46,0,172,0,51,0,42,27,26,11,0,0,65,0,27,16,11,4,33,0,3,48,6,34,0,2,0,13,0,11,0,70,21,0,58,0,24,27,16,0,43,34,0,3,26,0,26,0,13,21,0,54,0,22,27,16,33,0,4,33,0,5,33,0,6,33,0,7,12,4,48,6,34,0,1,32,1,41,34,0,5,32,0,6,11,2,17,33,0,8,48,33,0,9,33,0,10,33,0,11,33,0,12,33,0,13,12,5,48,6,34,0,9,32,1,43,34,0,10,32,0,11,0,36,16,34,0,12,34,0,13,34,0,6,0,46,0,65,26,16,0,29,34,0,7,17,11,5,17,33,0,14,33,0,15,33,0,16,33,0,17,33,0,18,12,5,48,6,34,0,14,34,0,11,0,26,0,66,17,0,22,34,0,4,0,35,34,0,15,17,11,1,17,0,22,16,34,0,16,0,12,16,0,31,16,0,45,0,11,26,16,34,0,17,0,12,16,0,31,16,0,45,0,11,26,16,34,0,18,34,0,8,11,6,7,34,0,1,34,0,2,16,7,32,0,1,0,35,0,53,32,0,2,0,32,34,0,1,17,27,0,55,0,46,0,66,26,27,16,32,1,13,34,0,2,0,44,0,35,26,16,17,7,34,0,1,0,32,16,0,36,16,0,117,11,2,0,42,16,7,34,0,1,0,22,0,65,17,0,35,0,53,0,50,0,0,26,27,32,1,31,17,0,9,32,1,32,17,0,32,16,0,118,11,2,0,42,16,7,32,1,26,0,32,34,0,1,17,0,119,11,2,0,42,16,7,32,1,26,0,32,34,0,1,17,0,120,11,2,0,42,16,7,34,0,2,0,32,34,0,1,17,0,44,0,35,26,32,1,26,17,0,121,11,2,0,42,16,7,32,0,2,0,44,0,32,26,33,1,26,50,6,32,0,2,0,44,0,32,26,33,1,25,50,6,34,0,1,0,32,34,0,2,17,7,0,49,0,10,26,0,58,34,0,1,0,24,34,0,2,0,54,0,32,27,21,0,42,20,27,7,32,0,1,0,54,0,36,27,33,0,3,48,6,0,26,0,25,11,2,0,46,1,25,26,16,33,0,4,33,0,5,12,2,48,6,0,36,0,55,0,26,0,53,0,61,27,27,0,24,20,33,0,6,48,6,0,46,0,25,26,0,30,20,0,46,0,22,26,0,46,0,26,26,21,0,53,0,61,0,65,11,2,27,33,0,7,48,6,1,26,33,0,8,48,6,32,2,16,32,2,25,34,0,1,17,0,32,16,0,30,16,0,49,0,46,34,0,8,26,0,22,20,0,32,0,53,0,46,0,36,26,0,39,20,27,20,0,25,0,53,0,13,0,5,0,79,21,27,20,26,0,65,0,27,16,0,44,0,24,26,16,0,24,16,17,0,46,0,22,26,16,0,36,0,53,0,46,0,13,26,0,49,0,5,26,0,37,0,20,21,0,36,20,20,27,16,33,0,9,48,6,0,66,32,0,9,32,1,10,34,0,9,32,2,30,0,130,17,27,16,7,0,14,0,58,0,49,0,10,26,27,0,58,34,0,1,0,24,34,0,2,0,54,0,32,27,0,44,0,66,0,57,0,35,27,26,0,43,32,1,6,26,0,23,32,1,5,21,21,0,31,0,51,0,9,27,20,21,0,42,20,27,7,32,1,15,0,22,0,65,17,0,32,32,0,1,17,0,13,32,2,16,0,36,16,0,0,0,70,17,17,32,1,13,0,22,0,65,21,0,32,34,0,1,21,32,1,10,0,135,27,16,7,34,0,1,0,6,33,1,26,50,0,14,0,67,17,32,1,27,32,1,10,34,0,4,27,16,7,32,2,28,32,2,25,34,0,1,17,0,9,32,1,47,0,14,0,65,17,17,7,32,1,5,0,35,0,53,32,0,1,27,0,55,32,1,5,0,35,32,0,2,17,27,16,33,1,5,49,6,32,1,6,0,35,0,53,34,0,2,27,0,55,32,1,6,0,35,34,0,1,17,27,16,33,1,6,49,7,32,1,25,0,35,32,0,1,17,0,2,0,53,0,8,27,32,1,124,17,0,6,33,1,125,50,0,14,0,67,17,32,1,31,0,51,0,33,27,0,35,34,0,1,21,32,1,10,0,162,27,16,7,32,1,151,0,35,0,53,32,0,1,27,0,13,0,53,0,29,27,20,0,52,0,10,27,32,1,152,17,0,8,16,32,1,136,0,32,0,53,32,1,140,27,0,54,0,22,27,20,0,35,34,0,1,21,32,1,10,0,168,27,16,7,0,44,0,24,34,0,1,20,0,54,0,46,0,22,26,27,26,0,24,20,7,34,0,1,32,1,4,32,1,5,0,20,32,1,6,20,32,1,7,0,54,34,0,0,27,0,22,32,1,5,21,11,2,0,56,0,36,0,36,0,61,21,0,54,32,1,3,0,52,0,1,27,27,0,13,0,66,21,27,11,2,0,56,0,20,0,51,0,36,0,51,0,13,27,27,0,11,0,65,21,27,11,2,0,56,32,1,3,0,7,0,67,21,27,34,0,2,19,7] - ,[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[18],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[52],runtime[53],runtime[54],runtime[55],runtime[56],runtime[57],runtime[59],runtime[60],runtime[62],10,13,-1,11,26,9,0,1,2,5,8,4,3,-3,-2,6,7,17,Math.PI,Infinity,64,-4,-5,-6,32,48,43,44,42,66,24,16,14,'\0','0','#','\'','\"','@',str("⋄,"),str(":;?"),str("⇐←↩"),str("(){}⟨⟩[]"),str("‿"),str("·"),str("𝕊𝕏𝕎𝔽𝔾𝕤𝕩𝕨𝕣𝕗𝕘"),str(".¯π∞"),str("_"),str("aA"),str("•"),str("𝕨"),str(" "),str("#\'\"@"),str("s"),str("Unknown character"),str(": "),str("Character set conflict: "),str("˜⁼"),str("Unclosed quote"),str("Words can\'t only have underscores"),str("System dot with no name"),str("𝕣 can\'t be used with other word characters"),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("Unmatched bracket"),str("Empty program"),str("Swapped open and closed brackets"),str("Parentheses can\'t contain separators"),str("Predicates can\'t be placed inside lists"),str("Empty statement or expression"),str("Invalid assignment or stranding use"),str("Can\'t use export statement as predicate"),str("Dot must be followed by a name"),str("Punctuation : ; ? not allowed outside blocks"),str("Header-less bodies must come last"),str("At most two header-less bodies allowed"),str("Invalid Undo header syntax"),str("Only one header per body allowed"),str("Missing operand in header"),str("Invalid header structure"),str("Incorrect special name"),str("Header left argument without right"),str("Header operation must be a plain name"),str("Header with ⁼ must take arguments"),str("Header with ˜⁼ must have left argument"),str("Block header type conflict"),str("Special name outside of any block"),str("Unreachable body"),str("Dot must be preceded by a subject"),str("Nothing (·) cannot be assigned"),str("Can\'t use Nothing (·) as predicate"),str("Missing operand"),str("Double subjects (missing ‿?)"),str("No right-hand side in non-modified assignment"),str("Role of the two sides in assignment must match"),str("Can\'t use Nothing (·) in lists"),str("Can\'t return Nothing (·)"),str("Invalid use of 𝕨 in monadic case"),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("System values not supported")] + [1,1,7,34,0,1,33,0,3,33,0,4,33,0,5,12,3,48,6,0,59,0,60,11,2,0,0,0,92,17,33,0,6,48,6,34,0,3,32,0,4,34,0,5,32,0,6,0,22,0,98,17,0,99,0,100,0,101,0,102,0,103,0,104,0,21,0,62,0,51,11,2,17,0,45,0,35,26,0,61,17,0,105,0,59,0,27,16,0,0,0,93,17,0,63,33,0,7,48,0,27,16,0,47,0,0,26,0,107,17,0,21,16,0,44,0,22,26,0,106,17,0,64,0,0,0,92,17,0,22,0,110,17,0,22,0,109,0,26,0,61,17,17,0,22,0,108,17,0,111,11,15,0,46,0,13,26,0,24,0,22,21,16,33,0,8,33,0,9,12,2,48,6,32,0,9,0,50,0,0,26,0,29,0,65,21,0,54,0,44,0,46,0,24,26,26,27,16,33,0,10,33,0,11,33,0,12,33,0,13,33,0,14,33,0,15,33,0,16,33,0,17,33,0,18,33,0,19,33,0,20,33,0,21,33,0,22,33,0,23,33,0,24,12,15,48,6,0,36,0,54,0,1,27,0,12,0,9,0,15,0,53,0,65,27,21,0,36,0,53,0,66,27,21,33,0,25,48,6,32,0,13,0,36,16,33,0,26,48,6,32,0,14,0,36,16,0,0,0,67,17,33,0,27,48,6,0,68,0,1,0,54,0,24,27,16,0,0,32,0,19,17,33,0,28,48,6,32,0,19,0,36,16,0,0,0,69,17,33,0,29,48,6,0,13,0,11,0,66,21,0,44,0,32,26,0,112,21,0,54,0,22,27,33,0,30,48,6,1,2,33,0,31,48,6,1,3,32,0,8,26,33,0,32,48,6,0,116,0,32,0,53,34,0,4,0,54,0,39,27,27,16,32,0,32,16,33,0,33,48,6,32,0,20,0,36,16,33,0,34,48,0,0,0,66,17,33,0,35,48,6,0,66,0,67,0,71,0,61,0,61,0,72,0,61,0,65,11,2,0,73,0,65,0,68,0,74,11,2,0,32,16,0,8,16,11,10,0,43,34,0,9,26,0,25,0,13,21,0,54,0,44,0,46,0,21,26,26,27,16,0,22,16,0,44,0,22,26,0,70,17,33,0,36,48,6,0,2,0,50,0,6,26,20,33,0,37,48,6,32,0,37,0,53,0,13,0,51,0,27,27,27,33,0,38,48,6,32,0,37,0,53,0,13,0,51,0,27,27,0,0,0,66,21,27,33,0,39,48,6,0,19,0,32,0,10,21,0,44,0,22,26,0,32,0,22,21,0,66,21,33,0,40,48,6,1,4,33,0,41,48,6,1,5,33,0,42,48,6,1,6,33,0,43,48,6,1,7,33,0,44,48,7,34,0,1,0,11,16,0,46,1,8,26,34,0,4,17,0,22,16,7,32,1,31,32,1,30,0,53,0,113,27,0,114,0,20,11,3,26,0,42,20,33,0,2,48,6,32,0,1,0,54,0,35,27,0,54,0,18,0,58,0,19,0,32,0,13,21,0,51,34,0,2,27,27,27,0,19,0,20,21,33,0,3,48,6,32,0,1,0,35,34,0,1,0,33,16,33,0,4,48,17,33,0,5,48,0,26,0,53,0,1,27,0,14,0,26,21,0,66,17,0,49,0,10,26,0,58,0,22,0,53,0,65,27,0,44,0,32,26,32,0,5,21,0,22,0,115,21,0,42,20,27,16,6,0,20,0,33,34,0,5,21,0,6,0,66,21,0,44,0,1,26,0,66,21,0,44,0,35,26,34,0,4,21,34,0,3,0,20,21,7,34,0,2,33,0,3,33,0,4,12,2,48,6,0,94,0,14,32,0,1,17,33,0,5,48,6,0,95,0,14,32,0,1,17,33,0,6,48,0,9,0,53,0,28,0,53,0,65,0,65,11,2,27,27,16,0,32,16,33,0,7,48,6,0,96,0,14,32,0,1,17,33,0,8,48,0,32,16,33,0,9,48,6,32,0,7,32,0,9,0,26,0,61,17,32,0,5,0,32,16,11,3,0,22,16,33,0,10,48,0,33,16,33,0,11,48,6,32,0,10,0,35,32,0,11,17,33,0,10,49,6,34,0,7,0,0,0,67,17,34,0,9,0,26,0,66,17,0,66,0,22,32,1,6,0,39,32,0,1,17,17,0,32,16,0,32,0,53,32,0,5,0,50,0,0,26,16,0,22,0,65,17,0,54,0,35,0,51,0,29,0,54,0,1,27,27,27,27,16,11,3,0,22,16,0,35,34,0,11,17,33,0,12,48,6,0,20,0,36,0,61,21,0,14,0,65,21,0,58,1,9,27,33,0,13,48,6,0,32,0,53,32,0,12,0,33,32,0,10,17,0,46,0,65,26,0,22,0,66,21,32,0,13,0,13,0,54,0,22,27,21,0,25,0,13,21,16,27,0,48,0,32,26,20,0,25,32,0,1,0,13,16,21,33,0,14,48,6,34,0,10,32,0,14,16,33,0,15,48,6,34,0,12,34,0,14,16,33,0,16,48,6,32,0,16,0,10,32,0,15,17,33,0,17,48,0,50,0,13,26,0,66,17,33,0,18,48,6,32,0,18,0,11,34,0,16,17,0,9,32,0,8,0,10,32,0,6,17,17,0,49,0,10,26,0,58,1,10,27,16,6,0,97,0,14,32,0,1,17,0,9,32,0,18,17,33,0,19,48,6,34,0,6,0,9,32,0,15,17,0,29,16,0,10,32,0,19,17,0,32,16,33,0,20,48,6,32,0,20,34,0,19,0,54,0,35,27,0,2,0,92,0,1,0,97,17,21,0,1,32,0,1,0,54,0,35,27,21,16,33,0,21,48,6,32,0,8,0,9,33,0,15,50,0,28,16,0,9,32,0,8,17,33,0,22,48,0,12,33,0,18,50,6,34,0,17,0,9,34,0,8,17,0,50,0,13,26,16,0,11,0,66,0,54,0,22,27,0,52,0,2,0,53,0,50,0,0,26,27,27,0,19,21,34,0,22,0,29,16,0,12,34,0,15,17,33,0,23,48,17,0,44,0,1,26,0,66,17,0,44,0,41,26,32,0,1,17,33,0,24,48,6,32,0,18,0,32,16,33,0,25,48,6,32,0,18,0,29,0,66,17,0,32,16,0,25,0,53,0,13,27,32,0,25,17,33,0,26,48,6,32,0,25,34,0,5,0,54,0,35,27,0,2,0,1,21,32,0,26,17,0,1,33,0,26,50,6,34,0,1,0,35,32,0,25,17,32,1,32,16,33,0,27,48,6,32,1,21,32,1,25,32,0,27,17,0,28,16,0,12,32,1,20,0,36,16,0,14,32,0,27,17,17,33,0,28,48,6,32,1,29,0,14,32,0,27,17,33,0,29,48,6,32,1,23,0,36,0,52,0,44,0,1,26,0,24,0,19,21,27,32,1,20,17,32,1,25,32,0,27,17,0,11,34,0,28,17,0,10,32,0,29,17,33,0,30,48,0,11,0,53,0,29,27,16,33,0,31,48,6,32,1,22,0,49,0,0,26,16,0,0,0,61,17,0,14,32,0,27,17,33,0,32,48,6,32,1,23,0,36,16,0,14,32,0,27,17,33,0,33,48,6,32,0,32,0,12,32,0,30,17,0,19,0,32,0,10,21,0,28,0,32,0,20,21,0,66,21,0,11,0,32,21,32,0,31,17,0,49,0,10,26,0,58,1,11,27,16,6,32,0,27,0,32,32,0,31,17,0,44,0,1,26,32,1,22,0,36,16,17,0,44,0,3,0,51,0,5,27,26,32,1,7,17,0,2,32,0,29,0,32,32,0,31,17,0,8,16,17,33,0,34,48,6,32,1,22,0,36,16,0,0,32,1,7,17,0,16,32,0,27,17,0,9,32,0,30,17,0,2,32,1,7,17,0,1,33,0,27,50,6,32,0,30,0,28,16,0,12,32,0,33,17,0,49,0,10,26,0,58,1,12,27,16,6,32,0,33,0,10,0,53,0,29,27,16,0,13,33,0,31,50,6,34,0,33,0,32,32,0,31,17,0,20,0,0,0,8,0,54,0,2,27,21,0,65,0,16,32,0,34,17,0,2,0,67,17,17,33,0,35,48,0,11,0,65,17,33,0,36,48,6,32,0,36,0,8,16,0,22,0,65,17,0,35,32,0,31,0,50,0,0,26,16,17,0,9,32,0,30,17,33,0,37,48,0,12,32,0,30,17,33,0,38,48,6,32,0,30,0,2,32,0,27,17,0,22,0,53,0,65,27,0,32,32,0,37,0,22,0,65,17,0,28,0,54,0,10,27,16,0,11,32,0,32,0,22,0,65,17,17,21,0,52,32,1,42,27,32,0,26,17,33,0,39,48,6,34,0,34,0,32,32,0,36,17,0,14,0,53,0,67,27,0,54,0,9,27,0,0,0,20,21,32,0,38,0,11,0,53,0,28,27,16,0,44,0,32,26,32,0,32,17,17,33,0,40,48,6,32,0,37,0,12,32,0,31,17,0,50,0,0,26,16,0,2,32,0,32,0,12,32,0,38,17,17,33,0,41,48,0,11,0,53,0,50,0,6,26,0,29,20,27,16,33,0,42,48,6,32,0,29,0,32,32,0,42,17,0,11,32,0,35,0,32,34,0,36,17,0,14,0,66,17,17,33,0,43,48,6,32,0,31,33,0,44,48,0,9,34,0,37,17,0,10,32,0,42,17,33,0,31,49,6,32,0,29,0,32,32,0,31,17,0,8,16,0,44,0,32,26,33,0,35,50,0,32,0,53,0,11,0,53,0,65,27,27,16,0,14,0,66,17,33,0,45,48,6,32,0,43,0,22,0,65,17,0,35,32,0,41,17,0,11,0,53,32,0,42,27,0,10,0,13,0,53,32,0,29,27,21,16,0,9,32,0,32,0,12,34,0,38,17,17,0,49,0,10,26,0,58,1,13,27,16,6,34,0,42,0,11,32,0,29,17,0,32,16,32,0,27,0,54,0,35,27,0,12,32,1,22,0,36,16,21,0,11,32,0,45,21,0,54,0,20,0,49,0,10,26,20,0,58,1,14,27,27,16,6,34,0,43,0,8,16,0,2,0,53,0,50,0,0,26,27,16,0,22,0,65,17,0,44,0,1,26,0,66,17,0,35,33,0,41,50,6,32,1,8,0,35,32,0,27,17,0,41,34,0,41,17,0,41,0,67,0,22,34,0,45,17,17,0,36,0,55,0,22,0,53,32,0,4,27,27,16,33,0,46,48,6,34,0,18,0,29,16,0,50,0,0,26,16,0,35,34,0,23,0,32,16,0,22,34,0,20,17,17,0,22,34,0,29,0,12,32,0,31,17,0,32,16,0,35,0,53,0,34,27,34,0,35,17,17,33,0,47,48,6,34,0,39,34,0,21,34,0,24,11,3,0,22,34,0,46,17,33,0,48,48,6,32,0,48,0,46,0,37,26,16,33,0,49,48,0,44,0,46,0,32,0,53,0,50,0,6,26,0,29,0,61,21,0,12,0,20,21,27,26,26,33,0,48,50,6,32,0,48,0,36,0,53,0,66,27,0,55,34,0,3,27,16,33,0,48,49,6,32,1,23,32,1,25,32,0,27,17,0,10,32,0,30,17,0,8,16,33,0,50,48,6,34,0,44,0,10,32,0,50,17,0,44,0,32,26,33,0,26,50,6,34,0,30,0,28,0,54,0,12,27,16,0,10,32,0,50,17,0,44,0,32,26,33,0,25,50,6,32,0,27,0,35,0,53,34,0,47,27,0,55,32,0,48,0,46,0,13,26,16,33,0,51,48,0,29,32,1,35,17,0,50,0,0,26,16,0,0,34,0,49,17,0,22,16,0,26,0,53,0,13,27,34,0,4,17,27,16,0,32,34,0,50,0,10,32,0,31,17,17,33,0,27,49,6,32,1,13,0,36,0,54,0,1,27,0,2,32,1,25,21,32,0,27,17,0,1,33,0,27,50,6,32,1,26,0,14,32,0,27,17,0,44,0,22,26,0,13,0,22,21,0,66,17,0,32,16,0,26,0,66,17,0,26,0,61,17,33,0,52,48,0,46,0,66,26,16,0,50,0,13,26,16,33,0,53,48,6,32,1,16,0,36,16,0,0,0,71,0,68,0,75,11,3,17,33,0,54,48,6,32,0,27,0,35,32,0,53,0,1,32,0,52,17,17,0,0,0,53,32,0,53,27,0,44,0,39,26,34,0,54,21,0,10,32,1,14,0,54,32,1,25,27,21,16,0,28,0,54,0,10,27,16,0,12,34,0,53,17,0,44,0,32,26,34,0,52,17,33,0,55,48,6,32,1,26,0,13,32,0,27,17,0,35,0,53,34,0,55,27,0,55,0,46,0,66,26,27,16,0,44,1,15,26,33,0,27,50,6,34,0,51,0,25,0,67,17,0,49,0,0,26,16,0,24,32,1,35,17,32,1,25,32,0,27,17,0,10,32,1,29,0,14,32,0,27,17,17,33,0,56,48,6,0,65,0,22,32,1,36,17,0,35,32,0,27,0,5,32,1,35,17,17,0,32,0,53,34,0,56,27,0,55,34,0,40,27,16,33,0,57,48,6,32,0,27,0,15,0,53,0,0,0,53,0,71,27,27,0,0,0,68,21,0,2,0,68,0,54,0,24,27,32,1,25,0,20,21,21,32,1,19,0,36,16,17,0,0,33,0,27,50,6,32,0,27,0,14,0,2,0,59,21,0,0,0,11,21,32,1,34,17,0,1,33,0,27,50,6,34,0,27,34,0,57,34,0,48,32,0,26,32,0,25,11,5,7,1,16,33,0,3,48,6,32,1,31,32,1,30,0,53,0,122,27,0,123,32,1,8,0,54,0,35,27,0,124,11,4,26,33,0,4,48,6,32,1,20,0,49,0,27,0,54,0,0,27,26,16,0,22,0,125,0,49,0,1,26,16,0,0,32,1,22,0,36,16,17,17,0,46,32,0,1,0,54,0,14,27,26,16,33,0,5,33,0,6,33,0,7,33,0,8,33,0,9,12,5,48,6,32,1,22,0,36,16,0,11,32,0,1,17,0,10,32,0,5,17,0,8,16,0,10,32,1,29,0,14,32,0,1,17,17,32,0,2,32,0,3,32,0,1,0,54,0,32,27,0,51,34,0,4,27,27,16,6,32,0,1,0,14,0,65,17,33,0,10,48,0,10,32,0,5,17,33,0,11,48,0,10,32,0,6,17,33,0,12,48,6,32,0,11,0,10,32,0,7,17,0,8,16,33,0,13,48,6,32,0,11,0,29,16,0,12,32,0,7,17,32,0,2,32,0,3,0,126,27,16,6,32,0,12,0,10,32,0,7,17,0,9,32,0,12,0,28,0,66,17,17,32,0,2,32,0,3,0,127,27,16,6,32,0,1,0,32,32,0,12,17,0,11,0,53,0,29,27,0,10,0,14,0,53,0,65,27,21,16,0,8,16,32,0,2,0,32,34,0,12,21,32,0,3,0,128,27,16,6,32,0,5,0,29,16,0,12,32,0,7,17,0,10,32,0,10,17,0,28,0,10,34,0,5,0,28,16,0,9,32,0,8,17,21,0,9,0,29,21,0,66,17,0,12,32,0,9,0,10,34,0,8,17,17,34,0,2,34,0,3,0,129,27,16,6,32,0,13,0,9,0,53,0,8,32,1,39,0,52,0,12,27,32,1,21,0,36,16,0,13,32,0,1,17,0,11,32,0,6,17,21,0,15,0,28,21,27,16,33,0,14,48,0,9,0,53,0,50,0,0,26,32,1,37,0,1,0,20,21,0,8,21,0,16,0,76,21,27,16,33,0,15,48,6,32,1,20,0,36,16,0,0,0,66,17,0,1,34,0,1,17,0,2,32,0,15,17,0,32,32,0,6,0,8,16,17,0,44,0,35,26,0,59,0,27,16,0,22,0,77,0,66,11,2,17,0,22,0,61,17,17,33,0,16,48,6,32,0,16,0,50,0,0,0,53,0,59,0,54,0,2,27,27,0,2,0,15,0,53,0,65,27,21,26,0,65,17,0,32,34,0,16,0,15,0,65,17,0,28,0,54,0,12,27,16,17,33,0,17,48,6,34,0,7,0,29,16,0,32,34,0,13,0,29,0,54,0,12,27,16,33,0,18,48,17,0,44,0,35,26,0,66,0,61,11,2,17,0,2,33,0,17,50,6,34,0,10,0,32,34,0,11,17,33,0,19,48,6,34,0,14,0,28,0,54,0,12,27,0,32,20,0,52,0,1,0,53,34,0,6,0,28,16,32,1,39,16,0,54,0,35,27,27,0,20,0,2,0,11,21,0,1,0,53,0,29,27,21,0,1,0,1,21,27,34,0,15,17,0,32,32,0,19,17,33,0,20,48,6,32,0,19,0,8,16,0,2,32,0,17,17,0,28,16,0,32,32,0,19,17,0,44,0,1,26,34,0,20,17,33,0,21,48,0,7,16,0,4,0,59,17,33,0,22,48,6,0,66,0,78,11,2,0,35,34,0,9,0,32,34,0,18,17,17,0,2,34,0,17,17,0,32,34,0,19,17,0,32,0,53,32,0,21,0,11,0,65,17,27,0,55,0,2,27,32,0,22,17,0,32,0,53,34,0,21,0,12,0,65,17,27,0,55,0,44,0,3,26,27,34,0,22,17,7,34,0,2,33,0,3,33,0,4,33,0,5,33,0,6,33,0,7,12,5,48,6,34,0,4,0,13,16,33,0,8,48,6,1,17,33,0,9,48,6,1,18,33,0,10,48,6,32,0,1,0,13,16,0,11,0,65,17,0,42,0,131,17,6,32,1,16,32,1,25,32,0,1,17,0,2,32,0,3,0,2,0,67,17,0,1,0,61,17,17,33,0,11,48,0,50,0,0,26,16,33,0,12,48,0,33,16,33,0,13,48,6,0,61,0,14,32,0,3,17,0,35,32,0,13,17,33,0,14,48,6,32,0,1,0,35,32,0,13,17,33,0,15,48,0,32,0,53,0,65,0,54,0,11,27,27,0,44,0,1,26,0,66,21,0,17,0,32,0,53,0,65,0,54,0,12,27,27,21,32,0,11,0,35,32,0,13,17,17,0,8,0,58,32,0,1,0,51,34,0,9,27,27,16,6,34,0,12,0,36,32,0,13,0,36,16,17,0,12,0,65,17,32,0,13,0,25,0,66,21,32,0,10,0,132,27,16,6,32,0,15,0,32,32,0,14,17,33,0,16,48,0,14,0,53,32,1,26,27,0,10,0,14,0,53,32,1,27,27,21,0,9,0,53,0,29,27,0,14,0,53,32,1,16,0,36,16,27,21,16,32,0,13,0,32,32,0,14,21,32,0,10,0,133,27,16,6,0,14,0,53,0,67,0,54,0,0,27,27,0,10,0,14,21,33,0,17,48,6,32,0,16,0,32,0,53,0,13,0,53,32,1,26,27,27,16,0,14,0,53,32,1,27,27,0,9,0,53,0,29,27,32,0,17,0,53,32,1,16,0,36,16,0,0,0,70,17,27,21,16,32,0,13,0,32,32,0,14,21,0,32,34,0,16,0,13,32,1,26,21,21,32,0,10,0,134,27,16,6,34,0,14,0,22,0,66,17,0,9,0,53,0,28,0,53,0,66,27,27,16,1,19,16,6,0,70,0,14,32,0,3,17,33,0,18,48,0,10,0,53,0,28,27,16,33,0,19,48,6,32,0,11,0,0,32,0,3,17,0,15,0,65,17,0,11,32,0,18,17,0,28,16,33,0,20,48,0,12,32,1,15,0,36,16,0,14,32,0,1,17,17,0,1,33,0,3,50,6,32,0,3,0,15,0,65,17,0,11,32,0,18,17,0,29,16,0,9,32,1,15,0,36,16,0,0,0,67,17,0,14,32,0,1,17,0,10,34,0,20,17,17,0,12,32,0,3,0,73,0,54,0,15,27,0,9,0,11,0,53,0,80,27,21,16,17,0,13,0,27,20,32,0,10,0,136,27,16,6,32,1,27,0,14,32,0,1,17,0,9,32,0,3,0,14,0,80,17,0,29,16,17,0,13,0,27,20,32,0,10,0,137,27,16,6,32,1,34,32,0,8,11,2,32,1,25,32,0,1,17,0,28,16,0,12,32,0,18,17,0,13,0,27,20,32,0,10,0,138,27,16,6,0,73,0,14,32,0,3,17,0,10,0,53,0,28,27,16,33,0,21,48,0,35,0,53,32,0,13,0,35,0,53,32,0,19,0,54,0,35,27,0,33,20,27,16,27,0,55,0,29,27,16,33,0,22,48,6,32,0,22,0,10,32,0,21,17,0,8,16,33,0,23,48,6,32,1,16,0,36,16,0,0,0,66,17,0,14,32,0,1,17,33,0,24,48,6,32,1,18,0,36,16,0,14,32,0,1,17,0,2,0,67,17,0,0,32,1,28,0,36,16,0,0,0,67,17,0,14,32,0,1,17,17,0,35,32,0,24,0,8,16,32,1,38,16,17,33,0,25,48,6,0,65,33,0,26,48,6,32,0,25,0,13,16,0,27,16,33,0,27,48,6,1,20,33,0,28,48,6,32,0,19,0,10,32,0,21,17,33,0,29,48,0,35,32,0,13,17,0,33,16,0,44,0,35,26,33,0,13,50,6,32,0,3,0,13,16,0,27,16,0,35,0,53,32,0,13,27,0,55,0,29,0,53,0,13,27,27,16,33,0,30,48,6,0,61,0,14,32,0,3,17,0,10,34,0,29,17,0,35,32,0,13,17,0,22,0,66,17,0,0,0,53,0,50,0,0,26,27,16,0,33,16,0,44,0,35,26,0,8,0,33,0,54,0,44,0,35,26,27,21,0,35,0,53,0,33,27,0,19,21,32,0,13,0,22,0,61,17,17,0,26,0,61,17,0,50,0,0,26,16,0,33,16,33,0,31,48,6,32,1,16,0,36,16,0,0,0,67,17,0,67,11,2,32,1,25,32,0,1,17,0,2,32,0,11,17,0,35,32,0,31,17,33,0,32,48,0,50,0,0,26,16,33,0,33,48,0,33,16,33,0,34,48,6,32,0,34,0,44,0,35,26,33,0,31,50,6,32,0,34,0,44,0,35,26,33,0,33,50,6,32,0,34,0,44,0,35,26,33,0,32,50,6,32,0,31,0,44,0,35,26,33,0,1,50,6,32,0,31,0,44,0,35,26,33,0,18,50,6,32,0,31,0,44,0,35,26,33,0,5,50,6,32,0,31,0,44,0,35,26,33,0,6,50,6,32,0,11,0,35,32,0,31,17,0,44,0,1,26,32,0,32,17,33,0,11,49,0,50,0,0,26,16,0,33,16,33,0,13,49,6,34,0,11,0,35,32,0,13,17,0,12,32,0,13,0,54,0,32,27,0,52,0,24,27,0,11,21,0,65,17,33,0,35,48,6,32,0,18,0,10,0,53,0,28,27,16,0,35,32,0,13,17,0,33,16,0,44,0,35,26,33,0,13,50,6,32,0,31,0,35,32,0,13,17,33,0,36,48,6,32,0,21,0,1,32,0,22,17,0,35,32,0,36,17,0,12,0,32,0,52,0,1,27,0,11,21,0,65,17,0,44,0,3,26,0,67,17,0,0,0,66,17,33,0,37,48,6,32,1,16,0,36,16,0,0,0,68,17,0,44,32,0,17,26,32,0,1,17,0,35,32,0,13,17,0,32,16,33,0,38,48,6,0,65,0,12,32,0,32,17,33,0,39,48,6,0,65,0,11,34,0,32,17,0,32,16,33,0,40,48,6,32,0,39,0,32,16,32,0,40,11,2,0,46,0,22,26,33,0,35,50,6,32,0,21,0,35,32,0,36,17,0,33,16,33,0,41,48,0,44,0,35,26,33,0,13,50,6,32,0,31,0,35,32,0,13,17,33,0,36,49,6,32,0,13,0,33,16,33,0,42,48,6,32,1,14,0,36,16,0,14,32,0,1,17,33,0,43,48,6,32,1,14,0,36,16,0,0,0,66,17,0,14,32,0,1,17,33,0,44,48,6,32,1,27,0,14,32,0,1,17,33,0,45,48,6,32,0,45,0,10,32,0,44,17,0,10,32,0,43,17,0,11,32,0,39,0,50,0,10,26,16,17,0,13,0,27,20,32,0,10,0,139,27,16,6,32,0,44,0,10,32,0,39,17,33,0,46,48,0,50,0,0,26,16,33,0,47,48,6,0,20,32,1,40,0,51,0,8,27,32,0,46,21,33,0,48,48,6,32,0,43,32,0,48,16,33,0,49,48,0,10,34,0,45,32,0,48,16,17,33,0,50,48,6,32,0,44,0,32,32,0,46,17,33,0,51,48,0,8,16,0,22,0,66,17,33,0,52,48,6,32,0,51,0,28,0,54,0,10,27,16,0,22,0,65,17,33,0,53,48,6,32,0,50,0,26,0,9,32,0,51,21,0,11,0,26,0,53,0,1,27,21,0,66,17,32,0,46,0,32,20,32,0,10,0,140,27,16,6,32,0,50,0,26,0,61,17,0,12,32,0,51,17,0,9,0,53,0,29,27,16,32,0,46,0,32,20,32,0,10,0,141,27,16,6,34,0,44,0,32,16,0,22,32,0,40,17,0,35,34,0,51,0,28,16,0,33,16,0,33,16,17,33,0,54,48,6,32,0,43,0,10,32,0,46,17,0,35,0,53,32,0,13,0,30,16,27,0,55,32,1,38,0,54,0,44,0,35,26,27,27,34,0,43,17,33,0,55,48,0,32,16,33,0,56,48,6,32,0,1,0,35,32,0,56,17,0,37,0,1,0,19,0,51,0,13,27,21,32,1,33,17,33,0,57,48,0,14,0,65,17,33,0,58,48,6,32,0,57,0,14,0,53,0,67,27,0,9,32,0,58,0,29,0,66,17,21,0,10,0,16,0,53,0,29,27,21,16,0,11,32,0,58,17,32,0,56,32,0,10,0,142,27,16,6,32,0,57,0,29,16,0,32,34,0,58,17,33,0,59,48,6,34,0,57,0,14,0,65,17,0,44,0,32,26,33,0,56,50,6,32,0,56,0,44,0,35,26,32,0,31,17,32,0,3,0,54,0,35,27,0,2,32,0,23,0,54,0,35,27,21,16,33,0,60,48,6,32,0,60,0,14,0,61,17,33,0,61,48,0,28,0,0,0,29,0,53,0,66,27,21,16,33,0,62,48,0,14,0,67,17,33,0,63,48,6,32,0,55,0,35,32,0,56,0,32,32,0,61,17,0,0,0,66,17,17,32,0,56,0,32,32,0,61,21,32,0,10,0,143,27,16,6,32,0,60,0,15,0,67,17,33,0,64,48,0,11,32,0,63,17,0,20,0,9,0,71,0,14,32,0,60,17,21,0,28,20,0,10,0,29,21,16,33,0,65,48,6,34,0,64,0,10,32,0,61,17,0,9,32,0,65,17,0,10,0,71,0,14,32,0,60,17,0,9,32,0,59,17,17,32,0,56,32,0,10,0,144,27,16,6,34,0,62,0,14,0,66,17,0,9,32,0,60,0,14,0,65,17,17,0,11,32,0,65,17,33,0,66,48,0,10,32,0,65,17,0,8,16,33,0,67,48,6,32,0,61,0,32,32,0,67,17,0,14,0,53,0,29,0,53,0,66,27,27,16,32,0,56,0,32,32,0,67,21,32,0,10,0,145,27,16,6,32,0,22,0,35,32,0,31,17,0,8,16,0,2,32,0,1,17,0,35,32,0,56,17,33,0,68,48,0,33,32,0,8,0,22,32,1,28,17,0,50,0,0,26,16,17,0,44,0,1,26,0,66,17,0,7,0,71,17,33,0,69,48,6,32,0,69,0,13,0,66,17,0,9,32,0,60,0,14,0,65,17,17,0,9,32,0,63,17,33,0,70,48,0,12,32,0,67,17,33,0,71,48,6,32,0,70,0,0,33,0,60,50,6,32,0,70,0,12,33,0,63,50,6,32,0,60,0,5,0,67,17,0,44,0,1,26,0,66,17,0,2,0,71,17,0,2,32,0,71,17,0,0,32,0,60,0,14,0,71,17,0,28,16,0,0,0,70,17,0,2,32,0,65,17,17,0,0,32,0,61,0,28,16,0,0,0,66,17,0,2,32,0,66,17,0,0,34,0,70,17,17,33,0,72,48,6,32,1,28,0,36,16,0,0,32,0,72,17,0,13,34,0,68,17,0,9,32,0,69,0,14,0,65,17,17,32,0,56,32,0,10,0,146,27,16,6,32,0,60,0,14,0,65,17,0,9,32,0,63,17,0,10,32,0,61,17,0,8,16,0,2,33,0,69,50,6,32,0,61,0,12,33,0,67,50,6,32,0,67,0,44,0,32,26,33,0,60,50,6,32,0,66,0,32,32,0,61,0,29,0,66,17,17,33,0,73,48,6,34,0,65,0,2,32,0,59,17,0,29,0,54,0,1,27,16,0,1,33,0,59,50,6,32,0,59,0,2,16,0,11,32,0,67,17,32,0,56,32,0,10,0,142,27,16,6,0,65,0,22,32,0,73,17,0,35,0,53,0,50,0,0,26,27,32,0,61,17,0,12,32,0,66,17,32,0,56,32,0,10,0,147,27,16,6,0,67,0,13,32,0,69,17,0,12,34,0,71,17,32,0,56,32,0,10,0,148,27,16,6,32,0,67,0,44,0,32,26,33,0,59,50,6,32,0,60,0,14,0,66,17,0,10,33,0,73,50,6,32,0,59,0,2,16,0,11,32,0,73,17,32,0,56,0,32,32,0,67,21,32,0,10,0,149,27,16,6,32,0,69,0,13,0,65,17,33,0,74,48,0,0,0,66,17,0,2,34,0,66,17,0,6,32,0,63,17,0,29,16,0,32,32,0,61,17,33,0,75,48,6,32,0,59,0,14,0,67,17,33,0,76,48,0,9,32,0,75,0,14,0,65,17,17,32,0,56,32,0,10,0,150,27,16,6,32,0,52,0,28,0,11,0,20,21,0,66,17,0,11,32,0,50,0,29,16,17,0,28,0,54,0,1,27,16,0,0,0,66,17,0,32,0,53,32,0,49,27,0,55,34,0,76,0,2,0,67,17,0,6,34,0,75,17,27,16,33,0,77,48,6,34,0,67,0,44,0,32,26,33,0,63,50,6,32,0,55,0,35,0,53,32,0,56,27,0,55,32,0,74,0,8,16,27,16,33,0,78,48,6,32,0,56,0,32,32,0,74,17,0,44,0,35,26,32,0,42,17,33,0,79,48,6,32,0,69,0,32,32,0,74,17,0,14,0,67,17,33,0,80,48,6,32,1,28,0,36,16,0,1,32,0,1,17,0,35,0,53,34,0,56,27,0,55,0,1,0,53,32,0,72,27,0,2,34,0,69,0,11,0,65,17,21,0,0,0,20,21,27,16,0,33,0,65,0,71,0,68,0,74,11,4,17,33,0,81,48,6,32,1,28,0,36,16,0,0,0,71,17,0,14,32,0,1,17,0,9,0,71,0,14,32,0,3,17,0,35,32,0,31,17,17,0,0,33,0,81,50,6,34,0,81,0,54,0,14,27,32,1,40,0,51,0,8,27,34,0,39,21,0,35,32,0,52,0,50,0,0,26,0,61,17,21,33,0,82,48,6,32,1,28,32,1,25,32,0,1,17,0,11,32,0,78,17,0,32,16,33,0,83,48,6,0,66,32,0,82,16,33,0,84,48,6,0,71,34,0,82,0,52,0,20,0,2,0,67,21,0,6,0,19,21,27,0,67,17,33,0,85,48,0,0,0,53,0,11,0,53,0,65,27,0,10,32,0,84,21,27,16,33,0,86,48,6,32,0,84,0,32,32,0,49,17,0,11,32,0,73,17,0,11,32,0,63,17,0,10,32,0,86,0,32,32,0,49,17,0,11,32,0,60,17,17,32,0,46,0,51,0,32,27,0,22,0,65,21,0,32,32,0,49,21,32,0,10,0,151,27,16,6,32,0,86,0,32,0,53,32,0,49,27,0,55,34,0,60,27,16,33,0,86,49,0,44,0,1,26,0,66,17,0,6,33,0,85,50,6,32,0,84,0,32,0,53,32,0,49,27,0,55,0,6,0,53,34,0,73,27,27,16,33,0,84,49,6,32,0,86,0,36,16,0,11,0,65,17,32,0,1,0,51,1,21,27,0,32,20,32,0,10,0,152,27,16,6,32,0,84,0,12,32,0,53,17,0,11,34,0,50,0,32,0,53,32,0,49,27,0,55,34,0,63,0,8,16,27,16,0,10,0,53,0,29,27,16,17,0,26,0,66,17,32,0,46,0,32,20,32,0,10,0,153,27,16,6,32,0,84,0,2,0,71,17,0,0,0,65,0,67,0,71,11,3,0,35,32,0,85,17,17,33,0,87,48,6,32,0,84,0,32,32,0,49,17,0,8,16,0,2,0,71,17,0,35,34,0,61,0,50,0,0,26,16,0,29,16,17,0,1,33,0,72,50,6,32,0,3,0,35,0,53,32,0,31,0,35,32,0,40,17,27,0,55,34,0,86,0,32,32,0,52,17,0,26,0,66,17,27,16,0,2,32,0,23,17,0,44,0,1,26,32,0,21,17,33,0,3,49,6,32,0,23,0,9,34,0,24,17,33,0,88,48,6,0,65,0,11,32,0,3,17,0,44,0,22,26,0,66,17,0,35,32,0,30,17,33,0,89,48,0,29,16,0,9,32,0,88,17,33,0,90,48,6,32,0,3,0,35,32,0,90,0,8,16,32,1,38,16,17,0,2,32,0,90,17,0,0,32,0,3,17,0,20,0,15,0,67,21,0,11,32,0,89,21,0,1,0,20,21,0,6,0,20,0,14,0,71,21,0,2,34,0,89,0,0,0,66,17,21,0,44,0,22,26,0,65,21,0,35,34,0,30,21,21,16,33,0,91,48,6,32,0,91,0,35,0,0,0,6,0,66,21,0,5,0,20,21,34,0,90,0,8,16,0,50,0,0,26,16,0,54,0,20,0,1,0,35,21,27,21,0,65,0,14,32,0,91,17,0,9,32,0,88,17,0,8,16,32,1,38,16,17,0,6,33,0,91,50,6,32,0,91,0,29,16,0,2,34,0,88,17,0,0,33,0,3,50,6,32,0,25,0,14,0,66,17,0,9,32,0,91,0,13,0,65,17,17,0,10,33,0,26,50,0,8,16,0,2,33,0,25,50,6,32,0,25,0,1,32,0,25,0,14,0,65,17,0,2,32,0,91,17,17,33,0,91,49,6,0,61,0,14,32,0,3,17,0,29,0,66,17,0,9,0,80,0,14,32,0,3,17,17,0,1,33,0,3,50,6,0,65,0,14,32,0,3,17,0,29,16,0,12,0,70,0,14,32,0,3,17,17,32,0,31,0,51,0,33,27,32,0,10,0,154,27,16,6,34,0,19,0,20,0,1,0,8,0,54,0,2,27,21,33,0,3,50,6,32,1,34,0,1,32,0,1,17,33,0,92,48,6,34,0,35,0,49,1,22,26,16,6,32,0,13,0,44,0,35,26,33,0,1,50,6,34,0,55,0,35,32,0,13,17,33,0,93,48,6,32,0,36,0,44,0,35,26,33,0,3,50,6,32,0,36,0,44,0,35,26,33,0,91,50,6,34,0,21,0,12,34,0,22,17,0,35,32,0,36,17,0,32,16,0,22,34,0,41,0,33,16,0,35,32,0,38,17,33,0,94,48,17,33,0,38,49,6,32,0,1,0,35,34,0,94,17,0,44,0,1,26,32,1,16,0,36,16,0,0,0,68,17,17,0,44,0,22,26,32,0,37,0,46,0,65,26,16,17,33,0,95,48,6,32,0,3,0,72,0,54,0,15,27,0,9,0,11,0,53,0,81,27,21,16,33,0,96,48,6,0,65,0,11,32,0,3,17,0,11,32,0,96,17,33,0,97,48,6,32,0,97,0,29,16,32,1,38,16,0,44,0,35,26,32,0,91,17,33,0,98,48,0,15,0,66,17,33,0,99,48,6,32,0,91,0,1,16,0,6,0,65,17,33,0,100,48,6,32,0,98,0,1,16,0,6,0,65,17,33,0,101,48,6,32,0,13,33,0,27,49,6,32,0,36,0,44,0,35,26,33,0,26,50,6,32,0,96,0,2,32,0,101,17,32,0,28,0,155,26,16,6,32,1,27,0,14,32,0,1,17,0,2,32,0,101,17,32,0,28,0,156,26,16,6,0,67,0,16,32,0,3,17,0,9,0,67,0,11,32,0,98,17,17,33,0,102,48,0,11,32,0,93,17,0,32,16,0,30,16,33,0,103,48,6,0,71,0,14,32,0,3,17,33,0,104,48,0,9,32,0,102,17,0,28,16,0,10,32,0,102,17,33,0,105,48,6,0,67,0,27,16,0,39,32,0,3,17,0,10,32,0,105,17,0,16,32,0,104,17,0,2,0,67,17,0,6,32,0,100,17,0,29,0,2,34,0,104,21,0,6,0,28,21,0,67,17,0,2,32,0,102,17,32,0,28,0,157,26,16,6,32,1,26,0,14,32,0,1,17,33,0,106,48,6,32,1,16,0,36,16,0,0,0,67,17,32,1,14,0,36,16,0,0,0,66,17,11,2,0,39,32,0,1,17,33,0,107,48,6,32,1,16,0,36,16,0,0,0,70,17,0,44,34,0,17,26,32,0,1,17,33,0,108,48,32,1,38,0,52,0,11,27,32,0,107,17,0,9,32,0,106,17,33,0,109,48,6,0,65,0,14,32,0,3,17,0,11,0,53,0,10,0,53,0,29,27,27,32,0,105,17,0,28,0,54,0,9,27,16,32,0,13,32,0,10,0,158,27,16,6,32,1,15,0,36,16,0,0,0,67,17,0,14,32,0,1,17,33,0,110,48,6,0,66,0,16,34,0,91,17,0,28,16,0,9,32,0,110,17,0,11,32,0,99,17,33,0,111,48,6,32,0,97,0,29,0,66,17,0,9,33,0,110,50,6,32,0,110,0,11,32,0,111,17,32,0,13,32,0,10,0,159,27,16,6,32,0,111,0,10,32,0,105,17,0,8,16,0,30,0,55,32,1,37,0,1,0,19,21,0,53,0,13,0,51,0,27,27,27,27,16,33,0,112,48,6,32,0,96,0,32,16,33,0,113,48,0,0,0,53,32,0,112,0,54,0,35,27,27,16,0,0,0,66,17,33,0,114,48,6,32,0,3,0,35,32,0,113,17,0,13,0,80,17,33,0,115,48,6,32,0,3,0,35,32,0,114,17,33,0,116,48,6,32,0,98,0,35,32,0,114,17,0,6,0,65,17,0,13,32,0,116,17,0,9,32,0,115,17,32,0,13,0,35,32,0,114,21,32,0,10,0,160,27,16,6,32,0,1,0,35,32,0,113,17,0,44,0,1,26,32,1,15,0,36,16,17,0,0,32,0,111,0,35,32,0,113,17,17,0,0,34,0,116,0,15,0,65,17,17,0,0,32,0,115,17,33,0,117,48,6,32,0,79,0,22,33,0,114,50,6,32,0,1,0,46,0,65,26,16,0,35,0,53,32,0,114,27,0,55,32,0,79,0,46,0,74,26,16,0,22,32,0,117,17,27,16,0,1,0,53,0,28,27,16,33,0,118,48,6,32,0,118,0,35,32,0,42,17,0,2,0,53,0,50,0,0,26,0,14,0,65,21,0,10,0,53,0,29,0,53,0,66,27,27,20,27,16,0,50,0,0,26,16,0,29,16,33,0,118,49,0,35,32,0,13,17,33,0,119,48,0,2,16,33,0,120,48,6,32,0,100,0,14,0,67,17,0,9,32,0,120,17,33,0,121,48,0,9,32,1,18,0,36,16,0,14,32,0,1,17,17,0,32,16,33,0,122,48,6,32,0,109,0,10,32,0,108,17,0,29,16,0,10,34,0,23,0,8,16,0,35,34,0,36,17,17,0,2,32,0,100,17,0,2,32,0,121,0,8,16,17,34,0,28,0,161,26,16,6,32,0,97,0,28,0,66,17,0,9,32,1,16,0,36,16,0,0,0,74,17,0,14,32,0,1,17,17,0,11,32,0,120,17,32,0,13,32,0,10,0,162,27,16,6,32,0,118,0,14,0,74,17,33,0,123,48,0,2,0,71,17,0,1,33,0,118,50,6,32,0,100,0,14,0,66,17,0,2,32,0,120,17,0,6,33,0,26,50,6,32,1,15,0,36,16,0,44,0,1,26,32,1,34,17,0,14,32,0,92,17,0,11,32,0,118,17,32,0,48,16,33,0,124,48,6,32,0,26,0,35,32,0,42,17,34,0,48,16,33,0,125,48,6,32,0,31,0,35,32,0,54,17,0,22,0,65,17,0,44,0,1,26,0,66,17,1,23,16,6,32,0,125,33,0,126,48,6,32,0,52,32,1,39,0,52,0,16,27,33,0,125,50,6,0,65,0,14,32,0,77,17,0,9,32,0,125,17,0,26,0,66,17,32,0,46,0,32,20,32,0,10,0,164,0,153,11,2,0,56,0,11,0,53,34,0,126,0,26,0,66,17,27,0,49,0,10,26,20,27,27,16,6,32,0,125,0,2,0,67,17,0,6,33,0,77,50,6,32,0,84,0,2,33,0,77,50,6,32,0,77,0,14,0,67,17,0,35,32,0,47,17,0,35,32,0,13,17,33,0,127,48,6,32,0,127,0,14,0,1,0,19,21,33,0,100,50,6,34,0,127,0,14,0,1,0,19,21,33,0,101,50,6,32,1,34,0,1,32,0,1,17,32,0,8,0,54,0,11,27,0,9,0,15,0,53,0,82,27,21,16,33,0,128,48,6,32,1,34,0,0,32,0,8,17,0,16,32,0,1,17,0,9,34,0,123,0,35,32,0,13,17,17,33,0,129,48,0,32,16,33,0,130,48,6,32,1,16,32,1,25,0,11,0,36,0,0,0,71,21,0,54,0,14,27,21,32,0,1,17,0,10,32,1,17,0,36,16,0,14,32,0,1,17,0,28,16,0,12,32,0,97,17,17,0,10,34,0,129,17,0,10,34,0,128,17,0,11,0,65,0,16,32,0,3,17,0,9,32,0,120,17,0,28,16,0,11,32,0,97,17,0,11,32,0,93,17,17,33,0,131,48,6,32,0,120,0,11,34,0,121,0,10,34,0,131,17,0,10,32,0,96,17,17,32,0,13,32,0,10,0,165,27,16,6,32,0,120,0,35,32,0,113,17,0,11,0,67,0,14,34,0,117,17,0,9,34,0,119,0,35,32,0,113,17,0,13,0,68,17,17,17,32,0,13,0,35,32,0,113,21,32,0,10,0,166,27,16,6,32,0,120,0,12,0,53,0,29,27,16,0,9,32,0,3,0,15,0,65,17,17,0,9,32,0,98,0,11,0,65,17,17,0,11,32,0,93,17,32,0,13,32,0,10,0,167,27,16,6,32,0,120,0,35,32,0,113,17,33,0,132,48,0,12,33,0,115,50,6,32,0,113,0,32,34,0,132,17,33,0,133,48,6,32,0,108,32,1,38,0,52,0,11,27,32,1,16,0,36,16,0,14,32,0,1,17,0,10,32,0,107,17,17,0,35,32,0,133,17,0,8,16,32,0,13,0,35,32,0,133,21,32,0,10,0,168,27,16,6,32,0,115,0,44,0,32,26,33,0,113,50,6,32,0,79,0,46,0,66,26,16,0,22,34,0,115,17,0,44,0,32,26,33,0,114,50,6,34,0,18,0,29,16,33,0,134,48,0,32,16,33,0,135,48,6,32,0,92,32,0,8,0,54,0,11,27,0,9,0,15,0,53,0,65,27,21,16,0,11,34,0,96,0,9,32,0,120,17,0,28,16,0,35,32,0,42,17,0,10,34,0,134,17,0,10,34,0,78,17,17,0,32,16,33,0,136,48,6,32,0,118,0,35,32,0,83,17,33,0,137,48,0,11,0,65,17,33,0,138,48,6,0,67,0,67,11,2,32,1,25,34,0,118,0,35,32,0,136,17,33,0,139,48,17,33,0,140,48,6,0,70,0,11,34,0,137,17,0,9,32,0,138,17,32,0,83,32,0,10,0,169,27,16,6,32,0,47,0,35,32,0,136,17,33,0,141,48,6,32,0,92,0,35,32,0,136,17,33,0,142,48,6,32,0,7,0,13,16,0,11,32,0,142,17,0,9,32,0,141,0,14,0,65,17,17,0,9,32,0,140,17,33,0,143,48,6,32,0,7,0,35,32,0,142,0,32,32,0,143,17,17,33,0,144,48,0,14,0,65,17,32,0,136,0,32,32,0,143,21,32,0,10,0,170,27,16,6,32,0,140,0,32,0,53,34,0,143,27,0,55,34,0,144,0,15,0,65,17,27,16,33,0,140,49,6,0,65,0,15,32,0,7,17,0,32,16,33,0,145,48,0,46,0,65,26,16,33,0,146,48,6,32,0,142,0,32,32,0,140,17,33,0,147,48,0,22,32,0,145,17,0,41,32,0,87,0,13,16,0,22,32,0,141,0,32,32,0,140,17,33,0,148,48,17,0,22,32,0,146,17,33,0,149,48,17,33,0,150,48,6,32,0,34,0,35,34,0,54,17,0,44,0,1,26,0,66,17,0,22,32,0,1,0,13,16,17,0,35,32,0,148,17,0,22,34,0,34,0,32,34,0,46,17,0,22,0,61,17,0,35,34,0,141,17,0,0,32,0,139,0,14,0,66,17,17,17,33,0,151,48,6,32,0,151,0,33,16,0,35,0,53,32,0,147,0,22,32,0,142,17,33,0,152,48,0,54,0,35,27,0,33,20,27,16,33,0,153,48,6,32,0,153,0,32,0,53,0,15,0,53,32,0,140,0,13,16,27,27,16,1,24,16,6,32,0,153,0,35,34,0,147,0,46,0,61,26,16,0,22,32,0,140,17,0,35,32,0,153,17,0,50,0,0,26,16,33,0,154,48,0,33,16,17,0,32,0,53,32,0,140,0,13,16,0,54,0,11,27,27,16,33,0,153,49,6,32,0,153,0,44,0,35,26,33,0,140,50,6,32,0,153,0,44,0,35,26,33,0,136,50,6,32,0,153,0,44,0,35,26,33,0,139,50,6,34,0,154,0,11,0,65,17,0,10,0,53,0,29,27,16,0,8,16,0,49,0,0,26,16,33,0,155,48,6,34,0,142,0,35,32,0,153,0,25,32,0,155,17,17,33,0,156,48,6,32,0,7,0,13,16,0,16,32,0,156,17,32,0,136,0,25,32,0,155,21,32,0,10,32,0,156,0,54,0,32,27,0,40,20,32,1,30,0,171,21,27,16,6,32,0,139,0,11,0,65,17,33,0,157,48,0,9,0,71,0,11,34,0,139,17,17,33,0,158,48,6,34,0,33,0,35,32,0,136,17,0,35,0,53,32,0,140,32,1,38,16,0,26,32,0,155,17,27,0,22,34,0,7,0,6,0,65,17,0,1,16,33,0,159,48,0,35,32,0,156,17,21,0,1,0,20,21,16,33,0,160,48,6,32,0,160,0,11,0,65,17,0,9,32,0,158,17,32,0,136,32,0,10,0,172,27,16,6,34,0,158,32,1,40,0,26,0,66,21,0,16,0,32,21,32,0,140,17,33,0,161,48,0,35,34,0,153,0,32,32,0,140,17,0,33,16,33,0,162,48,17,0,22,34,0,146,17,0,41,34,0,149,17,33,0,163,48,6,34,0,148,0,22,34,0,159,17,0,38,0,0,32,0,87,0,54,0,35,27,21,16,0,20,0,26,0,53,0,13,27,34,0,145,21,0,35,0,53,0,33,27,34,0,162,21,0,35,32,0,140,0,26,34,0,155,17,0,50,0,0,26,0,61,17,21,0,22,0,35,0,53,34,0,156,27,21,16,33,0,164,48,6,32,0,160,0,11,0,65,17,32,1,40,0,11,34,0,161,0,22,0,66,17,21,0,35,0,53,0,50,0,0,26,27,0,19,21,32,0,140,17,0,9,32,0,140,0,28,0,66,17,0,11,32,0,157,17,17,33,0,165,48,6,32,0,92,0,35,32,0,83,17,0,0,0,71,17,0,0,32,0,84,0,2,0,71,17,0,35,32,0,47,0,35,32,0,83,17,33,0,166,48,17,17,33,0,167,48,6,34,0,166,0,2,0,74,17,0,0,32,0,167,17,0,30,0,55,0,39,27,16,0,22,33,0,165,50,6,0,66,0,1,32,0,79,17,0,44,0,35,26,32,0,13,17,0,0,0,66,17,32,0,135,32,0,83,0,22,32,0,136,17,11,3,0,32,0,71,0,67,0,71,11,3,17,0,22,16,33,0,168,48,6,34,0,138,0,22,34,0,157,17,0,12,0,2,0,67,21,0,0,0,20,21,34,0,165,17,0,0,0,83,17,33,0,169,48,6,32,0,79,0,46,0,83,26,16,32,0,79,0,46,0,65,26,16,34,0,72,0,32,34,0,74,17,32,0,135,0,46,0,79,26,16,34,0,92,0,35,34,0,135,17,34,0,169,34,0,83,0,46,0,65,26,16,0,22,34,0,160,17,34,0,167,0,22,34,0,164,17,11,8,33,0,170,48,6,32,0,105,0,8,16,0,50,0,0,26,16,32,1,37,0,1,0,20,21,32,0,97,17,0,7,0,10,0,12,21,0,67,17,0,9,32,0,99,17,33,0,171,48,6,34,0,102,0,29,16,0,10,0,66,0,14,32,0,3,17,17,33,0,172,48,0,11,32,0,120,0,11,32,0,97,17,0,10,0,53,0,28,27,16,0,10,32,0,105,17,0,10,34,0,171,17,0,10,32,0,93,17,33,0,173,48,17,0,32,16,33,0,174,48,6,34,0,172,0,10,34,0,173,17,0,12,32,0,99,17,32,0,13,32,0,10,0,173,27,16,6,0,65,0,14,32,0,3,17,0,11,32,0,105,17,0,10,0,65,0,16,32,0,3,17,0,9,34,0,99,17,17,0,8,16,0,2,0,67,17,0,6,34,0,100,17,0,28,0,67,17,0,35,32,0,174,17,33,0,175,48,0,13,0,67,17,33,0,176,48,6,32,1,26,0,11,32,0,1,17,0,11,34,0,93,17,0,32,16,33,0,177,48,0,44,0,35,26,32,0,1,17,33,0,178,48,0,9,16,0,40,16,33,0,179,48,0,29,0,1,0,20,21,0,61,17,0,32,16,0,35,34,0,178,17,33,0,180,48,6,34,0,8,0,0,32,1,34,17,33,0,181,48,0,16,32,0,1,17,0,32,16,33,0,182,48,0,22,34,0,177,17,33,0,183,48,6,32,0,1,0,35,34,0,182,17,0,0,32,0,179,0,13,16,0,44,0,1,26,34,0,181,17,17,0,22,33,0,180,50,6,34,0,42,0,35,34,0,40,17,33,0,184,48,6,0,65,0,22,32,0,109,17,0,50,0,0,26,16,0,32,0,66,0,22,32,0,108,17,17,0,26,0,66,17,0,29,0,54,0,1,27,16,0,0,34,0,97,0,28,0,66,17,0,32,34,0,108,17,0,8,16,17,0,44,0,22,26,34,0,37,17,33,0,185,48,6,0,81,0,14,32,0,3,17,0,29,16,0,10,34,0,109,17,0,10,32,0,101,0,14,0,67,17,17,0,12,34,0,106,17,0,32,16,0,22,32,0,79,0,32,0,53,0,8,27,32,0,80,17,17,33,0,186,48,6,34,0,107,0,32,16,33,0,187,48,6,32,1,27,0,14,32,0,1,17,0,32,16,33,0,188,48,6,32,0,176,0,0,32,0,174,17,0,0,0,53,32,0,112,0,54,0,35,27,0,2,32,0,176,21,27,16,33,0,189,48,6,32,0,189,0,32,34,0,101,0,35,32,0,174,17,33,0,190,48,0,14,0,67,17,33,0,191,48,0,2,32,0,176,0,0,0,66,17,17,17,0,22,33,0,186,50,6,32,0,191,0,8,16,33,0,191,49,6,32,0,191,0,44,0,32,26,33,0,174,50,6,32,0,191,0,44,0,32,26,33,0,189,50,6,34,0,80,0,1,16,0,22,34,0,110,0,0,32,0,111,17,0,0,32,0,1,17,0,35,32,0,113,17,0,44,0,1,26,32,1,15,0,36,16,0,0,0,66,17,17,0,6,0,65,17,17,0,0,0,84,17,33,0,192,48,6,32,0,183,32,0,183,32,0,184,32,0,184,32,0,130,32,0,122,32,0,38,0,32,0,67,17,32,0,114,32,0,186,32,0,188,0,66,0,0,32,0,133,17,0,66,0,0,32,0,133,17,34,0,112,0,35,32,0,103,17,0,6,0,66,17,0,0,32,0,103,17,34,0,189,32,0,187,11,15,33,0,193,48,0,22,16,0,44,0,35,26,32,0,13,17,0,22,32,0,168,17,33,0,194,48,0,33,16,33,0,195,48,6,34,0,183,0,46,0,65,26,16,34,0,180,32,0,184,0,46,0,66,26,16,34,0,184,0,13,16,0,27,16,0,0,0,66,17,34,0,130,0,46,0,85,26,16,34,0,122,0,46,0,86,26,16,34,0,185,0,23,34,0,120,0,35,34,0,38,17,0,0,34,0,95,17,0,0,0,62,17,17,0,31,16,0,21,16,34,0,192,34,0,186,0,46,0,74,26,16,34,0,188,0,46,0,87,26,16,32,0,133,0,46,0,88,26,16,34,0,1,0,35,0,66,0,1,34,0,133,17,17,0,44,0,1,26,32,1,34,17,34,0,3,0,35,32,0,103,17,0,0,0,89,17,34,0,98,0,35,32,0,174,17,0,11,0,65,17,0,2,0,70,17,0,0,34,0,175,0,14,0,66,17,0,6,34,0,190,17,0,2,0,67,17,0,0,34,0,176,17,0,32,34,0,191,17,17,0,0,0,90,17,32,0,124,0,0,0,75,17,33,0,196,48,0,26,0,61,17,11,15,0,22,34,0,170,17,0,22,16,0,35,32,0,195,17,33,0,197,48,6,34,0,193,0,46,0,13,26,16,0,22,34,0,168,0,13,16,17,0,35,0,46,0,27,0,54,0,0,27,26,0,50,0,0,26,0,29,20,0,54,0,35,27,21,0,69,0,60,0,91,11,3,17,33,0,198,48,6,34,0,194,0,35,0,53,32,0,198,0,22,16,27,0,55,34,0,113,34,0,79,11,2,0,46,0,13,26,16,0,44,0,32,26,0,66,0,65,11,2,17,0,1,34,0,114,17,34,0,103,32,0,174,11,3,0,22,16,0,44,0,35,26,32,0,13,17,27,16,33,0,199,48,6,32,0,5,32,0,6,11,2,0,46,0,35,0,53,0,35,0,53,32,0,195,27,0,44,0,22,26,0,61,21,27,26,32,0,199,34,0,199,0,35,0,53,34,0,198,0,36,0,61,17,27,0,55,34,0,111,0,10,34,0,105,17,0,8,16,0,29,16,32,1,38,16,0,35,34,0,174,17,0,44,0,35,26,32,0,13,17,27,16,11,2,17,33,0,200,48,6,32,0,49,0,32,0,53,34,0,49,27,0,55,32,0,59,27,16,33,0,59,49,0,11,0,65,17,0,10,32,0,77,0,13,0,66,17,0,9,32,0,84,17,17,0,10,33,0,53,50,6,32,0,53,0,32,16,33,0,201,48,0,44,0,35,26,34,0,77,17,33,0,202,48,0,14,0,66,17,0,0,0,66,17,33,0,203,48,0,32,16,33,0,204,48,6,34,0,202,0,11,0,66,17,0,0,34,0,59,0,35,32,0,201,17,0,2,0,67,17,17,0,5,0,70,17,33,0,205,48,6,32,0,52,0,35,32,0,201,17,33,0,206,48,0,50,0,0,26,0,61,17,33,0,207,48,6,32,0,205,0,0,34,0,203,17,0,35,0,53,0,34,0,51,0,35,0,53,32,0,207,0,54,0,35,27,0,33,20,0,32,34,0,206,21,27,27,27,16,0,6,32,0,84,0,32,32,0,53,0,9,32,0,52,17,17,0,8,16,0,1,0,67,17,17,33,0,208,48,6,32,0,201,0,35,32,0,204,17,0,41,32,0,208,0,50,0,0,26,16,0,22,0,65,17,0,26,0,35,34,0,207,21,0,0,34,0,205,21,0,35,0,0,0,19,0,51,0,38,27,21,34,0,204,21,0,44,0,22,26,0,25,21,0,61,17,17,0,41,0,53,0,32,27,34,0,208,17,33,0,201,49,6,34,0,85,0,32,32,0,52,17,34,0,84,0,8,16,0,32,32,0,52,17,32,0,52,0,32,16,0,32,0,53,34,0,53,0,32,34,0,52,17,27,0,55,34,0,201,27,16,11,3,33,0,209,48,6,34,0,187,0,13,0,52,0,1,27,32,0,197,17,0,16,34,0,195,17,0,22,0,66,17,0,32,16,32,0,150,0,46,0,13,26,16,0,0,34,0,87,17,34,0,150,34,0,163,11,4,33,0,210,48,6,34,0,196,0,36,0,61,17,0,22,34,0,197,17,34,0,179,34,0,209,34,0,210,34,0,200,11,5,7,11,0,0,46,0,174,0,51,0,42,27,26,11,0,0,65,0,27,16,11,4,33,0,3,48,6,34,0,2,0,13,0,11,0,70,21,0,58,0,24,27,16,0,43,34,0,3,26,0,26,0,13,21,0,54,0,22,27,16,33,0,4,33,0,5,33,0,6,33,0,7,12,4,48,6,34,0,1,32,1,41,34,0,5,32,0,6,11,2,17,33,0,8,48,33,0,9,33,0,10,33,0,11,33,0,12,33,0,13,12,5,48,6,34,0,9,32,1,43,34,0,10,32,0,11,0,36,16,34,0,12,34,0,13,34,0,6,0,46,0,65,26,16,0,29,34,0,7,17,11,5,17,33,0,14,33,0,15,33,0,16,33,0,17,33,0,18,12,5,48,6,34,0,14,34,0,11,0,26,0,66,17,0,22,34,0,4,0,35,34,0,15,17,11,1,17,0,22,16,34,0,16,0,12,16,0,31,16,0,45,0,11,26,16,34,0,17,0,12,16,0,31,16,0,45,0,11,26,16,34,0,18,34,0,8,11,6,7,34,0,1,34,0,2,16,7,32,0,1,0,35,0,53,32,0,2,0,32,34,0,1,17,27,0,55,0,46,0,66,26,27,16,32,1,13,34,0,2,0,44,0,35,26,16,17,7,34,0,1,0,32,16,0,36,16,0,117,11,2,0,42,16,7,34,0,1,0,22,0,65,17,0,35,0,53,0,50,0,0,26,27,32,1,31,17,0,9,32,1,32,17,0,32,16,0,118,11,2,0,42,16,7,32,1,26,0,32,34,0,1,17,0,119,11,2,0,42,16,7,32,1,26,0,32,34,0,1,17,0,120,11,2,0,42,16,7,34,0,2,0,32,34,0,1,17,0,44,0,35,26,32,1,26,17,0,121,11,2,0,42,16,7,32,0,2,0,44,0,32,26,33,1,26,50,6,32,0,2,0,44,0,32,26,33,1,25,50,6,34,0,1,0,32,34,0,2,17,7,0,49,0,10,26,0,58,34,0,1,0,24,34,0,2,0,54,0,32,27,21,0,42,20,27,7,32,0,1,0,54,0,36,27,33,0,3,48,6,0,26,0,25,11,2,0,46,1,25,26,16,33,0,4,33,0,5,12,2,48,6,0,36,0,55,0,26,0,53,0,61,27,27,0,24,20,33,0,6,48,6,0,46,0,25,26,0,30,20,0,46,0,22,26,0,46,0,26,26,21,0,53,0,61,0,65,11,2,27,33,0,7,48,6,1,26,33,0,8,48,6,32,2,16,32,2,25,34,0,1,17,0,32,16,0,30,16,0,49,0,46,34,0,8,26,0,22,20,0,32,0,53,0,46,0,36,26,0,39,20,27,20,0,25,0,53,0,13,0,5,0,79,21,27,20,26,0,65,0,27,16,0,44,0,24,26,16,0,24,16,17,0,46,0,22,26,16,0,36,0,53,0,46,0,13,26,0,49,0,5,26,0,37,0,20,21,0,36,20,20,27,16,33,0,9,48,6,0,66,32,0,9,32,1,10,34,0,9,32,2,30,0,130,17,27,16,7,0,14,0,58,0,49,0,10,26,27,0,58,34,0,1,0,24,34,0,2,0,54,0,32,27,0,44,0,66,0,57,0,35,27,26,0,43,32,1,6,26,0,23,32,1,5,21,21,0,31,0,51,0,9,27,20,21,0,42,20,27,7,32,1,15,0,22,0,65,17,0,32,32,0,1,17,0,12,32,2,16,0,36,16,0,0,0,70,17,17,32,1,13,0,22,0,65,21,0,32,34,0,1,21,32,1,10,0,135,27,16,7,34,0,1,0,6,33,1,26,50,0,14,0,67,17,32,1,27,32,1,10,34,0,4,27,16,7,32,2,28,32,2,25,34,0,1,17,0,9,32,1,47,0,14,0,65,17,17,7,32,1,5,0,35,0,53,32,0,1,27,0,55,32,1,5,0,35,32,0,2,17,27,16,33,1,5,49,6,32,1,6,0,35,0,53,34,0,2,27,0,55,32,1,6,0,35,34,0,1,17,27,16,33,1,6,49,7,32,1,25,0,35,32,0,1,17,0,2,0,53,0,8,27,32,1,124,17,0,6,33,1,125,50,0,14,0,67,17,32,1,31,0,51,0,33,27,0,35,34,0,1,21,32,1,10,0,163,27,16,7,32,1,151,0,35,0,53,32,0,1,27,0,13,0,53,0,29,27,20,0,52,0,10,27,32,1,152,17,0,8,16,32,1,136,0,32,0,53,32,1,140,27,0,54,0,22,27,20,0,35,34,0,1,21,32,1,10,0,170,27,16,7,0,44,0,24,34,0,1,20,0,54,0,46,0,22,26,27,26,0,24,20,7,34,0,1,32,1,4,32,1,5,0,20,32,1,6,20,32,1,7,0,54,34,0,0,27,0,22,32,1,5,21,11,2,0,56,0,36,0,36,0,61,21,0,54,32,1,3,0,52,0,1,27,27,0,13,0,66,21,27,11,2,0,56,0,20,0,51,0,36,0,51,0,13,27,27,0,11,0,65,21,27,11,2,0,56,32,1,3,0,7,0,67,21,27,34,0,2,19,7] + ,[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[18],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[52],runtime[53],runtime[54],runtime[55],runtime[56],runtime[57],runtime[59],runtime[60],runtime[62],10,13,-1,11,26,9,0,1,2,5,8,4,3,-3,-2,6,7,17,Math.PI,Infinity,64,-4,-5,-6,32,48,43,44,42,66,24,16,14,'\0','0','#','\'','\"','@',str("⋄,"),str(":;?"),str("⇐←↩"),str("(){}⟨⟩[]"),str("‿"),str("·"),str("𝕊𝕏𝕎𝔽𝔾𝕤𝕩𝕨𝕣𝕗𝕘"),str(".¯π∞"),str("_"),str("aA"),str("•"),str("𝕨"),str(" "),str("#\'\"@"),str("s"),str("Unknown character"),str(": "),str("Character set conflict: "),str("˜⁼"),str("Unclosed quote"),str("Words can\'t only have underscores"),str("System dot with no name"),str("𝕣 can\'t be used with other word characters"),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("Unmatched bracket"),str("Empty program"),str("Swapped open and closed brackets"),str("Parentheses can\'t contain separators"),str("Predicates can\'t be placed inside lists"),str("Empty statement or expression"),str("Invalid assignment or stranding use"),str("Can\'t use export statement as predicate"),str("Dot must be followed by a name"),str("Punctuation : ; ? not allowed outside blocks"),str("Header-less bodies must come last"),str("At most two header-less bodies allowed"),str("Invalid Undo header syntax"),str("Only one header per body allowed"),str("Missing operand in header"),str("Invalid header structure"),str("Incorrect special name"),str("Header left argument without right"),str("Header operation must be a plain name"),str("Header with ⁼ must take arguments"),str("Header with ˜⁼ must have left argument"),str("Block header type conflict"),str("Special name outside of any block"),str("Unreachable body"),str("Dot must be preceded by a subject"),str("Nothing (·) cannot be assigned"),str("Can\'t use Nothing (·) as predicate"),str("Missing operand"),str("Double subjects (missing ‿?)"),str("No right-hand side in non-modified assignment"),str("Role of the two sides in assignment must match"),str("Can\'t use Nothing (·) in lists"),str("Square brackets can\'t be empty"),str("Can\'t return Nothing (·)"),str("Invalid use of 𝕨 in monadic case"),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("Aliases can only appear in ⟨⟩ bracketed lists"),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("System values not supported")] ,[[0,1,0],[0,0,1],[1,0,2],[1,1,3],[0,0,[[],[4]]],[0,0,[[],[5]]],[0,0,[[],[6]]],[0,0,[[],[7]]],[0,0,[[],[8]]],[0,0,[[],[9]]],[0,0,10],[0,0,11],[0,0,12],[0,0,13],[0,0,[[],[14]]],[0,0,[[],[15]]],[2,1,16],[0,0,17],[2,1,18],[0,0,19],[1,0,20],[0,0,21],[0,0,[[],[22]]],[0,0,23],[0,0,24],[0,0,25],[0,0,26]] - ,[[0,0],[3,45],[613,5],[632,6],[803,58],[3019,23],[3844,211],[12528,19],[12766,3],[12774,3],[12814,3],[12831,3],[12870,3],[12887,3],[12904,3],[12930,3],[12966,3],[12992,10],[13213,3],[13275,3],[13325,5],[13351,3],[13373,3],[13431,3],[13484,3],[13546,3],[13567,3]] + ,[[0,0],[3,45],[613,5],[632,6],[803,58],[3019,23],[3844,211],[12629,19],[12867,3],[12875,3],[12915,3],[12932,3],[12971,3],[12988,3],[13005,3],[13031,3],[13067,3],[13093,10],[13314,3],[13376,3],[13426,5],[13452,3],[13474,3],[13532,3],[13585,3],[13647,3],[13668,3]] ); let compgen = sys => { let gl = sys.glyphs, rt = sys.runtime; diff --git a/docs/spec/grammar.html b/docs/spec/grammar.html index c7212568..def88721 100644 --- a/docs/spec/grammar.html +++ b/docs/spec/grammar.html @@ -63,7 +63,7 @@ LHS_ENTRY= LHS_ELT | lhs "⇐" NAME lhsStr = LHS_ATOM ( "‿" LHS_ATOM )+ lhsList = "⟨" ? ( ( LHS_ENTRY )* LHS_ENTRY ? )? "⟩" -lhsArray = "[" ? ( LHS_ELT )* LHS_ELT ? "]" +lhsArray = "[" ? ( ( LHS_ELT )* LHS_ELT ? )? "]" lhsComp = LHS_SUB | lhsStr | "(" lhs ")" lhs = s | lhsComp
    diff --git a/spec/grammar.md b/spec/grammar.md index acb00ef5..ab29d32f 100644 --- a/spec/grammar.md +++ b/spec/grammar.md @@ -68,7 +68,7 @@ The target of subject assignment can be compound to allow for destructuring. Lis LHS_ENTRY= LHS_ELT | lhs "⇐" NAME lhsStr = LHS_ATOM ( "‿" LHS_ATOM )+ lhsList = "⟨" ⋄? ( ( LHS_ENTRY ⋄ )* LHS_ENTRY ⋄? )? "⟩" - lhsArray = "[" ⋄? ( LHS_ELT ⋄ )* LHS_ELT ⋄? "]" + lhsArray = "[" ⋄? ( ( LHS_ELT ⋄ )* LHS_ELT ⋄? )? "]" lhsComp = LHS_SUB | lhsStr | "(" lhs ")" lhs = s | lhsComp diff --git a/src/c.bqn b/src/c.bqn index 70dac605..020421b8 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -142,7 +142,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn "Parentheses can't contain separators"_err_(gb/G) ((⊑bB)⊸=»⊸∧pred⊸=∨sep⊸=)gbx←gb/gx BE←=∨+⟜2⊸= # Bracket equals: match ⟨[ or ⟩] given ⟨ or ⟩ only "Predicates can't be placed inside lists"_err_((sep≠GBX)/gb/G) ((4+⊑bB)⊸BE»⊸∧pred⊸=)sep⊸≠⊸/gbx - {"Empty statement or expression"_err_(𝕩/0∾G) (4+⊑bB)≠𝕩/0∾gx}1⊸«⊸∧1∾gb + {"Empty statement or expression"_err_(𝕩/0∾G) (4+⊑bB)>𝕩/0∾gx}1⊸«⊸∧1∾gb dl←«⊸∨dc←r=4 # Dot left r-↩(𝕩=⊑bG)>ec←«dc<0≤r+p # Role ¯4 for exports: ⊑bG is ⇐ "Invalid assignment or stranding use"_err_(↕≠) ((¯4⊸<∧≤⟜¯2)r)>(ec∨𝕩=2+⊑bG)∧»dc<0≤r @@ -258,6 +258,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn aa←×gac←g⊏ac↩»+`(1⊸»⊸∨0=+`)⊸×gi⊏ac # Broadcast ac to the entire target api←/(𝕩=⊑bO)∧ap←aa∧2=no # Assignment placeholder "Can't use Nothing (·) in lists"_nerr (¬ap)×no×(gr⊏¬ns)∨»lo∨ls + "Square brackets can't be empty"_err_(G) aa<(𝕩=6+⊑bB)∧1«ps ac-↩3×ah←6=ac # Assignment is header; 6→3 nx⌈↩aa×1=no # Prevent assignment to 𝕨 if it's · nf←H ac Date: Fri, 17 Jun 2022 11:23:46 -0400 Subject: More disclaimers, now about how you shouldn't avoid K for performance reasons --- docs/implementation/kclaims.html | 4 ++-- implementation/kclaims.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/implementation/kclaims.html b/docs/implementation/kclaims.html index 670187b3..0eb0e756 100644 --- a/docs/implementation/kclaims.html +++ b/docs/implementation/kclaims.html @@ -6,8 +6,8 @@

    Wild claims about K performance

    Sometimes I see unsourced, unclear, vaguely mystical claims about K being the fastest array language. It happens often enough that I'd like to write a long-form rebuttal to these, and a demand that the people who make these do more to justify them.

    -

    This isn't meant to put down the K language! K is in fact the only APL-family language other than BQN that I would recommend without reservations. And there's nothing wrong with the K community as a whole. Go to the k tree and meet them! What I want to fight is the myth of K, which is carried around as much by those who used K once upon a time, and no longer have any connection to it, as by active users.

    -

    The points I argue here are narrow. To some extent I'm picking out the craziest things said about K to argue against. Please don't assume whoever you're talking to thinks these crazy things about K just because I wrote them here. Or, if they are wrong about these topics, that they're wrong about everything. Performance is a complicated and often counter-intuitive field and it's easy to be mislead.

    +

    This isn't meant to put down the K language! K is in fact the only APL-family language other than BQN that I would recommend without reservations. Its C-based implementations certainly aren't slow, and choosing an array language based on performance is usually a bad idea anyway. And there's nothing wrong with the K community as a whole. Go to the k tree and meet them! What I want to fight is the myth of K, which is carried around as much by those who used K once upon a time, and no longer have any connection to it, as by active users.

    +

    The points I argue here are narrow. To some extent I'm picking out the craziest things said about K to argue against. Please don't assume whoever you're talking to thinks these crazy things about K just because I wrote them here. Or, if they are wrong about these topics, that they're wrong about everything. Performance is a complicated and often counter-intuitive field and it's easy to be misled.

    On that note, it's possible I've made mistakes, such as incorrectly designing or interpreting benchmarks. If you present me with concrete evidence against something I wrote below, I promise I'll revise this page to include it, even if I just have to quote verbatim because I don't understand a word of it.

    This page has now been discussed on Hacker News and Lobsters (not really the intention… just try not to be too harsh to the next person who says L1 okay?), and I have amended and added information based on comments there and elsewhere.

    The fastest array language

    diff --git a/implementation/kclaims.md b/implementation/kclaims.md index 41268a3f..9b7d7ecd 100644 --- a/implementation/kclaims.md +++ b/implementation/kclaims.md @@ -4,9 +4,9 @@ Sometimes I see unsourced, unclear, vaguely mystical claims about K being the fastest array language. It happens often enough that I'd like to write a long-form rebuttal to these, and a demand that the people who make these do more to justify them. -This isn't meant to put down the K language! K is in fact the only APL-family language other than BQN that I would recommend without reservations. And there's nothing wrong with the K community as a whole. Go to [the k tree](https://chat.stackexchange.com/rooms/90748/the-k-tree) and meet them! What I want to fight is the *myth* of K, which is carried around as much by those who used K once upon a time, and no longer have any connection to it, as by active users. +This isn't meant to put down the K language! K is in fact the only APL-family language other than BQN that I would recommend without reservations. Its C-based implementations certainly aren't slow, and choosing an array language based on performance is usually a bad idea anyway. And there's nothing wrong with the K community as a whole. Go to [the k tree](https://chat.stackexchange.com/rooms/90748/the-k-tree) and meet them! What I want to fight is the *myth* of K, which is carried around as much by those who used K once upon a time, and no longer have any connection to it, as by active users. -The points I argue here are narrow. To some extent I'm picking out the craziest things said about K to argue against. Please don't assume whoever you're talking to thinks these crazy things about K just because I wrote them here. Or, if they are wrong about these topics, that they're wrong about everything. Performance is a complicated and often counter-intuitive field and it's easy to be mislead. +The points I argue here are narrow. To some extent I'm picking out the craziest things said about K to argue against. Please don't assume whoever you're talking to thinks these crazy things about K just because I wrote them here. Or, if they are wrong about these topics, that they're wrong about everything. Performance is a complicated and often counter-intuitive field and it's easy to be misled. On that note, it's possible *I've* made mistakes, such as incorrectly designing or interpreting benchmarks. If you present me with concrete evidence against something I wrote below, I promise I'll revise this page to include it, even if I just have to quote verbatim because I don't understand a word of it. -- cgit v1.2.3 From ec4a344a90bc82b88514b5c34bbd0119dfc8e6c4 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Fri, 17 Jun 2022 14:02:36 -0400 Subject: Stricter syntax checking for aliases --- docs/bqn.js | 6 +++--- src/c.bqn | 11 ++++++----- test/cases/namespace.bqn | 2 ++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/bqn.js b/docs/bqn.js index ceff315f..672ad3ce 100644 --- a/docs/bqn.js +++ b/docs/bqn.js @@ -475,10 +475,10 @@ let glyph = x => { // Compiler runtime[43] = assertFn("Compiler"); let compgen_raw = run( - [1,1,7,34,0,1,33,0,3,33,0,4,33,0,5,12,3,48,6,0,59,0,60,11,2,0,0,0,92,17,33,0,6,48,6,34,0,3,32,0,4,34,0,5,32,0,6,0,22,0,98,17,0,99,0,100,0,101,0,102,0,103,0,104,0,21,0,62,0,51,11,2,17,0,45,0,35,26,0,61,17,0,105,0,59,0,27,16,0,0,0,93,17,0,63,33,0,7,48,0,27,16,0,47,0,0,26,0,107,17,0,21,16,0,44,0,22,26,0,106,17,0,64,0,0,0,92,17,0,22,0,110,17,0,22,0,109,0,26,0,61,17,17,0,22,0,108,17,0,111,11,15,0,46,0,13,26,0,24,0,22,21,16,33,0,8,33,0,9,12,2,48,6,32,0,9,0,50,0,0,26,0,29,0,65,21,0,54,0,44,0,46,0,24,26,26,27,16,33,0,10,33,0,11,33,0,12,33,0,13,33,0,14,33,0,15,33,0,16,33,0,17,33,0,18,33,0,19,33,0,20,33,0,21,33,0,22,33,0,23,33,0,24,12,15,48,6,0,36,0,54,0,1,27,0,12,0,9,0,15,0,53,0,65,27,21,0,36,0,53,0,66,27,21,33,0,25,48,6,32,0,13,0,36,16,33,0,26,48,6,32,0,14,0,36,16,0,0,0,67,17,33,0,27,48,6,0,68,0,1,0,54,0,24,27,16,0,0,32,0,19,17,33,0,28,48,6,32,0,19,0,36,16,0,0,0,69,17,33,0,29,48,6,0,13,0,11,0,66,21,0,44,0,32,26,0,112,21,0,54,0,22,27,33,0,30,48,6,1,2,33,0,31,48,6,1,3,32,0,8,26,33,0,32,48,6,0,116,0,32,0,53,34,0,4,0,54,0,39,27,27,16,32,0,32,16,33,0,33,48,6,32,0,20,0,36,16,33,0,34,48,0,0,0,66,17,33,0,35,48,6,0,66,0,67,0,71,0,61,0,61,0,72,0,61,0,65,11,2,0,73,0,65,0,68,0,74,11,2,0,32,16,0,8,16,11,10,0,43,34,0,9,26,0,25,0,13,21,0,54,0,44,0,46,0,21,26,26,27,16,0,22,16,0,44,0,22,26,0,70,17,33,0,36,48,6,0,2,0,50,0,6,26,20,33,0,37,48,6,32,0,37,0,53,0,13,0,51,0,27,27,27,33,0,38,48,6,32,0,37,0,53,0,13,0,51,0,27,27,0,0,0,66,21,27,33,0,39,48,6,0,19,0,32,0,10,21,0,44,0,22,26,0,32,0,22,21,0,66,21,33,0,40,48,6,1,4,33,0,41,48,6,1,5,33,0,42,48,6,1,6,33,0,43,48,6,1,7,33,0,44,48,7,34,0,1,0,11,16,0,46,1,8,26,34,0,4,17,0,22,16,7,32,1,31,32,1,30,0,53,0,113,27,0,114,0,20,11,3,26,0,42,20,33,0,2,48,6,32,0,1,0,54,0,35,27,0,54,0,18,0,58,0,19,0,32,0,13,21,0,51,34,0,2,27,27,27,0,19,0,20,21,33,0,3,48,6,32,0,1,0,35,34,0,1,0,33,16,33,0,4,48,17,33,0,5,48,0,26,0,53,0,1,27,0,14,0,26,21,0,66,17,0,49,0,10,26,0,58,0,22,0,53,0,65,27,0,44,0,32,26,32,0,5,21,0,22,0,115,21,0,42,20,27,16,6,0,20,0,33,34,0,5,21,0,6,0,66,21,0,44,0,1,26,0,66,21,0,44,0,35,26,34,0,4,21,34,0,3,0,20,21,7,34,0,2,33,0,3,33,0,4,12,2,48,6,0,94,0,14,32,0,1,17,33,0,5,48,6,0,95,0,14,32,0,1,17,33,0,6,48,0,9,0,53,0,28,0,53,0,65,0,65,11,2,27,27,16,0,32,16,33,0,7,48,6,0,96,0,14,32,0,1,17,33,0,8,48,0,32,16,33,0,9,48,6,32,0,7,32,0,9,0,26,0,61,17,32,0,5,0,32,16,11,3,0,22,16,33,0,10,48,0,33,16,33,0,11,48,6,32,0,10,0,35,32,0,11,17,33,0,10,49,6,34,0,7,0,0,0,67,17,34,0,9,0,26,0,66,17,0,66,0,22,32,1,6,0,39,32,0,1,17,17,0,32,16,0,32,0,53,32,0,5,0,50,0,0,26,16,0,22,0,65,17,0,54,0,35,0,51,0,29,0,54,0,1,27,27,27,27,16,11,3,0,22,16,0,35,34,0,11,17,33,0,12,48,6,0,20,0,36,0,61,21,0,14,0,65,21,0,58,1,9,27,33,0,13,48,6,0,32,0,53,32,0,12,0,33,32,0,10,17,0,46,0,65,26,0,22,0,66,21,32,0,13,0,13,0,54,0,22,27,21,0,25,0,13,21,16,27,0,48,0,32,26,20,0,25,32,0,1,0,13,16,21,33,0,14,48,6,34,0,10,32,0,14,16,33,0,15,48,6,34,0,12,34,0,14,16,33,0,16,48,6,32,0,16,0,10,32,0,15,17,33,0,17,48,0,50,0,13,26,0,66,17,33,0,18,48,6,32,0,18,0,11,34,0,16,17,0,9,32,0,8,0,10,32,0,6,17,17,0,49,0,10,26,0,58,1,10,27,16,6,0,97,0,14,32,0,1,17,0,9,32,0,18,17,33,0,19,48,6,34,0,6,0,9,32,0,15,17,0,29,16,0,10,32,0,19,17,0,32,16,33,0,20,48,6,32,0,20,34,0,19,0,54,0,35,27,0,2,0,92,0,1,0,97,17,21,0,1,32,0,1,0,54,0,35,27,21,16,33,0,21,48,6,32,0,8,0,9,33,0,15,50,0,28,16,0,9,32,0,8,17,33,0,22,48,0,12,33,0,18,50,6,34,0,17,0,9,34,0,8,17,0,50,0,13,26,16,0,11,0,66,0,54,0,22,27,0,52,0,2,0,53,0,50,0,0,26,27,27,0,19,21,34,0,22,0,29,16,0,12,34,0,15,17,33,0,23,48,17,0,44,0,1,26,0,66,17,0,44,0,41,26,32,0,1,17,33,0,24,48,6,32,0,18,0,32,16,33,0,25,48,6,32,0,18,0,29,0,66,17,0,32,16,0,25,0,53,0,13,27,32,0,25,17,33,0,26,48,6,32,0,25,34,0,5,0,54,0,35,27,0,2,0,1,21,32,0,26,17,0,1,33,0,26,50,6,34,0,1,0,35,32,0,25,17,32,1,32,16,33,0,27,48,6,32,1,21,32,1,25,32,0,27,17,0,28,16,0,12,32,1,20,0,36,16,0,14,32,0,27,17,17,33,0,28,48,6,32,1,29,0,14,32,0,27,17,33,0,29,48,6,32,1,23,0,36,0,52,0,44,0,1,26,0,24,0,19,21,27,32,1,20,17,32,1,25,32,0,27,17,0,11,34,0,28,17,0,10,32,0,29,17,33,0,30,48,0,11,0,53,0,29,27,16,33,0,31,48,6,32,1,22,0,49,0,0,26,16,0,0,0,61,17,0,14,32,0,27,17,33,0,32,48,6,32,1,23,0,36,16,0,14,32,0,27,17,33,0,33,48,6,32,0,32,0,12,32,0,30,17,0,19,0,32,0,10,21,0,28,0,32,0,20,21,0,66,21,0,11,0,32,21,32,0,31,17,0,49,0,10,26,0,58,1,11,27,16,6,32,0,27,0,32,32,0,31,17,0,44,0,1,26,32,1,22,0,36,16,17,0,44,0,3,0,51,0,5,27,26,32,1,7,17,0,2,32,0,29,0,32,32,0,31,17,0,8,16,17,33,0,34,48,6,32,1,22,0,36,16,0,0,32,1,7,17,0,16,32,0,27,17,0,9,32,0,30,17,0,2,32,1,7,17,0,1,33,0,27,50,6,32,0,30,0,28,16,0,12,32,0,33,17,0,49,0,10,26,0,58,1,12,27,16,6,32,0,33,0,10,0,53,0,29,27,16,0,13,33,0,31,50,6,34,0,33,0,32,32,0,31,17,0,20,0,0,0,8,0,54,0,2,27,21,0,65,0,16,32,0,34,17,0,2,0,67,17,17,33,0,35,48,0,11,0,65,17,33,0,36,48,6,32,0,36,0,8,16,0,22,0,65,17,0,35,32,0,31,0,50,0,0,26,16,17,0,9,32,0,30,17,33,0,37,48,0,12,32,0,30,17,33,0,38,48,6,32,0,30,0,2,32,0,27,17,0,22,0,53,0,65,27,0,32,32,0,37,0,22,0,65,17,0,28,0,54,0,10,27,16,0,11,32,0,32,0,22,0,65,17,17,21,0,52,32,1,42,27,32,0,26,17,33,0,39,48,6,34,0,34,0,32,32,0,36,17,0,14,0,53,0,67,27,0,54,0,9,27,0,0,0,20,21,32,0,38,0,11,0,53,0,28,27,16,0,44,0,32,26,32,0,32,17,17,33,0,40,48,6,32,0,37,0,12,32,0,31,17,0,50,0,0,26,16,0,2,32,0,32,0,12,32,0,38,17,17,33,0,41,48,0,11,0,53,0,50,0,6,26,0,29,20,27,16,33,0,42,48,6,32,0,29,0,32,32,0,42,17,0,11,32,0,35,0,32,34,0,36,17,0,14,0,66,17,17,33,0,43,48,6,32,0,31,33,0,44,48,0,9,34,0,37,17,0,10,32,0,42,17,33,0,31,49,6,32,0,29,0,32,32,0,31,17,0,8,16,0,44,0,32,26,33,0,35,50,0,32,0,53,0,11,0,53,0,65,27,27,16,0,14,0,66,17,33,0,45,48,6,32,0,43,0,22,0,65,17,0,35,32,0,41,17,0,11,0,53,32,0,42,27,0,10,0,13,0,53,32,0,29,27,21,16,0,9,32,0,32,0,12,34,0,38,17,17,0,49,0,10,26,0,58,1,13,27,16,6,34,0,42,0,11,32,0,29,17,0,32,16,32,0,27,0,54,0,35,27,0,12,32,1,22,0,36,16,21,0,11,32,0,45,21,0,54,0,20,0,49,0,10,26,20,0,58,1,14,27,27,16,6,34,0,43,0,8,16,0,2,0,53,0,50,0,0,26,27,16,0,22,0,65,17,0,44,0,1,26,0,66,17,0,35,33,0,41,50,6,32,1,8,0,35,32,0,27,17,0,41,34,0,41,17,0,41,0,67,0,22,34,0,45,17,17,0,36,0,55,0,22,0,53,32,0,4,27,27,16,33,0,46,48,6,34,0,18,0,29,16,0,50,0,0,26,16,0,35,34,0,23,0,32,16,0,22,34,0,20,17,17,0,22,34,0,29,0,12,32,0,31,17,0,32,16,0,35,0,53,0,34,27,34,0,35,17,17,33,0,47,48,6,34,0,39,34,0,21,34,0,24,11,3,0,22,34,0,46,17,33,0,48,48,6,32,0,48,0,46,0,37,26,16,33,0,49,48,0,44,0,46,0,32,0,53,0,50,0,6,26,0,29,0,61,21,0,12,0,20,21,27,26,26,33,0,48,50,6,32,0,48,0,36,0,53,0,66,27,0,55,34,0,3,27,16,33,0,48,49,6,32,1,23,32,1,25,32,0,27,17,0,10,32,0,30,17,0,8,16,33,0,50,48,6,34,0,44,0,10,32,0,50,17,0,44,0,32,26,33,0,26,50,6,34,0,30,0,28,0,54,0,12,27,16,0,10,32,0,50,17,0,44,0,32,26,33,0,25,50,6,32,0,27,0,35,0,53,34,0,47,27,0,55,32,0,48,0,46,0,13,26,16,33,0,51,48,0,29,32,1,35,17,0,50,0,0,26,16,0,0,34,0,49,17,0,22,16,0,26,0,53,0,13,27,34,0,4,17,27,16,0,32,34,0,50,0,10,32,0,31,17,17,33,0,27,49,6,32,1,13,0,36,0,54,0,1,27,0,2,32,1,25,21,32,0,27,17,0,1,33,0,27,50,6,32,1,26,0,14,32,0,27,17,0,44,0,22,26,0,13,0,22,21,0,66,17,0,32,16,0,26,0,66,17,0,26,0,61,17,33,0,52,48,0,46,0,66,26,16,0,50,0,13,26,16,33,0,53,48,6,32,1,16,0,36,16,0,0,0,71,0,68,0,75,11,3,17,33,0,54,48,6,32,0,27,0,35,32,0,53,0,1,32,0,52,17,17,0,0,0,53,32,0,53,27,0,44,0,39,26,34,0,54,21,0,10,32,1,14,0,54,32,1,25,27,21,16,0,28,0,54,0,10,27,16,0,12,34,0,53,17,0,44,0,32,26,34,0,52,17,33,0,55,48,6,32,1,26,0,13,32,0,27,17,0,35,0,53,34,0,55,27,0,55,0,46,0,66,26,27,16,0,44,1,15,26,33,0,27,50,6,34,0,51,0,25,0,67,17,0,49,0,0,26,16,0,24,32,1,35,17,32,1,25,32,0,27,17,0,10,32,1,29,0,14,32,0,27,17,17,33,0,56,48,6,0,65,0,22,32,1,36,17,0,35,32,0,27,0,5,32,1,35,17,17,0,32,0,53,34,0,56,27,0,55,34,0,40,27,16,33,0,57,48,6,32,0,27,0,15,0,53,0,0,0,53,0,71,27,27,0,0,0,68,21,0,2,0,68,0,54,0,24,27,32,1,25,0,20,21,21,32,1,19,0,36,16,17,0,0,33,0,27,50,6,32,0,27,0,14,0,2,0,59,21,0,0,0,11,21,32,1,34,17,0,1,33,0,27,50,6,34,0,27,34,0,57,34,0,48,32,0,26,32,0,25,11,5,7,1,16,33,0,3,48,6,32,1,31,32,1,30,0,53,0,122,27,0,123,32,1,8,0,54,0,35,27,0,124,11,4,26,33,0,4,48,6,32,1,20,0,49,0,27,0,54,0,0,27,26,16,0,22,0,125,0,49,0,1,26,16,0,0,32,1,22,0,36,16,17,17,0,46,32,0,1,0,54,0,14,27,26,16,33,0,5,33,0,6,33,0,7,33,0,8,33,0,9,12,5,48,6,32,1,22,0,36,16,0,11,32,0,1,17,0,10,32,0,5,17,0,8,16,0,10,32,1,29,0,14,32,0,1,17,17,32,0,2,32,0,3,32,0,1,0,54,0,32,27,0,51,34,0,4,27,27,16,6,32,0,1,0,14,0,65,17,33,0,10,48,0,10,32,0,5,17,33,0,11,48,0,10,32,0,6,17,33,0,12,48,6,32,0,11,0,10,32,0,7,17,0,8,16,33,0,13,48,6,32,0,11,0,29,16,0,12,32,0,7,17,32,0,2,32,0,3,0,126,27,16,6,32,0,12,0,10,32,0,7,17,0,9,32,0,12,0,28,0,66,17,17,32,0,2,32,0,3,0,127,27,16,6,32,0,1,0,32,32,0,12,17,0,11,0,53,0,29,27,0,10,0,14,0,53,0,65,27,21,16,0,8,16,32,0,2,0,32,34,0,12,21,32,0,3,0,128,27,16,6,32,0,5,0,29,16,0,12,32,0,7,17,0,10,32,0,10,17,0,28,0,10,34,0,5,0,28,16,0,9,32,0,8,17,21,0,9,0,29,21,0,66,17,0,12,32,0,9,0,10,34,0,8,17,17,34,0,2,34,0,3,0,129,27,16,6,32,0,13,0,9,0,53,0,8,32,1,39,0,52,0,12,27,32,1,21,0,36,16,0,13,32,0,1,17,0,11,32,0,6,17,21,0,15,0,28,21,27,16,33,0,14,48,0,9,0,53,0,50,0,0,26,32,1,37,0,1,0,20,21,0,8,21,0,16,0,76,21,27,16,33,0,15,48,6,32,1,20,0,36,16,0,0,0,66,17,0,1,34,0,1,17,0,2,32,0,15,17,0,32,32,0,6,0,8,16,17,0,44,0,35,26,0,59,0,27,16,0,22,0,77,0,66,11,2,17,0,22,0,61,17,17,33,0,16,48,6,32,0,16,0,50,0,0,0,53,0,59,0,54,0,2,27,27,0,2,0,15,0,53,0,65,27,21,26,0,65,17,0,32,34,0,16,0,15,0,65,17,0,28,0,54,0,12,27,16,17,33,0,17,48,6,34,0,7,0,29,16,0,32,34,0,13,0,29,0,54,0,12,27,16,33,0,18,48,17,0,44,0,35,26,0,66,0,61,11,2,17,0,2,33,0,17,50,6,34,0,10,0,32,34,0,11,17,33,0,19,48,6,34,0,14,0,28,0,54,0,12,27,0,32,20,0,52,0,1,0,53,34,0,6,0,28,16,32,1,39,16,0,54,0,35,27,27,0,20,0,2,0,11,21,0,1,0,53,0,29,27,21,0,1,0,1,21,27,34,0,15,17,0,32,32,0,19,17,33,0,20,48,6,32,0,19,0,8,16,0,2,32,0,17,17,0,28,16,0,32,32,0,19,17,0,44,0,1,26,34,0,20,17,33,0,21,48,0,7,16,0,4,0,59,17,33,0,22,48,6,0,66,0,78,11,2,0,35,34,0,9,0,32,34,0,18,17,17,0,2,34,0,17,17,0,32,34,0,19,17,0,32,0,53,32,0,21,0,11,0,65,17,27,0,55,0,2,27,32,0,22,17,0,32,0,53,34,0,21,0,12,0,65,17,27,0,55,0,44,0,3,26,27,34,0,22,17,7,34,0,2,33,0,3,33,0,4,33,0,5,33,0,6,33,0,7,12,5,48,6,34,0,4,0,13,16,33,0,8,48,6,1,17,33,0,9,48,6,1,18,33,0,10,48,6,32,0,1,0,13,16,0,11,0,65,17,0,42,0,131,17,6,32,1,16,32,1,25,32,0,1,17,0,2,32,0,3,0,2,0,67,17,0,1,0,61,17,17,33,0,11,48,0,50,0,0,26,16,33,0,12,48,0,33,16,33,0,13,48,6,0,61,0,14,32,0,3,17,0,35,32,0,13,17,33,0,14,48,6,32,0,1,0,35,32,0,13,17,33,0,15,48,0,32,0,53,0,65,0,54,0,11,27,27,0,44,0,1,26,0,66,21,0,17,0,32,0,53,0,65,0,54,0,12,27,27,21,32,0,11,0,35,32,0,13,17,17,0,8,0,58,32,0,1,0,51,34,0,9,27,27,16,6,34,0,12,0,36,32,0,13,0,36,16,17,0,12,0,65,17,32,0,13,0,25,0,66,21,32,0,10,0,132,27,16,6,32,0,15,0,32,32,0,14,17,33,0,16,48,0,14,0,53,32,1,26,27,0,10,0,14,0,53,32,1,27,27,21,0,9,0,53,0,29,27,0,14,0,53,32,1,16,0,36,16,27,21,16,32,0,13,0,32,32,0,14,21,32,0,10,0,133,27,16,6,0,14,0,53,0,67,0,54,0,0,27,27,0,10,0,14,21,33,0,17,48,6,32,0,16,0,32,0,53,0,13,0,53,32,1,26,27,27,16,0,14,0,53,32,1,27,27,0,9,0,53,0,29,27,32,0,17,0,53,32,1,16,0,36,16,0,0,0,70,17,27,21,16,32,0,13,0,32,32,0,14,21,0,32,34,0,16,0,13,32,1,26,21,21,32,0,10,0,134,27,16,6,34,0,14,0,22,0,66,17,0,9,0,53,0,28,0,53,0,66,27,27,16,1,19,16,6,0,70,0,14,32,0,3,17,33,0,18,48,0,10,0,53,0,28,27,16,33,0,19,48,6,32,0,11,0,0,32,0,3,17,0,15,0,65,17,0,11,32,0,18,17,0,28,16,33,0,20,48,0,12,32,1,15,0,36,16,0,14,32,0,1,17,17,0,1,33,0,3,50,6,32,0,3,0,15,0,65,17,0,11,32,0,18,17,0,29,16,0,9,32,1,15,0,36,16,0,0,0,67,17,0,14,32,0,1,17,0,10,34,0,20,17,17,0,12,32,0,3,0,73,0,54,0,15,27,0,9,0,11,0,53,0,80,27,21,16,17,0,13,0,27,20,32,0,10,0,136,27,16,6,32,1,27,0,14,32,0,1,17,0,9,32,0,3,0,14,0,80,17,0,29,16,17,0,13,0,27,20,32,0,10,0,137,27,16,6,32,1,34,32,0,8,11,2,32,1,25,32,0,1,17,0,28,16,0,12,32,0,18,17,0,13,0,27,20,32,0,10,0,138,27,16,6,0,73,0,14,32,0,3,17,0,10,0,53,0,28,27,16,33,0,21,48,0,35,0,53,32,0,13,0,35,0,53,32,0,19,0,54,0,35,27,0,33,20,27,16,27,0,55,0,29,27,16,33,0,22,48,6,32,0,22,0,10,32,0,21,17,0,8,16,33,0,23,48,6,32,1,16,0,36,16,0,0,0,66,17,0,14,32,0,1,17,33,0,24,48,6,32,1,18,0,36,16,0,14,32,0,1,17,0,2,0,67,17,0,0,32,1,28,0,36,16,0,0,0,67,17,0,14,32,0,1,17,17,0,35,32,0,24,0,8,16,32,1,38,16,17,33,0,25,48,6,0,65,33,0,26,48,6,32,0,25,0,13,16,0,27,16,33,0,27,48,6,1,20,33,0,28,48,6,32,0,19,0,10,32,0,21,17,33,0,29,48,0,35,32,0,13,17,0,33,16,0,44,0,35,26,33,0,13,50,6,32,0,3,0,13,16,0,27,16,0,35,0,53,32,0,13,27,0,55,0,29,0,53,0,13,27,27,16,33,0,30,48,6,0,61,0,14,32,0,3,17,0,10,34,0,29,17,0,35,32,0,13,17,0,22,0,66,17,0,0,0,53,0,50,0,0,26,27,16,0,33,16,0,44,0,35,26,0,8,0,33,0,54,0,44,0,35,26,27,21,0,35,0,53,0,33,27,0,19,21,32,0,13,0,22,0,61,17,17,0,26,0,61,17,0,50,0,0,26,16,0,33,16,33,0,31,48,6,32,1,16,0,36,16,0,0,0,67,17,0,67,11,2,32,1,25,32,0,1,17,0,2,32,0,11,17,0,35,32,0,31,17,33,0,32,48,0,50,0,0,26,16,33,0,33,48,0,33,16,33,0,34,48,6,32,0,34,0,44,0,35,26,33,0,31,50,6,32,0,34,0,44,0,35,26,33,0,33,50,6,32,0,34,0,44,0,35,26,33,0,32,50,6,32,0,31,0,44,0,35,26,33,0,1,50,6,32,0,31,0,44,0,35,26,33,0,18,50,6,32,0,31,0,44,0,35,26,33,0,5,50,6,32,0,31,0,44,0,35,26,33,0,6,50,6,32,0,11,0,35,32,0,31,17,0,44,0,1,26,32,0,32,17,33,0,11,49,0,50,0,0,26,16,0,33,16,33,0,13,49,6,34,0,11,0,35,32,0,13,17,0,12,32,0,13,0,54,0,32,27,0,52,0,24,27,0,11,21,0,65,17,33,0,35,48,6,32,0,18,0,10,0,53,0,28,27,16,0,35,32,0,13,17,0,33,16,0,44,0,35,26,33,0,13,50,6,32,0,31,0,35,32,0,13,17,33,0,36,48,6,32,0,21,0,1,32,0,22,17,0,35,32,0,36,17,0,12,0,32,0,52,0,1,27,0,11,21,0,65,17,0,44,0,3,26,0,67,17,0,0,0,66,17,33,0,37,48,6,32,1,16,0,36,16,0,0,0,68,17,0,44,32,0,17,26,32,0,1,17,0,35,32,0,13,17,0,32,16,33,0,38,48,6,0,65,0,12,32,0,32,17,33,0,39,48,6,0,65,0,11,34,0,32,17,0,32,16,33,0,40,48,6,32,0,39,0,32,16,32,0,40,11,2,0,46,0,22,26,33,0,35,50,6,32,0,21,0,35,32,0,36,17,0,33,16,33,0,41,48,0,44,0,35,26,33,0,13,50,6,32,0,31,0,35,32,0,13,17,33,0,36,49,6,32,0,13,0,33,16,33,0,42,48,6,32,1,14,0,36,16,0,14,32,0,1,17,33,0,43,48,6,32,1,14,0,36,16,0,0,0,66,17,0,14,32,0,1,17,33,0,44,48,6,32,1,27,0,14,32,0,1,17,33,0,45,48,6,32,0,45,0,10,32,0,44,17,0,10,32,0,43,17,0,11,32,0,39,0,50,0,10,26,16,17,0,13,0,27,20,32,0,10,0,139,27,16,6,32,0,44,0,10,32,0,39,17,33,0,46,48,0,50,0,0,26,16,33,0,47,48,6,0,20,32,1,40,0,51,0,8,27,32,0,46,21,33,0,48,48,6,32,0,43,32,0,48,16,33,0,49,48,0,10,34,0,45,32,0,48,16,17,33,0,50,48,6,32,0,44,0,32,32,0,46,17,33,0,51,48,0,8,16,0,22,0,66,17,33,0,52,48,6,32,0,51,0,28,0,54,0,10,27,16,0,22,0,65,17,33,0,53,48,6,32,0,50,0,26,0,9,32,0,51,21,0,11,0,26,0,53,0,1,27,21,0,66,17,32,0,46,0,32,20,32,0,10,0,140,27,16,6,32,0,50,0,26,0,61,17,0,12,32,0,51,17,0,9,0,53,0,29,27,16,32,0,46,0,32,20,32,0,10,0,141,27,16,6,34,0,44,0,32,16,0,22,32,0,40,17,0,35,34,0,51,0,28,16,0,33,16,0,33,16,17,33,0,54,48,6,32,0,43,0,10,32,0,46,17,0,35,0,53,32,0,13,0,30,16,27,0,55,32,1,38,0,54,0,44,0,35,26,27,27,34,0,43,17,33,0,55,48,0,32,16,33,0,56,48,6,32,0,1,0,35,32,0,56,17,0,37,0,1,0,19,0,51,0,13,27,21,32,1,33,17,33,0,57,48,0,14,0,65,17,33,0,58,48,6,32,0,57,0,14,0,53,0,67,27,0,9,32,0,58,0,29,0,66,17,21,0,10,0,16,0,53,0,29,27,21,16,0,11,32,0,58,17,32,0,56,32,0,10,0,142,27,16,6,32,0,57,0,29,16,0,32,34,0,58,17,33,0,59,48,6,34,0,57,0,14,0,65,17,0,44,0,32,26,33,0,56,50,6,32,0,56,0,44,0,35,26,32,0,31,17,32,0,3,0,54,0,35,27,0,2,32,0,23,0,54,0,35,27,21,16,33,0,60,48,6,32,0,60,0,14,0,61,17,33,0,61,48,0,28,0,0,0,29,0,53,0,66,27,21,16,33,0,62,48,0,14,0,67,17,33,0,63,48,6,32,0,55,0,35,32,0,56,0,32,32,0,61,17,0,0,0,66,17,17,32,0,56,0,32,32,0,61,21,32,0,10,0,143,27,16,6,32,0,60,0,15,0,67,17,33,0,64,48,0,11,32,0,63,17,0,20,0,9,0,71,0,14,32,0,60,17,21,0,28,20,0,10,0,29,21,16,33,0,65,48,6,34,0,64,0,10,32,0,61,17,0,9,32,0,65,17,0,10,0,71,0,14,32,0,60,17,0,9,32,0,59,17,17,32,0,56,32,0,10,0,144,27,16,6,34,0,62,0,14,0,66,17,0,9,32,0,60,0,14,0,65,17,17,0,11,32,0,65,17,33,0,66,48,0,10,32,0,65,17,0,8,16,33,0,67,48,6,32,0,61,0,32,32,0,67,17,0,14,0,53,0,29,0,53,0,66,27,27,16,32,0,56,0,32,32,0,67,21,32,0,10,0,145,27,16,6,32,0,22,0,35,32,0,31,17,0,8,16,0,2,32,0,1,17,0,35,32,0,56,17,33,0,68,48,0,33,32,0,8,0,22,32,1,28,17,0,50,0,0,26,16,17,0,44,0,1,26,0,66,17,0,7,0,71,17,33,0,69,48,6,32,0,69,0,13,0,66,17,0,9,32,0,60,0,14,0,65,17,17,0,9,32,0,63,17,33,0,70,48,0,12,32,0,67,17,33,0,71,48,6,32,0,70,0,0,33,0,60,50,6,32,0,70,0,12,33,0,63,50,6,32,0,60,0,5,0,67,17,0,44,0,1,26,0,66,17,0,2,0,71,17,0,2,32,0,71,17,0,0,32,0,60,0,14,0,71,17,0,28,16,0,0,0,70,17,0,2,32,0,65,17,17,0,0,32,0,61,0,28,16,0,0,0,66,17,0,2,32,0,66,17,0,0,34,0,70,17,17,33,0,72,48,6,32,1,28,0,36,16,0,0,32,0,72,17,0,13,34,0,68,17,0,9,32,0,69,0,14,0,65,17,17,32,0,56,32,0,10,0,146,27,16,6,32,0,60,0,14,0,65,17,0,9,32,0,63,17,0,10,32,0,61,17,0,8,16,0,2,33,0,69,50,6,32,0,61,0,12,33,0,67,50,6,32,0,67,0,44,0,32,26,33,0,60,50,6,32,0,66,0,32,32,0,61,0,29,0,66,17,17,33,0,73,48,6,34,0,65,0,2,32,0,59,17,0,29,0,54,0,1,27,16,0,1,33,0,59,50,6,32,0,59,0,2,16,0,11,32,0,67,17,32,0,56,32,0,10,0,142,27,16,6,0,65,0,22,32,0,73,17,0,35,0,53,0,50,0,0,26,27,32,0,61,17,0,12,32,0,66,17,32,0,56,32,0,10,0,147,27,16,6,0,67,0,13,32,0,69,17,0,12,34,0,71,17,32,0,56,32,0,10,0,148,27,16,6,32,0,67,0,44,0,32,26,33,0,59,50,6,32,0,60,0,14,0,66,17,0,10,33,0,73,50,6,32,0,59,0,2,16,0,11,32,0,73,17,32,0,56,0,32,32,0,67,21,32,0,10,0,149,27,16,6,32,0,69,0,13,0,65,17,33,0,74,48,0,0,0,66,17,0,2,34,0,66,17,0,6,32,0,63,17,0,29,16,0,32,32,0,61,17,33,0,75,48,6,32,0,59,0,14,0,67,17,33,0,76,48,0,9,32,0,75,0,14,0,65,17,17,32,0,56,32,0,10,0,150,27,16,6,32,0,52,0,28,0,11,0,20,21,0,66,17,0,11,32,0,50,0,29,16,17,0,28,0,54,0,1,27,16,0,0,0,66,17,0,32,0,53,32,0,49,27,0,55,34,0,76,0,2,0,67,17,0,6,34,0,75,17,27,16,33,0,77,48,6,34,0,67,0,44,0,32,26,33,0,63,50,6,32,0,55,0,35,0,53,32,0,56,27,0,55,32,0,74,0,8,16,27,16,33,0,78,48,6,32,0,56,0,32,32,0,74,17,0,44,0,35,26,32,0,42,17,33,0,79,48,6,32,0,69,0,32,32,0,74,17,0,14,0,67,17,33,0,80,48,6,32,1,28,0,36,16,0,1,32,0,1,17,0,35,0,53,34,0,56,27,0,55,0,1,0,53,32,0,72,27,0,2,34,0,69,0,11,0,65,17,21,0,0,0,20,21,27,16,0,33,0,65,0,71,0,68,0,74,11,4,17,33,0,81,48,6,32,1,28,0,36,16,0,0,0,71,17,0,14,32,0,1,17,0,9,0,71,0,14,32,0,3,17,0,35,32,0,31,17,17,0,0,33,0,81,50,6,34,0,81,0,54,0,14,27,32,1,40,0,51,0,8,27,34,0,39,21,0,35,32,0,52,0,50,0,0,26,0,61,17,21,33,0,82,48,6,32,1,28,32,1,25,32,0,1,17,0,11,32,0,78,17,0,32,16,33,0,83,48,6,0,66,32,0,82,16,33,0,84,48,6,0,71,34,0,82,0,52,0,20,0,2,0,67,21,0,6,0,19,21,27,0,67,17,33,0,85,48,0,0,0,53,0,11,0,53,0,65,27,0,10,32,0,84,21,27,16,33,0,86,48,6,32,0,84,0,32,32,0,49,17,0,11,32,0,73,17,0,11,32,0,63,17,0,10,32,0,86,0,32,32,0,49,17,0,11,32,0,60,17,17,32,0,46,0,51,0,32,27,0,22,0,65,21,0,32,32,0,49,21,32,0,10,0,151,27,16,6,32,0,86,0,32,0,53,32,0,49,27,0,55,34,0,60,27,16,33,0,86,49,0,44,0,1,26,0,66,17,0,6,33,0,85,50,6,32,0,84,0,32,0,53,32,0,49,27,0,55,0,6,0,53,34,0,73,27,27,16,33,0,84,49,6,32,0,86,0,36,16,0,11,0,65,17,32,0,1,0,51,1,21,27,0,32,20,32,0,10,0,152,27,16,6,32,0,84,0,12,32,0,53,17,0,11,34,0,50,0,32,0,53,32,0,49,27,0,55,34,0,63,0,8,16,27,16,0,10,0,53,0,29,27,16,17,0,26,0,66,17,32,0,46,0,32,20,32,0,10,0,153,27,16,6,32,0,84,0,2,0,71,17,0,0,0,65,0,67,0,71,11,3,0,35,32,0,85,17,17,33,0,87,48,6,32,0,84,0,32,32,0,49,17,0,8,16,0,2,0,71,17,0,35,34,0,61,0,50,0,0,26,16,0,29,16,17,0,1,33,0,72,50,6,32,0,3,0,35,0,53,32,0,31,0,35,32,0,40,17,27,0,55,34,0,86,0,32,32,0,52,17,0,26,0,66,17,27,16,0,2,32,0,23,17,0,44,0,1,26,32,0,21,17,33,0,3,49,6,32,0,23,0,9,34,0,24,17,33,0,88,48,6,0,65,0,11,32,0,3,17,0,44,0,22,26,0,66,17,0,35,32,0,30,17,33,0,89,48,0,29,16,0,9,32,0,88,17,33,0,90,48,6,32,0,3,0,35,32,0,90,0,8,16,32,1,38,16,17,0,2,32,0,90,17,0,0,32,0,3,17,0,20,0,15,0,67,21,0,11,32,0,89,21,0,1,0,20,21,0,6,0,20,0,14,0,71,21,0,2,34,0,89,0,0,0,66,17,21,0,44,0,22,26,0,65,21,0,35,34,0,30,21,21,16,33,0,91,48,6,32,0,91,0,35,0,0,0,6,0,66,21,0,5,0,20,21,34,0,90,0,8,16,0,50,0,0,26,16,0,54,0,20,0,1,0,35,21,27,21,0,65,0,14,32,0,91,17,0,9,32,0,88,17,0,8,16,32,1,38,16,17,0,6,33,0,91,50,6,32,0,91,0,29,16,0,2,34,0,88,17,0,0,33,0,3,50,6,32,0,25,0,14,0,66,17,0,9,32,0,91,0,13,0,65,17,17,0,10,33,0,26,50,0,8,16,0,2,33,0,25,50,6,32,0,25,0,1,32,0,25,0,14,0,65,17,0,2,32,0,91,17,17,33,0,91,49,6,0,61,0,14,32,0,3,17,0,29,0,66,17,0,9,0,80,0,14,32,0,3,17,17,0,1,33,0,3,50,6,0,65,0,14,32,0,3,17,0,29,16,0,12,0,70,0,14,32,0,3,17,17,32,0,31,0,51,0,33,27,32,0,10,0,154,27,16,6,34,0,19,0,20,0,1,0,8,0,54,0,2,27,21,33,0,3,50,6,32,1,34,0,1,32,0,1,17,33,0,92,48,6,34,0,35,0,49,1,22,26,16,6,32,0,13,0,44,0,35,26,33,0,1,50,6,34,0,55,0,35,32,0,13,17,33,0,93,48,6,32,0,36,0,44,0,35,26,33,0,3,50,6,32,0,36,0,44,0,35,26,33,0,91,50,6,34,0,21,0,12,34,0,22,17,0,35,32,0,36,17,0,32,16,0,22,34,0,41,0,33,16,0,35,32,0,38,17,33,0,94,48,17,33,0,38,49,6,32,0,1,0,35,34,0,94,17,0,44,0,1,26,32,1,16,0,36,16,0,0,0,68,17,17,0,44,0,22,26,32,0,37,0,46,0,65,26,16,17,33,0,95,48,6,32,0,3,0,72,0,54,0,15,27,0,9,0,11,0,53,0,81,27,21,16,33,0,96,48,6,0,65,0,11,32,0,3,17,0,11,32,0,96,17,33,0,97,48,6,32,0,97,0,29,16,32,1,38,16,0,44,0,35,26,32,0,91,17,33,0,98,48,0,15,0,66,17,33,0,99,48,6,32,0,91,0,1,16,0,6,0,65,17,33,0,100,48,6,32,0,98,0,1,16,0,6,0,65,17,33,0,101,48,6,32,0,13,33,0,27,49,6,32,0,36,0,44,0,35,26,33,0,26,50,6,32,0,96,0,2,32,0,101,17,32,0,28,0,155,26,16,6,32,1,27,0,14,32,0,1,17,0,2,32,0,101,17,32,0,28,0,156,26,16,6,0,67,0,16,32,0,3,17,0,9,0,67,0,11,32,0,98,17,17,33,0,102,48,0,11,32,0,93,17,0,32,16,0,30,16,33,0,103,48,6,0,71,0,14,32,0,3,17,33,0,104,48,0,9,32,0,102,17,0,28,16,0,10,32,0,102,17,33,0,105,48,6,0,67,0,27,16,0,39,32,0,3,17,0,10,32,0,105,17,0,16,32,0,104,17,0,2,0,67,17,0,6,32,0,100,17,0,29,0,2,34,0,104,21,0,6,0,28,21,0,67,17,0,2,32,0,102,17,32,0,28,0,157,26,16,6,32,1,26,0,14,32,0,1,17,33,0,106,48,6,32,1,16,0,36,16,0,0,0,67,17,32,1,14,0,36,16,0,0,0,66,17,11,2,0,39,32,0,1,17,33,0,107,48,6,32,1,16,0,36,16,0,0,0,70,17,0,44,34,0,17,26,32,0,1,17,33,0,108,48,32,1,38,0,52,0,11,27,32,0,107,17,0,9,32,0,106,17,33,0,109,48,6,0,65,0,14,32,0,3,17,0,11,0,53,0,10,0,53,0,29,27,27,32,0,105,17,0,28,0,54,0,9,27,16,32,0,13,32,0,10,0,158,27,16,6,32,1,15,0,36,16,0,0,0,67,17,0,14,32,0,1,17,33,0,110,48,6,0,66,0,16,34,0,91,17,0,28,16,0,9,32,0,110,17,0,11,32,0,99,17,33,0,111,48,6,32,0,97,0,29,0,66,17,0,9,33,0,110,50,6,32,0,110,0,11,32,0,111,17,32,0,13,32,0,10,0,159,27,16,6,32,0,111,0,10,32,0,105,17,0,8,16,0,30,0,55,32,1,37,0,1,0,19,21,0,53,0,13,0,51,0,27,27,27,27,16,33,0,112,48,6,32,0,96,0,32,16,33,0,113,48,0,0,0,53,32,0,112,0,54,0,35,27,27,16,0,0,0,66,17,33,0,114,48,6,32,0,3,0,35,32,0,113,17,0,13,0,80,17,33,0,115,48,6,32,0,3,0,35,32,0,114,17,33,0,116,48,6,32,0,98,0,35,32,0,114,17,0,6,0,65,17,0,13,32,0,116,17,0,9,32,0,115,17,32,0,13,0,35,32,0,114,21,32,0,10,0,160,27,16,6,32,0,1,0,35,32,0,113,17,0,44,0,1,26,32,1,15,0,36,16,17,0,0,32,0,111,0,35,32,0,113,17,17,0,0,34,0,116,0,15,0,65,17,17,0,0,32,0,115,17,33,0,117,48,6,32,0,79,0,22,33,0,114,50,6,32,0,1,0,46,0,65,26,16,0,35,0,53,32,0,114,27,0,55,32,0,79,0,46,0,74,26,16,0,22,32,0,117,17,27,16,0,1,0,53,0,28,27,16,33,0,118,48,6,32,0,118,0,35,32,0,42,17,0,2,0,53,0,50,0,0,26,0,14,0,65,21,0,10,0,53,0,29,0,53,0,66,27,27,20,27,16,0,50,0,0,26,16,0,29,16,33,0,118,49,0,35,32,0,13,17,33,0,119,48,0,2,16,33,0,120,48,6,32,0,100,0,14,0,67,17,0,9,32,0,120,17,33,0,121,48,0,9,32,1,18,0,36,16,0,14,32,0,1,17,17,0,32,16,33,0,122,48,6,32,0,109,0,10,32,0,108,17,0,29,16,0,10,34,0,23,0,8,16,0,35,34,0,36,17,17,0,2,32,0,100,17,0,2,32,0,121,0,8,16,17,34,0,28,0,161,26,16,6,32,0,97,0,28,0,66,17,0,9,32,1,16,0,36,16,0,0,0,74,17,0,14,32,0,1,17,17,0,11,32,0,120,17,32,0,13,32,0,10,0,162,27,16,6,32,0,118,0,14,0,74,17,33,0,123,48,0,2,0,71,17,0,1,33,0,118,50,6,32,0,100,0,14,0,66,17,0,2,32,0,120,17,0,6,33,0,26,50,6,32,1,15,0,36,16,0,44,0,1,26,32,1,34,17,0,14,32,0,92,17,0,11,32,0,118,17,32,0,48,16,33,0,124,48,6,32,0,26,0,35,32,0,42,17,34,0,48,16,33,0,125,48,6,32,0,31,0,35,32,0,54,17,0,22,0,65,17,0,44,0,1,26,0,66,17,1,23,16,6,32,0,125,33,0,126,48,6,32,0,52,32,1,39,0,52,0,16,27,33,0,125,50,6,0,65,0,14,32,0,77,17,0,9,32,0,125,17,0,26,0,66,17,32,0,46,0,32,20,32,0,10,0,164,0,153,11,2,0,56,0,11,0,53,34,0,126,0,26,0,66,17,27,0,49,0,10,26,20,27,27,16,6,32,0,125,0,2,0,67,17,0,6,33,0,77,50,6,32,0,84,0,2,33,0,77,50,6,32,0,77,0,14,0,67,17,0,35,32,0,47,17,0,35,32,0,13,17,33,0,127,48,6,32,0,127,0,14,0,1,0,19,21,33,0,100,50,6,34,0,127,0,14,0,1,0,19,21,33,0,101,50,6,32,1,34,0,1,32,0,1,17,32,0,8,0,54,0,11,27,0,9,0,15,0,53,0,82,27,21,16,33,0,128,48,6,32,1,34,0,0,32,0,8,17,0,16,32,0,1,17,0,9,34,0,123,0,35,32,0,13,17,17,33,0,129,48,0,32,16,33,0,130,48,6,32,1,16,32,1,25,0,11,0,36,0,0,0,71,21,0,54,0,14,27,21,32,0,1,17,0,10,32,1,17,0,36,16,0,14,32,0,1,17,0,28,16,0,12,32,0,97,17,17,0,10,34,0,129,17,0,10,34,0,128,17,0,11,0,65,0,16,32,0,3,17,0,9,32,0,120,17,0,28,16,0,11,32,0,97,17,0,11,32,0,93,17,17,33,0,131,48,6,32,0,120,0,11,34,0,121,0,10,34,0,131,17,0,10,32,0,96,17,17,32,0,13,32,0,10,0,165,27,16,6,32,0,120,0,35,32,0,113,17,0,11,0,67,0,14,34,0,117,17,0,9,34,0,119,0,35,32,0,113,17,0,13,0,68,17,17,17,32,0,13,0,35,32,0,113,21,32,0,10,0,166,27,16,6,32,0,120,0,12,0,53,0,29,27,16,0,9,32,0,3,0,15,0,65,17,17,0,9,32,0,98,0,11,0,65,17,17,0,11,32,0,93,17,32,0,13,32,0,10,0,167,27,16,6,32,0,120,0,35,32,0,113,17,33,0,132,48,0,12,33,0,115,50,6,32,0,113,0,32,34,0,132,17,33,0,133,48,6,32,0,108,32,1,38,0,52,0,11,27,32,1,16,0,36,16,0,14,32,0,1,17,0,10,32,0,107,17,17,0,35,32,0,133,17,0,8,16,32,0,13,0,35,32,0,133,21,32,0,10,0,168,27,16,6,32,0,115,0,44,0,32,26,33,0,113,50,6,32,0,79,0,46,0,66,26,16,0,22,34,0,115,17,0,44,0,32,26,33,0,114,50,6,34,0,18,0,29,16,33,0,134,48,0,32,16,33,0,135,48,6,32,0,92,32,0,8,0,54,0,11,27,0,9,0,15,0,53,0,65,27,21,16,0,11,34,0,96,0,9,32,0,120,17,0,28,16,0,35,32,0,42,17,0,10,34,0,134,17,0,10,34,0,78,17,17,0,32,16,33,0,136,48,6,32,0,118,0,35,32,0,83,17,33,0,137,48,0,11,0,65,17,33,0,138,48,6,0,67,0,67,11,2,32,1,25,34,0,118,0,35,32,0,136,17,33,0,139,48,17,33,0,140,48,6,0,70,0,11,34,0,137,17,0,9,32,0,138,17,32,0,83,32,0,10,0,169,27,16,6,32,0,47,0,35,32,0,136,17,33,0,141,48,6,32,0,92,0,35,32,0,136,17,33,0,142,48,6,32,0,7,0,13,16,0,11,32,0,142,17,0,9,32,0,141,0,14,0,65,17,17,0,9,32,0,140,17,33,0,143,48,6,32,0,7,0,35,32,0,142,0,32,32,0,143,17,17,33,0,144,48,0,14,0,65,17,32,0,136,0,32,32,0,143,21,32,0,10,0,170,27,16,6,32,0,140,0,32,0,53,34,0,143,27,0,55,34,0,144,0,15,0,65,17,27,16,33,0,140,49,6,0,65,0,15,32,0,7,17,0,32,16,33,0,145,48,0,46,0,65,26,16,33,0,146,48,6,32,0,142,0,32,32,0,140,17,33,0,147,48,0,22,32,0,145,17,0,41,32,0,87,0,13,16,0,22,32,0,141,0,32,32,0,140,17,33,0,148,48,17,0,22,32,0,146,17,33,0,149,48,17,33,0,150,48,6,32,0,34,0,35,34,0,54,17,0,44,0,1,26,0,66,17,0,22,32,0,1,0,13,16,17,0,35,32,0,148,17,0,22,34,0,34,0,32,34,0,46,17,0,22,0,61,17,0,35,34,0,141,17,0,0,32,0,139,0,14,0,66,17,17,17,33,0,151,48,6,32,0,151,0,33,16,0,35,0,53,32,0,147,0,22,32,0,142,17,33,0,152,48,0,54,0,35,27,0,33,20,27,16,33,0,153,48,6,32,0,153,0,32,0,53,0,15,0,53,32,0,140,0,13,16,27,27,16,1,24,16,6,32,0,153,0,35,34,0,147,0,46,0,61,26,16,0,22,32,0,140,17,0,35,32,0,153,17,0,50,0,0,26,16,33,0,154,48,0,33,16,17,0,32,0,53,32,0,140,0,13,16,0,54,0,11,27,27,16,33,0,153,49,6,32,0,153,0,44,0,35,26,33,0,140,50,6,32,0,153,0,44,0,35,26,33,0,136,50,6,32,0,153,0,44,0,35,26,33,0,139,50,6,34,0,154,0,11,0,65,17,0,10,0,53,0,29,27,16,0,8,16,0,49,0,0,26,16,33,0,155,48,6,34,0,142,0,35,32,0,153,0,25,32,0,155,17,17,33,0,156,48,6,32,0,7,0,13,16,0,16,32,0,156,17,32,0,136,0,25,32,0,155,21,32,0,10,32,0,156,0,54,0,32,27,0,40,20,32,1,30,0,171,21,27,16,6,32,0,139,0,11,0,65,17,33,0,157,48,0,9,0,71,0,11,34,0,139,17,17,33,0,158,48,6,34,0,33,0,35,32,0,136,17,0,35,0,53,32,0,140,32,1,38,16,0,26,32,0,155,17,27,0,22,34,0,7,0,6,0,65,17,0,1,16,33,0,159,48,0,35,32,0,156,17,21,0,1,0,20,21,16,33,0,160,48,6,32,0,160,0,11,0,65,17,0,9,32,0,158,17,32,0,136,32,0,10,0,172,27,16,6,34,0,158,32,1,40,0,26,0,66,21,0,16,0,32,21,32,0,140,17,33,0,161,48,0,35,34,0,153,0,32,32,0,140,17,0,33,16,33,0,162,48,17,0,22,34,0,146,17,0,41,34,0,149,17,33,0,163,48,6,34,0,148,0,22,34,0,159,17,0,38,0,0,32,0,87,0,54,0,35,27,21,16,0,20,0,26,0,53,0,13,27,34,0,145,21,0,35,0,53,0,33,27,34,0,162,21,0,35,32,0,140,0,26,34,0,155,17,0,50,0,0,26,0,61,17,21,0,22,0,35,0,53,34,0,156,27,21,16,33,0,164,48,6,32,0,160,0,11,0,65,17,32,1,40,0,11,34,0,161,0,22,0,66,17,21,0,35,0,53,0,50,0,0,26,27,0,19,21,32,0,140,17,0,9,32,0,140,0,28,0,66,17,0,11,32,0,157,17,17,33,0,165,48,6,32,0,92,0,35,32,0,83,17,0,0,0,71,17,0,0,32,0,84,0,2,0,71,17,0,35,32,0,47,0,35,32,0,83,17,33,0,166,48,17,17,33,0,167,48,6,34,0,166,0,2,0,74,17,0,0,32,0,167,17,0,30,0,55,0,39,27,16,0,22,33,0,165,50,6,0,66,0,1,32,0,79,17,0,44,0,35,26,32,0,13,17,0,0,0,66,17,32,0,135,32,0,83,0,22,32,0,136,17,11,3,0,32,0,71,0,67,0,71,11,3,17,0,22,16,33,0,168,48,6,34,0,138,0,22,34,0,157,17,0,12,0,2,0,67,21,0,0,0,20,21,34,0,165,17,0,0,0,83,17,33,0,169,48,6,32,0,79,0,46,0,83,26,16,32,0,79,0,46,0,65,26,16,34,0,72,0,32,34,0,74,17,32,0,135,0,46,0,79,26,16,34,0,92,0,35,34,0,135,17,34,0,169,34,0,83,0,46,0,65,26,16,0,22,34,0,160,17,34,0,167,0,22,34,0,164,17,11,8,33,0,170,48,6,32,0,105,0,8,16,0,50,0,0,26,16,32,1,37,0,1,0,20,21,32,0,97,17,0,7,0,10,0,12,21,0,67,17,0,9,32,0,99,17,33,0,171,48,6,34,0,102,0,29,16,0,10,0,66,0,14,32,0,3,17,17,33,0,172,48,0,11,32,0,120,0,11,32,0,97,17,0,10,0,53,0,28,27,16,0,10,32,0,105,17,0,10,34,0,171,17,0,10,32,0,93,17,33,0,173,48,17,0,32,16,33,0,174,48,6,34,0,172,0,10,34,0,173,17,0,12,32,0,99,17,32,0,13,32,0,10,0,173,27,16,6,0,65,0,14,32,0,3,17,0,11,32,0,105,17,0,10,0,65,0,16,32,0,3,17,0,9,34,0,99,17,17,0,8,16,0,2,0,67,17,0,6,34,0,100,17,0,28,0,67,17,0,35,32,0,174,17,33,0,175,48,0,13,0,67,17,33,0,176,48,6,32,1,26,0,11,32,0,1,17,0,11,34,0,93,17,0,32,16,33,0,177,48,0,44,0,35,26,32,0,1,17,33,0,178,48,0,9,16,0,40,16,33,0,179,48,0,29,0,1,0,20,21,0,61,17,0,32,16,0,35,34,0,178,17,33,0,180,48,6,34,0,8,0,0,32,1,34,17,33,0,181,48,0,16,32,0,1,17,0,32,16,33,0,182,48,0,22,34,0,177,17,33,0,183,48,6,32,0,1,0,35,34,0,182,17,0,0,32,0,179,0,13,16,0,44,0,1,26,34,0,181,17,17,0,22,33,0,180,50,6,34,0,42,0,35,34,0,40,17,33,0,184,48,6,0,65,0,22,32,0,109,17,0,50,0,0,26,16,0,32,0,66,0,22,32,0,108,17,17,0,26,0,66,17,0,29,0,54,0,1,27,16,0,0,34,0,97,0,28,0,66,17,0,32,34,0,108,17,0,8,16,17,0,44,0,22,26,34,0,37,17,33,0,185,48,6,0,81,0,14,32,0,3,17,0,29,16,0,10,34,0,109,17,0,10,32,0,101,0,14,0,67,17,17,0,12,34,0,106,17,0,32,16,0,22,32,0,79,0,32,0,53,0,8,27,32,0,80,17,17,33,0,186,48,6,34,0,107,0,32,16,33,0,187,48,6,32,1,27,0,14,32,0,1,17,0,32,16,33,0,188,48,6,32,0,176,0,0,32,0,174,17,0,0,0,53,32,0,112,0,54,0,35,27,0,2,32,0,176,21,27,16,33,0,189,48,6,32,0,189,0,32,34,0,101,0,35,32,0,174,17,33,0,190,48,0,14,0,67,17,33,0,191,48,0,2,32,0,176,0,0,0,66,17,17,17,0,22,33,0,186,50,6,32,0,191,0,8,16,33,0,191,49,6,32,0,191,0,44,0,32,26,33,0,174,50,6,32,0,191,0,44,0,32,26,33,0,189,50,6,34,0,80,0,1,16,0,22,34,0,110,0,0,32,0,111,17,0,0,32,0,1,17,0,35,32,0,113,17,0,44,0,1,26,32,1,15,0,36,16,0,0,0,66,17,17,0,6,0,65,17,17,0,0,0,84,17,33,0,192,48,6,32,0,183,32,0,183,32,0,184,32,0,184,32,0,130,32,0,122,32,0,38,0,32,0,67,17,32,0,114,32,0,186,32,0,188,0,66,0,0,32,0,133,17,0,66,0,0,32,0,133,17,34,0,112,0,35,32,0,103,17,0,6,0,66,17,0,0,32,0,103,17,34,0,189,32,0,187,11,15,33,0,193,48,0,22,16,0,44,0,35,26,32,0,13,17,0,22,32,0,168,17,33,0,194,48,0,33,16,33,0,195,48,6,34,0,183,0,46,0,65,26,16,34,0,180,32,0,184,0,46,0,66,26,16,34,0,184,0,13,16,0,27,16,0,0,0,66,17,34,0,130,0,46,0,85,26,16,34,0,122,0,46,0,86,26,16,34,0,185,0,23,34,0,120,0,35,34,0,38,17,0,0,34,0,95,17,0,0,0,62,17,17,0,31,16,0,21,16,34,0,192,34,0,186,0,46,0,74,26,16,34,0,188,0,46,0,87,26,16,32,0,133,0,46,0,88,26,16,34,0,1,0,35,0,66,0,1,34,0,133,17,17,0,44,0,1,26,32,1,34,17,34,0,3,0,35,32,0,103,17,0,0,0,89,17,34,0,98,0,35,32,0,174,17,0,11,0,65,17,0,2,0,70,17,0,0,34,0,175,0,14,0,66,17,0,6,34,0,190,17,0,2,0,67,17,0,0,34,0,176,17,0,32,34,0,191,17,17,0,0,0,90,17,32,0,124,0,0,0,75,17,33,0,196,48,0,26,0,61,17,11,15,0,22,34,0,170,17,0,22,16,0,35,32,0,195,17,33,0,197,48,6,34,0,193,0,46,0,13,26,16,0,22,34,0,168,0,13,16,17,0,35,0,46,0,27,0,54,0,0,27,26,0,50,0,0,26,0,29,20,0,54,0,35,27,21,0,69,0,60,0,91,11,3,17,33,0,198,48,6,34,0,194,0,35,0,53,32,0,198,0,22,16,27,0,55,34,0,113,34,0,79,11,2,0,46,0,13,26,16,0,44,0,32,26,0,66,0,65,11,2,17,0,1,34,0,114,17,34,0,103,32,0,174,11,3,0,22,16,0,44,0,35,26,32,0,13,17,27,16,33,0,199,48,6,32,0,5,32,0,6,11,2,0,46,0,35,0,53,0,35,0,53,32,0,195,27,0,44,0,22,26,0,61,21,27,26,32,0,199,34,0,199,0,35,0,53,34,0,198,0,36,0,61,17,27,0,55,34,0,111,0,10,34,0,105,17,0,8,16,0,29,16,32,1,38,16,0,35,34,0,174,17,0,44,0,35,26,32,0,13,17,27,16,11,2,17,33,0,200,48,6,32,0,49,0,32,0,53,34,0,49,27,0,55,32,0,59,27,16,33,0,59,49,0,11,0,65,17,0,10,32,0,77,0,13,0,66,17,0,9,32,0,84,17,17,0,10,33,0,53,50,6,32,0,53,0,32,16,33,0,201,48,0,44,0,35,26,34,0,77,17,33,0,202,48,0,14,0,66,17,0,0,0,66,17,33,0,203,48,0,32,16,33,0,204,48,6,34,0,202,0,11,0,66,17,0,0,34,0,59,0,35,32,0,201,17,0,2,0,67,17,17,0,5,0,70,17,33,0,205,48,6,32,0,52,0,35,32,0,201,17,33,0,206,48,0,50,0,0,26,0,61,17,33,0,207,48,6,32,0,205,0,0,34,0,203,17,0,35,0,53,0,34,0,51,0,35,0,53,32,0,207,0,54,0,35,27,0,33,20,0,32,34,0,206,21,27,27,27,16,0,6,32,0,84,0,32,32,0,53,0,9,32,0,52,17,17,0,8,16,0,1,0,67,17,17,33,0,208,48,6,32,0,201,0,35,32,0,204,17,0,41,32,0,208,0,50,0,0,26,16,0,22,0,65,17,0,26,0,35,34,0,207,21,0,0,34,0,205,21,0,35,0,0,0,19,0,51,0,38,27,21,34,0,204,21,0,44,0,22,26,0,25,21,0,61,17,17,0,41,0,53,0,32,27,34,0,208,17,33,0,201,49,6,34,0,85,0,32,32,0,52,17,34,0,84,0,8,16,0,32,32,0,52,17,32,0,52,0,32,16,0,32,0,53,34,0,53,0,32,34,0,52,17,27,0,55,34,0,201,27,16,11,3,33,0,209,48,6,34,0,187,0,13,0,52,0,1,27,32,0,197,17,0,16,34,0,195,17,0,22,0,66,17,0,32,16,32,0,150,0,46,0,13,26,16,0,0,34,0,87,17,34,0,150,34,0,163,11,4,33,0,210,48,6,34,0,196,0,36,0,61,17,0,22,34,0,197,17,34,0,179,34,0,209,34,0,210,34,0,200,11,5,7,11,0,0,46,0,174,0,51,0,42,27,26,11,0,0,65,0,27,16,11,4,33,0,3,48,6,34,0,2,0,13,0,11,0,70,21,0,58,0,24,27,16,0,43,34,0,3,26,0,26,0,13,21,0,54,0,22,27,16,33,0,4,33,0,5,33,0,6,33,0,7,12,4,48,6,34,0,1,32,1,41,34,0,5,32,0,6,11,2,17,33,0,8,48,33,0,9,33,0,10,33,0,11,33,0,12,33,0,13,12,5,48,6,34,0,9,32,1,43,34,0,10,32,0,11,0,36,16,34,0,12,34,0,13,34,0,6,0,46,0,65,26,16,0,29,34,0,7,17,11,5,17,33,0,14,33,0,15,33,0,16,33,0,17,33,0,18,12,5,48,6,34,0,14,34,0,11,0,26,0,66,17,0,22,34,0,4,0,35,34,0,15,17,11,1,17,0,22,16,34,0,16,0,12,16,0,31,16,0,45,0,11,26,16,34,0,17,0,12,16,0,31,16,0,45,0,11,26,16,34,0,18,34,0,8,11,6,7,34,0,1,34,0,2,16,7,32,0,1,0,35,0,53,32,0,2,0,32,34,0,1,17,27,0,55,0,46,0,66,26,27,16,32,1,13,34,0,2,0,44,0,35,26,16,17,7,34,0,1,0,32,16,0,36,16,0,117,11,2,0,42,16,7,34,0,1,0,22,0,65,17,0,35,0,53,0,50,0,0,26,27,32,1,31,17,0,9,32,1,32,17,0,32,16,0,118,11,2,0,42,16,7,32,1,26,0,32,34,0,1,17,0,119,11,2,0,42,16,7,32,1,26,0,32,34,0,1,17,0,120,11,2,0,42,16,7,34,0,2,0,32,34,0,1,17,0,44,0,35,26,32,1,26,17,0,121,11,2,0,42,16,7,32,0,2,0,44,0,32,26,33,1,26,50,6,32,0,2,0,44,0,32,26,33,1,25,50,6,34,0,1,0,32,34,0,2,17,7,0,49,0,10,26,0,58,34,0,1,0,24,34,0,2,0,54,0,32,27,21,0,42,20,27,7,32,0,1,0,54,0,36,27,33,0,3,48,6,0,26,0,25,11,2,0,46,1,25,26,16,33,0,4,33,0,5,12,2,48,6,0,36,0,55,0,26,0,53,0,61,27,27,0,24,20,33,0,6,48,6,0,46,0,25,26,0,30,20,0,46,0,22,26,0,46,0,26,26,21,0,53,0,61,0,65,11,2,27,33,0,7,48,6,1,26,33,0,8,48,6,32,2,16,32,2,25,34,0,1,17,0,32,16,0,30,16,0,49,0,46,34,0,8,26,0,22,20,0,32,0,53,0,46,0,36,26,0,39,20,27,20,0,25,0,53,0,13,0,5,0,79,21,27,20,26,0,65,0,27,16,0,44,0,24,26,16,0,24,16,17,0,46,0,22,26,16,0,36,0,53,0,46,0,13,26,0,49,0,5,26,0,37,0,20,21,0,36,20,20,27,16,33,0,9,48,6,0,66,32,0,9,32,1,10,34,0,9,32,2,30,0,130,17,27,16,7,0,14,0,58,0,49,0,10,26,27,0,58,34,0,1,0,24,34,0,2,0,54,0,32,27,0,44,0,66,0,57,0,35,27,26,0,43,32,1,6,26,0,23,32,1,5,21,21,0,31,0,51,0,9,27,20,21,0,42,20,27,7,32,1,15,0,22,0,65,17,0,32,32,0,1,17,0,12,32,2,16,0,36,16,0,0,0,70,17,17,32,1,13,0,22,0,65,21,0,32,34,0,1,21,32,1,10,0,135,27,16,7,34,0,1,0,6,33,1,26,50,0,14,0,67,17,32,1,27,32,1,10,34,0,4,27,16,7,32,2,28,32,2,25,34,0,1,17,0,9,32,1,47,0,14,0,65,17,17,7,32,1,5,0,35,0,53,32,0,1,27,0,55,32,1,5,0,35,32,0,2,17,27,16,33,1,5,49,6,32,1,6,0,35,0,53,34,0,2,27,0,55,32,1,6,0,35,34,0,1,17,27,16,33,1,6,49,7,32,1,25,0,35,32,0,1,17,0,2,0,53,0,8,27,32,1,124,17,0,6,33,1,125,50,0,14,0,67,17,32,1,31,0,51,0,33,27,0,35,34,0,1,21,32,1,10,0,163,27,16,7,32,1,151,0,35,0,53,32,0,1,27,0,13,0,53,0,29,27,20,0,52,0,10,27,32,1,152,17,0,8,16,32,1,136,0,32,0,53,32,1,140,27,0,54,0,22,27,20,0,35,34,0,1,21,32,1,10,0,170,27,16,7,0,44,0,24,34,0,1,20,0,54,0,46,0,22,26,27,26,0,24,20,7,34,0,1,32,1,4,32,1,5,0,20,32,1,6,20,32,1,7,0,54,34,0,0,27,0,22,32,1,5,21,11,2,0,56,0,36,0,36,0,61,21,0,54,32,1,3,0,52,0,1,27,27,0,13,0,66,21,27,11,2,0,56,0,20,0,51,0,36,0,51,0,13,27,27,0,11,0,65,21,27,11,2,0,56,32,1,3,0,7,0,67,21,27,34,0,2,19,7] - ,[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[18],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[52],runtime[53],runtime[54],runtime[55],runtime[56],runtime[57],runtime[59],runtime[60],runtime[62],10,13,-1,11,26,9,0,1,2,5,8,4,3,-3,-2,6,7,17,Math.PI,Infinity,64,-4,-5,-6,32,48,43,44,42,66,24,16,14,'\0','0','#','\'','\"','@',str("⋄,"),str(":;?"),str("⇐←↩"),str("(){}⟨⟩[]"),str("‿"),str("·"),str("𝕊𝕏𝕎𝔽𝔾𝕤𝕩𝕨𝕣𝕗𝕘"),str(".¯π∞"),str("_"),str("aA"),str("•"),str("𝕨"),str(" "),str("#\'\"@"),str("s"),str("Unknown character"),str(": "),str("Character set conflict: "),str("˜⁼"),str("Unclosed quote"),str("Words can\'t only have underscores"),str("System dot with no name"),str("𝕣 can\'t be used with other word characters"),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("Unmatched bracket"),str("Empty program"),str("Swapped open and closed brackets"),str("Parentheses can\'t contain separators"),str("Predicates can\'t be placed inside lists"),str("Empty statement or expression"),str("Invalid assignment or stranding use"),str("Can\'t use export statement as predicate"),str("Dot must be followed by a name"),str("Punctuation : ; ? not allowed outside blocks"),str("Header-less bodies must come last"),str("At most two header-less bodies allowed"),str("Invalid Undo header syntax"),str("Only one header per body allowed"),str("Missing operand in header"),str("Invalid header structure"),str("Incorrect special name"),str("Header left argument without right"),str("Header operation must be a plain name"),str("Header with ⁼ must take arguments"),str("Header with ˜⁼ must have left argument"),str("Block header type conflict"),str("Special name outside of any block"),str("Unreachable body"),str("Dot must be preceded by a subject"),str("Nothing (·) cannot be assigned"),str("Can\'t use Nothing (·) as predicate"),str("Missing operand"),str("Double subjects (missing ‿?)"),str("No right-hand side in non-modified assignment"),str("Role of the two sides in assignment must match"),str("Can\'t use Nothing (·) in lists"),str("Square brackets can\'t be empty"),str("Can\'t return Nothing (·)"),str("Invalid use of 𝕨 in monadic case"),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("Aliases can only appear in ⟨⟩ bracketed lists"),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("System values not supported")] + [1,1,7,34,0,1,33,0,3,33,0,4,33,0,5,12,3,48,6,0,59,0,60,11,2,0,0,0,92,17,33,0,6,48,6,34,0,3,32,0,4,34,0,5,32,0,6,0,22,0,98,17,0,99,0,100,0,101,0,102,0,103,0,104,0,21,0,62,0,51,11,2,17,0,45,0,35,26,0,61,17,0,105,0,59,0,27,16,0,0,0,93,17,0,63,33,0,7,48,0,27,16,0,47,0,0,26,0,107,17,0,21,16,0,44,0,22,26,0,106,17,0,64,0,0,0,92,17,0,22,0,110,17,0,22,0,109,0,26,0,61,17,17,0,22,0,108,17,0,111,11,15,0,46,0,13,26,0,24,0,22,21,16,33,0,8,33,0,9,12,2,48,6,32,0,9,0,50,0,0,26,0,29,0,65,21,0,54,0,44,0,46,0,24,26,26,27,16,33,0,10,33,0,11,33,0,12,33,0,13,33,0,14,33,0,15,33,0,16,33,0,17,33,0,18,33,0,19,33,0,20,33,0,21,33,0,22,33,0,23,33,0,24,12,15,48,6,0,36,0,54,0,1,27,0,12,0,9,0,15,0,53,0,65,27,21,0,36,0,53,0,66,27,21,33,0,25,48,6,32,0,13,0,36,16,33,0,26,48,6,32,0,14,0,36,16,0,0,0,67,17,33,0,27,48,6,0,68,0,1,0,54,0,24,27,16,0,0,32,0,19,17,33,0,28,48,6,32,0,19,0,36,16,0,0,0,69,17,33,0,29,48,6,0,13,0,11,0,66,21,0,44,0,32,26,0,112,21,0,54,0,22,27,33,0,30,48,6,1,2,33,0,31,48,6,1,3,32,0,8,26,33,0,32,48,6,0,116,0,32,0,53,34,0,4,0,54,0,39,27,27,16,32,0,32,16,33,0,33,48,6,32,0,20,0,36,16,33,0,34,48,0,0,0,66,17,33,0,35,48,6,0,66,0,67,0,71,0,61,0,61,0,72,0,61,0,65,11,2,0,73,0,65,0,68,0,74,11,2,0,32,16,0,8,16,11,10,0,43,34,0,9,26,0,25,0,13,21,0,54,0,44,0,46,0,21,26,26,27,16,0,22,16,0,44,0,22,26,0,70,17,33,0,36,48,6,0,2,0,50,0,6,26,20,33,0,37,48,6,32,0,37,0,53,0,13,0,51,0,27,27,27,33,0,38,48,6,32,0,37,0,53,0,13,0,51,0,27,27,0,0,0,66,21,27,33,0,39,48,6,0,19,0,32,0,10,21,0,44,0,22,26,0,32,0,22,21,0,66,21,33,0,40,48,6,1,4,33,0,41,48,6,1,5,33,0,42,48,6,1,6,33,0,43,48,6,1,7,33,0,44,48,7,34,0,1,0,11,16,0,46,1,8,26,34,0,4,17,0,22,16,7,32,1,31,32,1,30,0,53,0,113,27,0,114,0,20,11,3,26,0,42,20,33,0,2,48,6,32,0,1,0,54,0,35,27,0,54,0,18,0,58,0,19,0,32,0,13,21,0,51,34,0,2,27,27,27,0,19,0,20,21,33,0,3,48,6,32,0,1,0,35,34,0,1,0,33,16,33,0,4,48,17,33,0,5,48,0,26,0,53,0,1,27,0,14,0,26,21,0,66,17,0,49,0,10,26,0,58,0,22,0,53,0,65,27,0,44,0,32,26,32,0,5,21,0,22,0,115,21,0,42,20,27,16,6,0,20,0,33,34,0,5,21,0,6,0,66,21,0,44,0,1,26,0,66,21,0,44,0,35,26,34,0,4,21,34,0,3,0,20,21,7,34,0,2,33,0,3,33,0,4,12,2,48,6,0,94,0,14,32,0,1,17,33,0,5,48,6,0,95,0,14,32,0,1,17,33,0,6,48,0,9,0,53,0,28,0,53,0,65,0,65,11,2,27,27,16,0,32,16,33,0,7,48,6,0,96,0,14,32,0,1,17,33,0,8,48,0,32,16,33,0,9,48,6,32,0,7,32,0,9,0,26,0,61,17,32,0,5,0,32,16,11,3,0,22,16,33,0,10,48,0,33,16,33,0,11,48,6,32,0,10,0,35,32,0,11,17,33,0,10,49,6,34,0,7,0,0,0,67,17,34,0,9,0,26,0,66,17,0,66,0,22,32,1,6,0,39,32,0,1,17,17,0,32,16,0,32,0,53,32,0,5,0,50,0,0,26,16,0,22,0,65,17,0,54,0,35,0,51,0,29,0,54,0,1,27,27,27,27,16,11,3,0,22,16,0,35,34,0,11,17,33,0,12,48,6,0,20,0,36,0,61,21,0,14,0,65,21,0,58,1,9,27,33,0,13,48,6,0,32,0,53,32,0,12,0,33,32,0,10,17,0,46,0,65,26,0,22,0,66,21,32,0,13,0,13,0,54,0,22,27,21,0,25,0,13,21,16,27,0,48,0,32,26,20,0,25,32,0,1,0,13,16,21,33,0,14,48,6,34,0,10,32,0,14,16,33,0,15,48,6,34,0,12,34,0,14,16,33,0,16,48,6,32,0,16,0,10,32,0,15,17,33,0,17,48,0,50,0,13,26,0,66,17,33,0,18,48,6,32,0,18,0,11,34,0,16,17,0,9,32,0,8,0,10,32,0,6,17,17,0,49,0,10,26,0,58,1,10,27,16,6,0,97,0,14,32,0,1,17,0,9,32,0,18,17,33,0,19,48,6,34,0,6,0,9,32,0,15,17,0,29,16,0,10,32,0,19,17,0,32,16,33,0,20,48,6,32,0,20,34,0,19,0,54,0,35,27,0,2,0,92,0,1,0,97,17,21,0,1,32,0,1,0,54,0,35,27,21,16,33,0,21,48,6,32,0,8,0,9,33,0,15,50,0,28,16,0,9,32,0,8,17,33,0,22,48,0,12,33,0,18,50,6,34,0,17,0,9,34,0,8,17,0,50,0,13,26,16,0,11,0,66,0,54,0,22,27,0,52,0,2,0,53,0,50,0,0,26,27,27,0,19,21,34,0,22,0,29,16,0,12,34,0,15,17,33,0,23,48,17,0,44,0,1,26,0,66,17,0,44,0,41,26,32,0,1,17,33,0,24,48,6,32,0,18,0,32,16,33,0,25,48,6,32,0,18,0,29,0,66,17,0,32,16,0,25,0,53,0,13,27,32,0,25,17,33,0,26,48,6,32,0,25,34,0,5,0,54,0,35,27,0,2,0,1,21,32,0,26,17,0,1,33,0,26,50,6,34,0,1,0,35,32,0,25,17,32,1,32,16,33,0,27,48,6,32,1,21,32,1,25,32,0,27,17,0,28,16,0,12,32,1,20,0,36,16,0,14,32,0,27,17,17,33,0,28,48,6,32,1,29,0,14,32,0,27,17,33,0,29,48,6,32,1,23,0,36,0,52,0,44,0,1,26,0,24,0,19,21,27,32,1,20,17,32,1,25,32,0,27,17,0,11,34,0,28,17,0,10,32,0,29,17,33,0,30,48,0,11,0,53,0,29,27,16,33,0,31,48,6,32,1,22,0,49,0,0,26,16,0,0,0,61,17,0,14,32,0,27,17,33,0,32,48,6,32,1,23,0,36,16,0,14,32,0,27,17,33,0,33,48,6,32,0,32,0,12,32,0,30,17,0,19,0,32,0,10,21,0,28,0,32,0,20,21,0,66,21,0,11,0,32,21,32,0,31,17,0,49,0,10,26,0,58,1,11,27,16,6,32,0,27,0,32,32,0,31,17,0,44,0,1,26,32,1,22,0,36,16,17,0,44,0,3,0,51,0,5,27,26,32,1,7,17,0,2,32,0,29,0,32,32,0,31,17,0,8,16,17,33,0,34,48,6,32,1,22,0,36,16,0,0,32,1,7,17,0,16,32,0,27,17,0,9,32,0,30,17,0,2,32,1,7,17,0,1,33,0,27,50,6,32,0,30,0,28,16,0,12,32,0,33,17,0,49,0,10,26,0,58,1,12,27,16,6,32,0,33,0,10,0,53,0,29,27,16,0,13,33,0,31,50,6,34,0,33,0,32,32,0,31,17,0,20,0,0,0,8,0,54,0,2,27,21,0,65,0,16,32,0,34,17,0,2,0,67,17,17,33,0,35,48,0,11,0,65,17,33,0,36,48,6,32,0,36,0,8,16,0,22,0,65,17,0,35,32,0,31,0,50,0,0,26,16,17,0,9,32,0,30,17,33,0,37,48,0,12,32,0,30,17,33,0,38,48,6,32,0,30,0,2,32,0,27,17,0,22,0,53,0,65,27,0,32,32,0,37,0,22,0,65,17,0,28,0,54,0,10,27,16,0,11,32,0,32,0,22,0,65,17,17,21,0,52,32,1,42,27,32,0,26,17,33,0,39,48,6,34,0,34,0,32,32,0,36,17,0,14,0,53,0,67,27,0,54,0,9,27,0,0,0,20,21,32,0,38,0,11,0,53,0,28,27,16,0,44,0,32,26,32,0,32,17,17,33,0,40,48,6,32,0,37,0,12,32,0,31,17,0,50,0,0,26,16,0,2,32,0,32,0,12,32,0,38,17,17,33,0,41,48,0,11,0,53,0,50,0,6,26,0,29,20,27,16,33,0,42,48,6,32,0,29,0,32,32,0,42,17,0,11,32,0,35,0,32,34,0,36,17,0,14,0,66,17,17,33,0,43,48,6,32,0,31,33,0,44,48,0,9,34,0,37,17,0,10,32,0,42,17,33,0,31,49,6,32,0,29,0,32,32,0,31,17,0,8,16,0,44,0,32,26,33,0,35,50,0,32,0,53,0,11,0,53,0,65,27,27,16,0,14,0,66,17,33,0,45,48,6,32,0,43,0,22,0,65,17,0,35,32,0,41,17,0,11,0,53,32,0,42,27,0,10,0,13,0,53,32,0,29,27,21,16,0,9,32,0,32,0,12,34,0,38,17,17,0,49,0,10,26,0,58,1,13,27,16,6,34,0,42,0,11,32,0,29,17,0,32,16,32,0,27,0,54,0,35,27,0,12,32,1,22,0,36,16,21,0,11,32,0,45,21,0,54,0,20,0,49,0,10,26,20,0,58,1,14,27,27,16,6,34,0,43,0,8,16,0,2,0,53,0,50,0,0,26,27,16,0,22,0,65,17,0,44,0,1,26,0,66,17,0,35,33,0,41,50,6,32,1,8,0,35,32,0,27,17,0,41,34,0,41,17,0,41,0,67,0,22,34,0,45,17,17,0,36,0,55,0,22,0,53,32,0,4,27,27,16,33,0,46,48,6,34,0,18,0,29,16,0,50,0,0,26,16,0,35,34,0,23,0,32,16,0,22,34,0,20,17,17,0,22,34,0,29,0,12,32,0,31,17,0,32,16,0,35,0,53,0,34,27,34,0,35,17,17,33,0,47,48,6,34,0,39,34,0,21,34,0,24,11,3,0,22,34,0,46,17,33,0,48,48,6,32,0,48,0,46,0,37,26,16,33,0,49,48,0,44,0,46,0,32,0,53,0,50,0,6,26,0,29,0,61,21,0,12,0,20,21,27,26,26,33,0,48,50,6,32,0,48,0,36,0,53,0,66,27,0,55,34,0,3,27,16,33,0,48,49,6,32,1,23,32,1,25,32,0,27,17,0,10,32,0,30,17,0,8,16,33,0,50,48,6,34,0,44,0,10,32,0,50,17,0,44,0,32,26,33,0,26,50,6,34,0,30,0,28,0,54,0,12,27,16,0,10,32,0,50,17,0,44,0,32,26,33,0,25,50,6,32,0,27,0,35,0,53,34,0,47,27,0,55,32,0,48,0,46,0,13,26,16,33,0,51,48,0,29,32,1,35,17,0,50,0,0,26,16,0,0,34,0,49,17,0,22,16,0,26,0,53,0,13,27,34,0,4,17,27,16,0,32,34,0,50,0,10,32,0,31,17,17,33,0,27,49,6,32,1,13,0,36,0,54,0,1,27,0,2,32,1,25,21,32,0,27,17,0,1,33,0,27,50,6,32,1,26,0,14,32,0,27,17,0,44,0,22,26,0,13,0,22,21,0,66,17,0,32,16,0,26,0,66,17,0,26,0,61,17,33,0,52,48,0,46,0,66,26,16,0,50,0,13,26,16,33,0,53,48,6,32,1,16,0,36,16,0,0,0,71,0,68,0,75,11,3,17,33,0,54,48,6,32,0,27,0,35,32,0,53,0,1,32,0,52,17,17,0,0,0,53,32,0,53,27,0,44,0,39,26,34,0,54,21,0,10,32,1,14,0,54,32,1,25,27,21,16,0,28,0,54,0,10,27,16,0,12,34,0,53,17,0,44,0,32,26,34,0,52,17,33,0,55,48,6,32,1,26,0,13,32,0,27,17,0,35,0,53,34,0,55,27,0,55,0,46,0,66,26,27,16,0,44,1,15,26,33,0,27,50,6,34,0,51,0,25,0,67,17,0,49,0,0,26,16,0,24,32,1,35,17,32,1,25,32,0,27,17,0,10,32,1,29,0,14,32,0,27,17,17,33,0,56,48,6,0,65,0,22,32,1,36,17,0,35,32,0,27,0,5,32,1,35,17,17,0,32,0,53,34,0,56,27,0,55,34,0,40,27,16,33,0,57,48,6,32,0,27,0,15,0,53,0,0,0,53,0,71,27,27,0,0,0,68,21,0,2,0,68,0,54,0,24,27,32,1,25,0,20,21,21,32,1,19,0,36,16,17,0,0,33,0,27,50,6,32,0,27,0,14,0,2,0,59,21,0,0,0,11,21,32,1,34,17,0,1,33,0,27,50,6,34,0,27,34,0,57,34,0,48,32,0,26,32,0,25,11,5,7,1,16,33,0,3,48,6,32,1,31,32,1,30,0,53,0,122,27,0,123,32,1,8,0,54,0,35,27,0,124,11,4,26,33,0,4,48,6,32,1,20,0,49,0,27,0,54,0,0,27,26,16,0,22,0,125,0,49,0,1,26,16,0,0,32,1,22,0,36,16,17,17,0,46,32,0,1,0,54,0,14,27,26,16,33,0,5,33,0,6,33,0,7,33,0,8,33,0,9,12,5,48,6,32,1,22,0,36,16,0,11,32,0,1,17,0,10,32,0,5,17,0,8,16,0,10,32,1,29,0,14,32,0,1,17,17,32,0,2,32,0,3,32,0,1,0,54,0,32,27,0,51,34,0,4,27,27,16,6,32,0,1,0,14,0,65,17,33,0,10,48,0,10,32,0,5,17,33,0,11,48,0,10,32,0,6,17,33,0,12,48,6,32,0,11,0,10,32,0,7,17,0,8,16,33,0,13,48,6,32,0,11,0,29,16,0,12,32,0,7,17,32,0,2,32,0,3,0,126,27,16,6,32,0,12,0,10,32,0,7,17,0,9,32,0,12,0,28,0,66,17,17,32,0,2,32,0,3,0,127,27,16,6,32,0,1,0,32,32,0,12,17,0,11,0,53,0,29,27,0,10,0,14,0,53,0,65,27,21,16,0,8,16,32,0,2,0,32,34,0,12,21,32,0,3,0,128,27,16,6,32,0,5,0,29,16,0,12,32,0,7,17,0,10,32,0,10,17,0,28,0,10,34,0,5,0,28,16,0,9,32,0,8,17,21,0,9,0,29,21,0,66,17,0,12,32,0,9,0,10,34,0,8,17,17,34,0,2,34,0,3,0,129,27,16,6,32,0,13,0,9,0,53,0,8,32,1,39,0,52,0,12,27,32,1,21,0,36,16,0,13,32,0,1,17,0,11,32,0,6,17,21,0,15,0,28,21,27,16,33,0,14,48,0,9,0,53,0,50,0,0,26,32,1,37,0,1,0,20,21,0,8,21,0,16,0,76,21,27,16,33,0,15,48,6,32,1,20,0,36,16,0,0,0,66,17,0,1,34,0,1,17,0,2,32,0,15,17,0,32,32,0,6,0,8,16,17,0,44,0,35,26,0,59,0,27,16,0,22,0,77,0,66,11,2,17,0,22,0,61,17,17,33,0,16,48,6,32,0,16,0,50,0,0,0,53,0,59,0,54,0,2,27,27,0,2,0,15,0,53,0,65,27,21,26,0,65,17,0,32,34,0,16,0,15,0,65,17,0,28,0,54,0,12,27,16,17,33,0,17,48,6,34,0,7,0,29,16,0,32,34,0,13,0,29,0,54,0,12,27,16,33,0,18,48,17,0,44,0,35,26,0,66,0,61,11,2,17,0,2,33,0,17,50,6,34,0,10,0,32,34,0,11,17,33,0,19,48,6,34,0,14,0,28,0,54,0,12,27,0,32,20,0,52,0,1,0,53,34,0,6,0,28,16,32,1,39,16,0,54,0,35,27,27,0,20,0,2,0,11,21,0,1,0,53,0,29,27,21,0,1,0,1,21,27,34,0,15,17,0,32,32,0,19,17,33,0,20,48,6,32,0,19,0,8,16,0,2,32,0,17,17,0,28,16,0,32,32,0,19,17,0,44,0,1,26,34,0,20,17,33,0,21,48,0,7,16,0,4,0,59,17,33,0,22,48,6,0,66,0,78,11,2,0,35,34,0,9,0,32,34,0,18,17,17,0,2,34,0,17,17,0,32,34,0,19,17,0,32,0,53,32,0,21,0,11,0,65,17,27,0,55,0,2,27,32,0,22,17,0,32,0,53,34,0,21,0,12,0,65,17,27,0,55,0,44,0,3,26,27,34,0,22,17,7,34,0,2,33,0,3,33,0,4,33,0,5,33,0,6,33,0,7,12,5,48,6,34,0,4,0,13,16,33,0,8,48,6,1,17,33,0,9,48,6,1,18,33,0,10,48,6,32,0,1,0,13,16,0,11,0,65,17,0,42,0,131,17,6,32,1,16,32,1,25,32,0,1,17,0,2,32,0,3,0,2,0,67,17,0,1,0,61,17,17,33,0,11,48,0,50,0,0,26,16,33,0,12,48,0,33,16,33,0,13,48,6,0,61,0,14,32,0,3,17,0,35,32,0,13,17,33,0,14,48,6,32,0,1,0,35,32,0,13,17,33,0,15,48,0,32,0,53,0,65,0,54,0,11,27,27,0,44,0,1,26,0,66,21,0,17,0,32,0,53,0,65,0,54,0,12,27,27,21,32,0,11,0,35,32,0,13,17,17,0,8,0,58,32,0,1,0,51,34,0,9,27,27,16,6,34,0,12,0,36,32,0,13,0,36,16,17,0,12,0,65,17,32,0,13,0,25,0,66,21,32,0,10,0,132,27,16,6,32,0,15,0,32,32,0,14,17,33,0,16,48,0,14,0,53,32,1,26,27,0,10,0,14,0,53,32,1,27,27,21,0,9,0,53,0,29,27,0,14,0,53,32,1,16,0,36,16,27,21,16,32,0,13,0,32,32,0,14,21,32,0,10,0,133,27,16,6,0,14,0,53,0,67,0,54,0,0,27,27,0,10,0,14,21,33,0,17,48,6,32,0,16,0,32,0,53,0,13,0,53,32,1,26,27,27,16,0,14,0,53,32,1,27,27,0,9,0,53,0,29,27,32,0,17,0,53,32,1,16,0,36,16,0,0,0,70,17,27,21,16,32,0,13,0,32,32,0,14,21,0,32,34,0,16,0,13,32,1,26,21,21,32,0,10,0,134,27,16,6,34,0,14,0,22,0,66,17,0,9,0,53,0,28,0,53,0,66,27,27,16,1,19,16,6,0,70,0,14,32,0,3,17,33,0,18,48,0,10,0,53,0,28,27,16,33,0,19,48,6,32,0,11,0,0,32,0,3,17,0,15,0,65,17,0,11,32,0,18,17,0,28,16,33,0,20,48,0,12,32,1,15,0,36,16,0,14,32,0,1,17,17,0,1,33,0,3,50,6,32,0,3,0,15,0,65,17,0,11,32,0,18,17,0,29,16,0,9,32,1,15,0,36,16,0,0,0,67,17,0,14,32,0,1,17,0,10,34,0,20,17,17,0,12,32,0,3,0,73,0,54,0,15,27,0,9,0,11,0,53,0,80,27,21,16,17,0,13,0,27,20,32,0,10,0,136,27,16,6,32,1,27,0,14,32,0,1,17,0,9,32,0,3,0,14,0,80,17,0,29,16,17,0,13,0,27,20,32,0,10,0,137,27,16,6,32,1,34,32,0,8,11,2,32,1,25,32,0,1,17,0,28,16,0,12,32,0,18,17,0,13,0,27,20,32,0,10,0,138,27,16,6,0,73,0,14,32,0,3,17,0,10,0,53,0,28,27,16,33,0,21,48,0,35,0,53,32,0,13,0,35,0,53,32,0,19,0,54,0,35,27,0,33,20,27,16,27,0,55,0,29,27,16,33,0,22,48,6,32,0,22,0,10,32,0,21,17,0,8,16,33,0,23,48,6,32,1,16,0,36,16,0,0,0,66,17,0,14,32,0,1,17,33,0,24,48,6,32,1,18,0,36,16,0,14,32,0,1,17,0,2,0,67,17,0,0,32,1,28,0,36,16,0,0,0,67,17,0,14,32,0,1,17,17,0,35,32,0,24,0,8,16,32,1,38,16,17,33,0,25,48,6,0,65,33,0,26,48,6,32,0,25,0,13,16,0,27,16,33,0,27,48,6,1,20,33,0,28,48,6,32,0,19,0,10,32,0,21,17,33,0,29,48,0,35,32,0,13,17,0,33,16,0,44,0,35,26,33,0,13,50,6,32,0,3,0,13,16,0,27,16,0,35,0,53,32,0,13,27,0,55,0,29,0,53,0,13,27,27,16,33,0,30,48,6,0,61,0,14,32,0,3,17,0,10,34,0,29,17,0,35,32,0,13,17,0,22,0,66,17,0,0,0,53,0,50,0,0,26,27,16,0,33,16,0,44,0,35,26,0,8,0,33,0,54,0,44,0,35,26,27,21,0,35,0,53,0,33,27,0,19,21,32,0,13,0,22,0,61,17,17,0,26,0,61,17,0,50,0,0,26,16,0,33,16,33,0,31,48,6,32,1,16,0,36,16,0,0,0,67,17,0,67,11,2,32,1,25,32,0,1,17,0,2,32,0,11,17,0,35,32,0,31,17,33,0,32,48,0,50,0,0,26,16,33,0,33,48,0,33,16,33,0,34,48,6,32,0,34,0,44,0,35,26,33,0,31,50,6,32,0,34,0,44,0,35,26,33,0,33,50,6,32,0,34,0,44,0,35,26,33,0,32,50,6,32,0,31,0,44,0,35,26,33,0,1,50,6,32,0,31,0,44,0,35,26,33,0,18,50,6,32,0,31,0,44,0,35,26,33,0,5,50,6,32,0,31,0,44,0,35,26,33,0,6,50,6,32,0,11,0,35,32,0,31,17,0,44,0,1,26,32,0,32,17,33,0,11,49,0,50,0,0,26,16,0,33,16,33,0,13,49,6,34,0,11,0,35,32,0,13,17,0,12,32,0,13,0,54,0,32,27,0,52,0,24,27,0,11,21,0,65,17,33,0,35,48,6,32,0,18,0,10,0,53,0,28,27,16,0,35,32,0,13,17,0,33,16,0,44,0,35,26,33,0,13,50,6,32,0,31,0,35,32,0,13,17,33,0,36,48,6,32,0,21,0,1,32,0,22,17,0,35,32,0,36,17,0,12,0,32,0,52,0,1,27,0,11,21,0,65,17,0,44,0,3,26,0,67,17,0,0,0,66,17,33,0,37,48,6,32,1,16,0,36,16,0,0,0,68,17,0,44,32,0,17,26,32,0,1,17,0,35,32,0,13,17,0,32,16,33,0,38,48,6,0,65,0,12,32,0,32,17,33,0,39,48,6,0,65,0,11,34,0,32,17,0,32,16,33,0,40,48,6,32,0,39,0,32,16,32,0,40,11,2,0,46,0,22,26,33,0,35,50,6,32,0,21,0,35,32,0,36,17,0,33,16,33,0,41,48,0,44,0,35,26,33,0,13,50,6,32,0,31,0,35,32,0,13,17,33,0,36,49,6,32,0,13,0,33,16,33,0,42,48,6,32,1,14,0,36,16,0,14,32,0,1,17,33,0,43,48,6,32,1,14,0,36,16,0,0,0,66,17,0,14,32,0,1,17,33,0,44,48,6,32,1,27,0,14,32,0,1,17,33,0,45,48,6,32,0,45,0,10,32,0,44,17,0,10,32,0,43,17,0,11,32,0,39,0,50,0,10,26,16,17,0,13,0,27,20,32,0,10,0,139,27,16,6,32,0,44,0,10,32,0,39,17,33,0,46,48,0,50,0,0,26,16,33,0,47,48,6,0,20,32,1,40,0,51,0,8,27,32,0,46,21,33,0,48,48,6,32,0,43,32,0,48,16,33,0,49,48,0,10,34,0,45,32,0,48,16,17,33,0,50,48,6,32,0,44,0,32,32,0,46,17,33,0,51,48,0,8,16,0,22,0,66,17,33,0,52,48,6,32,0,51,0,28,0,54,0,10,27,16,0,22,0,65,17,33,0,53,48,6,32,0,50,0,26,0,9,32,0,51,21,0,11,0,26,0,53,0,1,27,21,0,66,17,32,0,46,0,32,20,32,0,10,0,140,27,16,6,32,0,50,0,26,0,61,17,0,12,32,0,51,17,0,9,0,53,0,29,27,16,32,0,46,0,32,20,32,0,10,0,141,27,16,6,34,0,44,0,32,16,0,22,32,0,40,17,0,35,34,0,51,0,28,16,0,33,16,0,33,16,17,33,0,54,48,6,32,0,43,0,10,32,0,46,17,0,35,0,53,32,0,13,0,30,16,27,0,55,32,1,38,0,54,0,44,0,35,26,27,27,34,0,43,17,33,0,55,48,0,32,16,33,0,56,48,6,32,0,1,0,35,32,0,56,17,0,37,0,1,0,19,0,51,0,13,27,21,32,1,33,17,33,0,57,48,0,14,0,65,17,33,0,58,48,6,32,0,57,0,14,0,53,0,67,27,0,9,32,0,58,0,29,0,66,17,21,0,10,0,16,0,53,0,29,27,21,16,0,11,32,0,58,17,32,0,56,32,0,10,0,142,27,16,6,32,0,57,0,29,16,0,32,34,0,58,17,33,0,59,48,6,34,0,57,0,14,0,65,17,0,44,0,32,26,33,0,56,50,6,32,0,56,0,44,0,35,26,32,0,31,17,32,0,3,0,54,0,35,27,0,2,32,0,23,0,54,0,35,27,21,16,33,0,60,48,6,32,0,60,0,14,0,61,17,33,0,61,48,0,28,0,0,0,29,0,53,0,66,27,21,16,33,0,62,48,0,14,0,67,17,33,0,63,48,6,32,0,55,0,35,32,0,56,0,32,32,0,61,17,0,0,0,66,17,17,32,0,56,0,32,32,0,61,21,32,0,10,0,143,27,16,6,32,0,60,0,15,0,67,17,33,0,64,48,0,11,32,0,63,17,0,20,0,9,0,71,0,14,32,0,60,17,21,0,28,20,0,10,0,29,21,16,33,0,65,48,6,34,0,64,0,10,32,0,61,17,0,9,32,0,65,17,0,10,0,71,0,14,32,0,60,17,0,9,32,0,59,17,17,32,0,56,32,0,10,0,144,27,16,6,34,0,62,0,14,0,66,17,0,9,32,0,60,0,14,0,65,17,17,0,11,32,0,65,17,33,0,66,48,0,10,32,0,65,17,0,8,16,33,0,67,48,6,32,0,61,0,32,32,0,67,17,0,14,0,53,0,29,0,53,0,66,27,27,16,32,0,56,0,32,32,0,67,21,32,0,10,0,145,27,16,6,32,0,22,0,35,32,0,31,17,0,8,16,0,2,32,0,1,17,0,35,32,0,56,17,33,0,68,48,0,33,32,0,8,0,22,32,1,28,17,0,50,0,0,26,16,17,0,44,0,1,26,0,66,17,0,7,0,71,17,33,0,69,48,6,32,0,69,0,13,0,66,17,0,9,32,0,60,0,14,0,65,17,17,0,9,32,0,63,17,33,0,70,48,0,12,32,0,67,17,33,0,71,48,6,32,0,70,0,0,33,0,60,50,6,32,0,70,0,12,33,0,63,50,6,32,0,60,0,5,0,67,17,0,44,0,1,26,0,66,17,0,2,0,71,17,0,2,32,0,71,17,0,0,32,0,60,0,14,0,71,17,0,28,16,0,0,0,70,17,0,2,32,0,65,17,17,0,0,32,0,61,0,28,16,0,0,0,66,17,0,2,32,0,66,17,0,0,34,0,70,17,17,33,0,72,48,6,32,1,28,0,36,16,0,0,32,0,72,17,0,13,34,0,68,17,0,9,32,0,69,0,14,0,65,17,17,32,0,56,32,0,10,0,146,27,16,6,32,0,60,0,14,0,65,17,0,9,32,0,63,17,0,10,32,0,61,17,0,8,16,0,2,33,0,69,50,6,32,0,61,0,12,33,0,67,50,6,32,0,67,0,44,0,32,26,33,0,60,50,6,32,0,66,0,32,32,0,61,0,29,0,66,17,17,33,0,73,48,6,34,0,65,0,2,32,0,59,17,0,29,0,54,0,1,27,16,0,1,33,0,59,50,6,32,0,59,0,2,16,0,11,32,0,67,17,32,0,56,32,0,10,0,142,27,16,6,0,65,0,22,32,0,73,17,0,35,0,53,0,50,0,0,26,27,32,0,61,17,0,12,32,0,66,17,32,0,56,32,0,10,0,147,27,16,6,0,67,0,13,32,0,69,17,0,12,34,0,71,17,32,0,56,32,0,10,0,148,27,16,6,32,0,67,0,44,0,32,26,33,0,59,50,6,32,0,60,0,14,0,66,17,0,10,33,0,73,50,6,32,0,59,0,2,16,0,11,32,0,73,17,32,0,56,0,32,32,0,67,21,32,0,10,0,149,27,16,6,32,0,69,0,13,0,65,17,33,0,74,48,0,0,0,66,17,0,2,34,0,66,17,0,6,32,0,63,17,0,29,16,0,32,32,0,61,17,33,0,75,48,6,32,0,59,0,14,0,67,17,33,0,76,48,0,9,32,0,75,0,14,0,65,17,17,32,0,56,32,0,10,0,150,27,16,6,32,0,52,0,28,0,11,0,20,21,0,66,17,0,11,32,0,50,0,29,16,17,0,28,0,54,0,1,27,16,0,0,0,66,17,0,32,0,53,32,0,49,27,0,55,34,0,76,0,2,0,67,17,0,6,34,0,75,17,27,16,33,0,77,48,6,34,0,67,0,44,0,32,26,33,0,63,50,6,32,0,55,0,35,0,53,32,0,56,27,0,55,32,0,74,0,8,16,27,16,33,0,78,48,6,32,0,56,0,32,32,0,74,17,0,44,0,35,26,32,0,42,17,33,0,79,48,6,32,0,69,0,32,32,0,74,17,0,14,0,67,17,33,0,80,48,6,32,1,28,0,36,16,0,1,32,0,1,17,0,35,0,53,34,0,56,27,0,55,0,1,0,53,32,0,72,27,0,2,34,0,69,0,11,0,65,17,21,0,0,0,20,21,27,16,0,33,0,65,0,71,0,68,0,74,11,4,17,33,0,81,48,6,32,1,28,0,36,16,0,0,0,71,17,0,14,32,0,1,17,0,9,0,71,0,14,32,0,3,17,0,35,32,0,31,17,17,0,0,33,0,81,50,6,34,0,81,0,54,0,14,27,32,1,40,0,51,0,8,27,34,0,39,21,0,35,32,0,52,0,50,0,0,26,0,61,17,21,33,0,82,48,6,32,1,28,32,1,25,32,0,1,17,0,11,32,0,78,17,0,32,16,33,0,83,48,6,0,66,32,0,82,16,33,0,84,48,6,0,71,34,0,82,0,52,0,20,0,2,0,67,21,0,6,0,19,21,27,0,67,17,33,0,85,48,0,0,0,53,0,11,0,53,0,65,27,0,10,32,0,84,21,27,16,33,0,86,48,6,32,0,84,0,32,32,0,49,17,0,11,32,0,73,17,0,11,32,0,63,17,0,10,32,0,86,0,32,32,0,49,17,0,11,32,0,60,17,17,32,0,46,0,51,0,32,27,0,22,0,65,21,0,32,32,0,49,21,32,0,10,0,151,27,16,6,32,0,86,0,32,0,53,32,0,49,27,0,55,34,0,60,27,16,33,0,86,49,0,44,0,1,26,0,66,17,0,6,33,0,85,50,6,32,0,84,0,32,0,53,32,0,49,27,0,55,0,6,0,53,34,0,73,27,27,16,33,0,84,49,6,32,0,86,0,36,16,0,11,0,65,17,32,0,1,0,51,1,21,27,0,32,20,32,0,10,0,152,27,16,6,32,0,84,0,12,32,0,53,17,0,11,34,0,50,0,32,0,53,32,0,49,27,0,55,34,0,63,0,8,16,27,16,0,10,0,53,0,29,27,16,17,0,26,0,66,17,32,0,46,0,32,20,32,0,10,0,153,27,16,6,32,0,84,0,2,0,71,17,0,0,0,65,0,67,0,71,11,3,0,35,32,0,85,17,17,33,0,87,48,6,32,0,84,0,32,32,0,49,17,0,8,16,0,2,0,71,17,0,35,34,0,61,0,50,0,0,26,16,0,29,16,17,0,1,33,0,72,50,6,32,0,3,0,35,0,53,32,0,31,0,35,32,0,40,17,27,0,55,34,0,86,0,32,32,0,52,17,0,26,0,66,17,27,16,0,2,32,0,23,17,0,44,0,1,26,32,0,21,17,33,0,3,49,6,32,0,23,0,9,34,0,24,17,33,0,88,48,6,0,65,0,11,32,0,3,17,0,44,0,22,26,0,66,17,0,35,32,0,30,17,33,0,89,48,0,29,16,0,9,32,0,88,17,33,0,90,48,6,32,0,3,0,35,32,0,90,0,8,16,32,1,38,16,17,0,2,32,0,90,17,0,0,32,0,3,17,0,20,0,15,0,67,21,0,11,32,0,89,21,0,1,0,20,21,0,6,0,20,0,14,0,71,21,0,2,34,0,89,0,0,0,66,17,21,0,44,0,22,26,0,65,21,0,35,34,0,30,21,21,16,33,0,91,48,6,32,0,91,0,35,0,0,0,6,0,66,21,0,5,0,20,21,34,0,90,0,8,16,0,50,0,0,26,16,0,54,0,20,0,1,0,35,21,27,21,0,65,0,14,32,0,91,17,0,9,32,0,88,17,0,8,16,32,1,38,16,17,0,6,33,0,91,50,6,32,0,91,0,29,16,0,2,34,0,88,17,0,0,33,0,3,50,6,32,0,25,0,14,0,66,17,0,9,32,0,91,0,13,0,65,17,17,0,10,33,0,26,50,0,8,16,0,2,33,0,25,50,6,32,0,25,0,1,32,0,25,0,14,0,65,17,0,2,32,0,91,17,17,33,0,91,49,6,0,61,0,14,32,0,3,17,0,29,0,66,17,0,9,0,80,0,14,32,0,3,17,17,0,1,33,0,3,50,6,0,65,0,14,32,0,3,17,0,29,16,0,12,0,70,0,14,32,0,3,17,17,32,0,31,0,51,0,33,27,32,0,10,0,154,27,16,6,34,0,19,0,20,0,1,0,8,0,54,0,2,27,21,33,0,3,50,6,32,1,34,0,1,32,0,1,17,33,0,92,48,6,34,0,35,0,49,1,22,26,16,6,32,0,13,0,44,0,35,26,33,0,1,50,6,34,0,55,0,35,32,0,13,17,33,0,93,48,6,32,0,36,0,44,0,35,26,33,0,3,50,6,32,0,36,0,44,0,35,26,33,0,23,50,6,32,0,36,0,44,0,35,26,33,0,91,50,6,34,0,21,0,12,34,0,22,17,0,35,32,0,36,17,0,32,16,0,22,34,0,41,0,33,16,0,35,32,0,38,17,33,0,94,48,17,33,0,38,49,6,32,0,1,0,35,34,0,94,17,0,44,0,1,26,32,1,16,0,36,16,0,0,0,68,17,17,0,44,0,22,26,32,0,37,0,46,0,65,26,16,17,33,0,95,48,6,32,0,3,0,72,0,54,0,15,27,0,9,0,11,0,53,0,81,27,21,16,33,0,96,48,6,0,65,0,11,32,0,3,17,0,11,32,0,96,17,33,0,97,48,6,32,0,97,0,29,16,32,1,38,16,0,44,0,35,26,32,0,91,17,33,0,98,48,0,15,0,66,17,33,0,99,48,6,32,0,91,0,1,16,0,6,0,65,17,33,0,100,48,6,32,0,98,0,1,16,0,6,0,65,17,33,0,101,48,6,32,0,13,33,0,27,49,6,34,0,36,0,44,0,35,26,33,0,26,50,6,32,0,96,0,2,32,0,101,17,32,0,28,0,155,26,16,6,32,1,27,0,14,32,0,1,17,0,2,32,0,101,17,32,0,28,0,156,26,16,6,0,67,0,16,32,0,3,17,0,9,0,67,0,11,32,0,98,17,17,33,0,102,48,0,11,32,0,93,17,0,32,16,0,30,16,33,0,103,48,6,0,71,0,14,32,0,3,17,33,0,104,48,0,9,32,0,102,17,0,28,16,0,10,32,0,102,17,33,0,105,48,6,0,67,0,27,16,0,39,32,0,3,17,0,10,32,0,105,17,0,16,32,0,104,17,0,2,0,67,17,0,6,32,0,100,17,0,29,0,2,34,0,104,21,0,6,0,28,21,0,67,17,0,2,32,0,102,17,32,0,28,0,157,26,16,6,32,1,26,0,14,32,0,1,17,33,0,106,48,6,32,1,16,0,36,16,0,0,0,67,17,32,1,14,0,36,16,0,0,0,66,17,11,2,0,39,32,0,1,17,33,0,107,48,6,32,1,16,0,36,16,0,0,0,70,17,0,44,34,0,17,26,32,0,1,17,33,0,108,48,32,1,38,0,52,0,11,27,32,0,107,17,0,9,32,0,106,17,33,0,109,48,6,0,65,0,14,32,0,3,17,0,11,0,53,0,10,0,53,0,29,27,27,32,0,105,17,0,28,0,54,0,9,27,16,32,0,13,32,0,10,0,158,27,16,6,32,1,15,0,36,16,0,0,0,67,17,0,14,32,0,1,17,33,0,110,48,6,0,66,0,16,34,0,91,17,0,28,16,0,9,32,0,110,17,0,11,32,0,99,17,33,0,111,48,6,32,0,97,0,29,0,66,17,0,9,33,0,110,50,6,32,0,110,0,11,32,0,111,17,32,0,13,32,0,10,0,159,27,16,6,32,0,111,0,10,32,0,105,17,0,8,16,0,30,0,55,32,1,37,0,1,0,19,21,0,53,0,13,0,51,0,27,27,27,27,16,33,0,112,48,6,32,0,96,0,32,16,33,0,113,48,0,0,0,53,32,0,112,0,54,0,35,27,27,16,0,0,0,66,17,33,0,114,48,6,32,0,3,0,35,32,0,113,17,0,13,0,80,17,33,0,115,48,6,32,0,3,0,35,32,0,114,17,33,0,116,48,6,32,0,98,0,35,32,0,114,17,0,6,0,65,17,0,13,32,0,116,17,0,9,32,0,115,17,32,0,13,0,35,32,0,114,21,32,0,10,0,160,27,16,6,32,0,1,0,35,32,0,113,17,0,44,0,1,26,32,1,15,0,36,16,17,0,0,32,0,111,0,35,32,0,113,17,17,0,0,34,0,116,0,15,0,65,17,17,0,0,32,0,115,17,33,0,117,48,6,32,0,79,0,22,33,0,114,50,6,32,0,1,0,46,0,65,26,16,0,35,0,53,32,0,114,27,0,55,32,0,79,0,46,0,74,26,16,0,22,32,0,117,17,27,16,0,1,0,53,0,28,27,16,33,0,118,48,6,32,0,118,0,35,32,0,42,17,0,2,0,53,0,50,0,0,26,0,14,0,65,21,0,10,0,53,0,29,0,53,0,66,27,27,20,27,16,0,50,0,0,26,16,0,29,16,33,0,118,49,0,35,32,0,13,17,33,0,119,48,0,2,16,33,0,120,48,6,32,0,100,0,14,0,67,17,0,9,32,0,120,17,33,0,121,48,0,9,32,1,18,0,36,16,0,14,32,0,1,17,17,0,32,16,33,0,122,48,6,32,0,109,0,10,32,0,108,17,0,29,16,0,15,32,0,23,17,0,2,32,0,100,17,0,2,32,0,121,0,8,16,17,34,0,28,0,161,26,16,6,32,0,97,0,28,0,66,17,0,9,32,1,16,0,36,16,0,0,0,74,17,0,14,32,0,1,17,17,0,11,32,0,120,17,32,0,13,32,0,10,0,162,27,16,6,32,0,118,0,14,0,74,17,33,0,123,48,0,2,0,71,17,0,1,33,0,118,50,6,32,0,100,0,14,0,66,17,0,2,32,0,120,17,0,6,33,0,26,50,6,32,1,15,0,36,16,0,44,0,1,26,32,1,34,17,0,14,32,0,92,17,0,11,32,0,118,17,32,0,48,16,33,0,124,48,6,32,0,26,0,35,32,0,42,17,34,0,48,16,33,0,125,48,6,32,0,31,0,35,32,0,54,17,0,22,0,65,17,0,44,0,1,26,0,66,17,1,23,16,6,32,0,125,33,0,126,48,6,32,0,52,32,1,39,0,52,0,16,27,33,0,125,50,6,0,65,0,14,32,0,77,17,0,9,32,0,125,17,0,26,0,66,17,32,0,46,0,32,20,32,0,10,0,164,0,153,11,2,0,56,0,11,0,53,34,0,126,0,26,0,66,17,27,0,49,0,10,26,20,27,27,16,6,32,0,125,0,2,0,67,17,0,6,33,0,77,50,6,32,0,84,0,2,33,0,77,50,6,32,0,77,0,14,0,67,17,0,35,32,0,47,17,0,35,32,0,13,17,33,0,127,48,6,32,0,127,0,14,0,1,0,19,21,33,0,100,50,6,34,0,127,0,14,0,1,0,19,21,33,0,101,50,6,32,1,34,0,1,32,0,1,17,32,0,8,0,54,0,11,27,0,9,0,15,0,53,0,82,27,21,16,33,0,128,48,6,32,1,34,0,0,32,0,8,17,0,16,32,0,1,17,0,9,34,0,123,0,35,32,0,13,17,17,33,0,129,48,0,32,16,33,0,130,48,6,32,1,16,32,1,25,0,11,0,36,0,0,0,71,21,0,54,0,14,27,21,32,0,1,17,0,10,32,1,17,0,36,16,0,14,32,0,1,17,0,28,16,0,12,32,0,97,17,17,0,10,34,0,129,17,0,10,32,0,128,17,0,11,0,65,0,16,32,0,3,17,0,9,32,0,120,17,0,28,16,0,11,32,0,97,17,0,11,32,0,93,17,17,33,0,131,48,6,32,0,120,0,11,34,0,121,0,10,34,0,131,17,0,10,32,0,96,17,17,32,0,13,32,0,10,0,165,27,16,6,32,0,120,0,35,32,0,113,17,0,11,0,67,0,14,34,0,117,17,0,9,34,0,119,0,35,32,0,113,17,0,13,0,68,17,17,17,32,0,13,0,35,32,0,113,21,32,0,10,0,166,27,16,6,32,0,120,0,12,0,53,0,29,27,16,0,9,32,0,3,0,15,0,65,17,17,0,9,32,0,98,0,11,0,65,17,17,0,11,32,0,93,17,32,0,13,32,0,10,0,167,27,16,6,32,0,120,0,35,32,0,113,17,33,0,132,48,0,12,33,0,115,50,6,32,0,113,0,32,34,0,132,17,33,0,133,48,6,32,1,16,0,36,16,0,0,0,70,17,0,14,32,0,1,17,0,10,32,0,109,17,0,29,16,0,9,34,0,23,17,0,9,34,0,128,17,0,35,0,66,0,1,32,0,133,17,17,0,8,16,32,0,13,0,35,32,0,133,21,32,0,10,0,168,27,16,6,32,0,115,0,44,0,32,26,33,0,113,50,6,32,0,79,0,46,0,66,26,16,0,22,34,0,115,17,0,44,0,32,26,33,0,114,50,6,34,0,18,0,29,16,33,0,134,48,0,32,16,33,0,135,48,6,32,0,92,32,0,8,0,54,0,11,27,0,9,0,15,0,53,0,65,27,21,16,0,11,34,0,96,0,9,32,0,120,17,0,28,16,0,35,32,0,42,17,0,10,34,0,134,17,0,10,34,0,78,17,17,0,32,16,33,0,136,48,6,32,0,118,0,35,32,0,83,17,33,0,137,48,0,11,0,65,17,33,0,138,48,6,0,67,0,67,11,2,32,1,25,34,0,118,0,35,32,0,136,17,33,0,139,48,17,33,0,140,48,6,0,70,0,11,34,0,137,17,0,9,32,0,138,17,32,0,83,32,0,10,0,169,27,16,6,32,0,47,0,35,32,0,136,17,33,0,141,48,6,32,0,92,0,35,32,0,136,17,33,0,142,48,6,32,0,7,0,13,16,0,11,32,0,142,17,0,9,32,0,141,0,14,0,65,17,17,0,9,32,0,140,17,33,0,143,48,6,32,0,7,0,35,32,0,142,0,32,32,0,143,17,17,33,0,144,48,0,14,0,65,17,32,0,136,0,32,32,0,143,21,32,0,10,0,170,27,16,6,32,0,140,0,32,0,53,34,0,143,27,0,55,34,0,144,0,15,0,65,17,27,16,33,0,140,49,6,0,65,0,15,32,0,7,17,0,32,16,33,0,145,48,0,46,0,65,26,16,33,0,146,48,6,32,0,142,0,32,32,0,140,17,33,0,147,48,0,22,32,0,145,17,0,41,32,0,87,0,13,16,0,22,32,0,141,0,32,32,0,140,17,33,0,148,48,17,0,22,32,0,146,17,33,0,149,48,17,33,0,150,48,6,32,0,34,0,35,34,0,54,17,0,44,0,1,26,0,66,17,0,22,32,0,1,0,13,16,17,0,35,32,0,148,17,0,22,34,0,34,0,32,34,0,46,17,0,22,0,61,17,0,35,34,0,141,17,0,0,32,0,139,0,14,0,66,17,17,17,33,0,151,48,6,32,0,151,0,33,16,0,35,0,53,32,0,147,0,22,32,0,142,17,33,0,152,48,0,54,0,35,27,0,33,20,27,16,33,0,153,48,6,32,0,153,0,32,0,53,0,15,0,53,32,0,140,0,13,16,27,27,16,1,24,16,6,32,0,153,0,35,34,0,147,0,46,0,61,26,16,0,22,32,0,140,17,0,35,32,0,153,17,0,50,0,0,26,16,33,0,154,48,0,33,16,17,0,32,0,53,32,0,140,0,13,16,0,54,0,11,27,27,16,33,0,153,49,6,32,0,153,0,44,0,35,26,33,0,140,50,6,32,0,153,0,44,0,35,26,33,0,136,50,6,32,0,153,0,44,0,35,26,33,0,139,50,6,34,0,154,0,11,0,65,17,0,10,0,53,0,29,27,16,0,8,16,0,49,0,0,26,16,33,0,155,48,6,34,0,142,0,35,32,0,153,0,25,32,0,155,17,17,33,0,156,48,6,32,0,7,0,13,16,0,16,32,0,156,17,32,0,136,0,25,32,0,155,21,32,0,10,32,0,156,0,54,0,32,27,0,40,20,32,1,30,0,171,21,27,16,6,32,0,139,0,11,0,65,17,33,0,157,48,0,9,0,71,0,11,34,0,139,17,17,33,0,158,48,6,34,0,33,0,35,32,0,136,17,0,35,0,53,32,0,140,32,1,38,16,0,26,32,0,155,17,27,0,22,34,0,7,0,6,0,65,17,0,1,16,33,0,159,48,0,35,32,0,156,17,21,0,1,0,20,21,16,33,0,160,48,6,32,0,160,0,11,0,65,17,0,9,32,0,158,17,32,0,136,32,0,10,0,172,27,16,6,34,0,158,32,1,40,0,26,0,66,21,0,16,0,32,21,32,0,140,17,33,0,161,48,0,35,34,0,153,0,32,32,0,140,17,0,33,16,33,0,162,48,17,0,22,34,0,146,17,0,41,34,0,149,17,33,0,163,48,6,34,0,148,0,22,34,0,159,17,0,38,0,0,32,0,87,0,54,0,35,27,21,16,0,20,0,26,0,53,0,13,27,34,0,145,21,0,35,0,53,0,33,27,34,0,162,21,0,35,32,0,140,0,26,34,0,155,17,0,50,0,0,26,0,61,17,21,0,22,0,35,0,53,34,0,156,27,21,16,33,0,164,48,6,32,0,160,0,11,0,65,17,32,1,40,0,11,34,0,161,0,22,0,66,17,21,0,35,0,53,0,50,0,0,26,27,0,19,21,32,0,140,17,0,9,32,0,140,0,28,0,66,17,0,11,32,0,157,17,17,33,0,165,48,6,32,0,92,0,35,32,0,83,17,0,0,0,71,17,0,0,32,0,84,0,2,0,71,17,0,35,32,0,47,0,35,32,0,83,17,33,0,166,48,17,17,33,0,167,48,6,34,0,166,0,2,0,74,17,0,0,32,0,167,17,0,30,0,55,0,39,27,16,0,22,33,0,165,50,6,0,66,0,1,32,0,79,17,0,44,0,35,26,32,0,13,17,0,0,0,66,17,32,0,135,32,0,83,0,22,32,0,136,17,11,3,0,32,0,71,0,67,0,71,11,3,17,0,22,16,33,0,168,48,6,34,0,138,0,22,34,0,157,17,0,12,0,2,0,67,21,0,0,0,20,21,34,0,165,17,0,0,0,83,17,33,0,169,48,6,32,0,79,0,46,0,83,26,16,32,0,79,0,46,0,65,26,16,34,0,72,0,32,34,0,74,17,32,0,135,0,46,0,79,26,16,34,0,92,0,35,34,0,135,17,34,0,169,34,0,83,0,46,0,65,26,16,0,22,34,0,160,17,34,0,167,0,22,34,0,164,17,11,8,33,0,170,48,6,32,0,105,0,8,16,0,50,0,0,26,16,32,1,37,0,1,0,20,21,32,0,97,17,0,7,0,10,0,12,21,0,67,17,0,9,32,0,99,17,33,0,171,48,6,34,0,102,0,29,16,0,10,0,66,0,14,32,0,3,17,17,33,0,172,48,0,11,32,0,120,0,11,32,0,97,17,0,10,0,53,0,28,27,16,0,10,32,0,105,17,0,10,34,0,171,17,0,10,32,0,93,17,33,0,173,48,17,0,32,16,33,0,174,48,6,34,0,172,0,10,34,0,173,17,0,12,32,0,99,17,32,0,13,32,0,10,0,173,27,16,6,0,65,0,14,32,0,3,17,0,11,32,0,105,17,0,10,0,65,0,16,32,0,3,17,0,9,34,0,99,17,17,0,8,16,0,2,0,67,17,0,6,34,0,100,17,0,28,0,67,17,0,35,32,0,174,17,33,0,175,48,0,13,0,67,17,33,0,176,48,6,32,1,26,0,11,32,0,1,17,0,11,34,0,93,17,0,32,16,33,0,177,48,0,44,0,35,26,32,0,1,17,33,0,178,48,0,9,16,0,40,16,33,0,179,48,0,29,0,1,0,20,21,0,61,17,0,32,16,0,35,34,0,178,17,33,0,180,48,6,34,0,8,0,0,32,1,34,17,33,0,181,48,0,16,32,0,1,17,0,32,16,33,0,182,48,0,22,34,0,177,17,33,0,183,48,6,32,0,1,0,35,34,0,182,17,0,0,32,0,179,0,13,16,0,44,0,1,26,34,0,181,17,17,0,22,33,0,180,50,6,34,0,42,0,35,34,0,40,17,33,0,184,48,6,0,65,0,22,32,0,109,17,0,50,0,0,26,16,0,32,0,66,0,22,32,0,108,17,17,0,26,0,66,17,0,29,0,54,0,1,27,16,0,0,34,0,97,0,28,0,66,17,0,32,34,0,108,17,0,8,16,17,0,44,0,22,26,34,0,37,17,33,0,185,48,6,0,81,0,14,32,0,3,17,0,29,16,0,10,34,0,109,17,0,10,32,0,101,0,14,0,67,17,17,0,12,34,0,106,17,0,32,16,0,22,32,0,79,0,32,0,53,0,8,27,32,0,80,17,17,33,0,186,48,6,34,0,107,0,32,16,33,0,187,48,6,32,1,27,0,14,32,0,1,17,0,32,16,33,0,188,48,6,32,0,176,0,0,32,0,174,17,0,0,0,53,32,0,112,0,54,0,35,27,0,2,32,0,176,21,27,16,33,0,189,48,6,32,0,189,0,32,34,0,101,0,35,32,0,174,17,33,0,190,48,0,14,0,67,17,33,0,191,48,0,2,32,0,176,0,0,0,66,17,17,17,0,22,33,0,186,50,6,32,0,191,0,8,16,33,0,191,49,6,32,0,191,0,44,0,32,26,33,0,174,50,6,32,0,191,0,44,0,32,26,33,0,189,50,6,34,0,80,0,1,16,0,22,34,0,110,0,0,32,0,111,17,0,0,32,0,1,17,0,35,32,0,113,17,0,44,0,1,26,32,1,15,0,36,16,0,0,0,66,17,17,0,6,0,65,17,17,0,0,0,84,17,33,0,192,48,6,32,0,183,32,0,183,32,0,184,32,0,184,32,0,130,32,0,122,32,0,38,0,32,0,67,17,32,0,114,32,0,186,32,0,188,0,66,0,0,32,0,133,17,0,66,0,0,32,0,133,17,34,0,112,0,35,32,0,103,17,0,6,0,66,17,0,0,32,0,103,17,34,0,189,32,0,187,11,15,33,0,193,48,0,22,16,0,44,0,35,26,32,0,13,17,0,22,32,0,168,17,33,0,194,48,0,33,16,33,0,195,48,6,34,0,183,0,46,0,65,26,16,34,0,180,32,0,184,0,46,0,66,26,16,34,0,184,0,13,16,0,27,16,0,0,0,66,17,34,0,130,0,46,0,85,26,16,34,0,122,0,46,0,86,26,16,34,0,185,0,23,34,0,120,0,35,34,0,38,17,0,0,34,0,95,17,0,0,0,62,17,17,0,31,16,0,21,16,34,0,192,34,0,186,0,46,0,74,26,16,34,0,188,0,46,0,87,26,16,32,0,133,0,46,0,88,26,16,34,0,1,0,35,0,66,0,1,34,0,133,17,17,0,44,0,1,26,32,1,34,17,34,0,3,0,35,32,0,103,17,0,0,0,89,17,34,0,98,0,35,32,0,174,17,0,11,0,65,17,0,2,0,70,17,0,0,34,0,175,0,14,0,66,17,0,6,34,0,190,17,0,2,0,67,17,0,0,34,0,176,17,0,32,34,0,191,17,17,0,0,0,90,17,32,0,124,0,0,0,75,17,33,0,196,48,0,26,0,61,17,11,15,0,22,34,0,170,17,0,22,16,0,35,32,0,195,17,33,0,197,48,6,34,0,193,0,46,0,13,26,16,0,22,34,0,168,0,13,16,17,0,35,0,46,0,27,0,54,0,0,27,26,0,50,0,0,26,0,29,20,0,54,0,35,27,21,0,69,0,60,0,91,11,3,17,33,0,198,48,6,34,0,194,0,35,0,53,32,0,198,0,22,16,27,0,55,34,0,113,34,0,79,11,2,0,46,0,13,26,16,0,44,0,32,26,0,66,0,65,11,2,17,0,1,34,0,114,17,34,0,103,32,0,174,11,3,0,22,16,0,44,0,35,26,32,0,13,17,27,16,33,0,199,48,6,32,0,5,32,0,6,11,2,0,46,0,35,0,53,0,35,0,53,32,0,195,27,0,44,0,22,26,0,61,21,27,26,32,0,199,34,0,199,0,35,0,53,34,0,198,0,36,0,61,17,27,0,55,34,0,111,0,10,34,0,105,17,0,8,16,0,29,16,32,1,38,16,0,35,34,0,174,17,0,44,0,35,26,32,0,13,17,27,16,11,2,17,33,0,200,48,6,32,0,49,0,32,0,53,34,0,49,27,0,55,32,0,59,27,16,33,0,59,49,0,11,0,65,17,0,10,32,0,77,0,13,0,66,17,0,9,32,0,84,17,17,0,10,33,0,53,50,6,32,0,53,0,32,16,33,0,201,48,0,44,0,35,26,34,0,77,17,33,0,202,48,0,14,0,66,17,0,0,0,66,17,33,0,203,48,0,32,16,33,0,204,48,6,34,0,202,0,11,0,66,17,0,0,34,0,59,0,35,32,0,201,17,0,2,0,67,17,17,0,5,0,70,17,33,0,205,48,6,32,0,52,0,35,32,0,201,17,33,0,206,48,0,50,0,0,26,0,61,17,33,0,207,48,6,32,0,205,0,0,34,0,203,17,0,35,0,53,0,34,0,51,0,35,0,53,32,0,207,0,54,0,35,27,0,33,20,0,32,34,0,206,21,27,27,27,16,0,6,32,0,84,0,32,32,0,53,0,9,32,0,52,17,17,0,8,16,0,1,0,67,17,17,33,0,208,48,6,32,0,201,0,35,32,0,204,17,0,41,32,0,208,0,50,0,0,26,16,0,22,0,65,17,0,26,0,35,34,0,207,21,0,0,34,0,205,21,0,35,0,0,0,19,0,51,0,38,27,21,34,0,204,21,0,44,0,22,26,0,25,21,0,61,17,17,0,41,0,53,0,32,27,34,0,208,17,33,0,201,49,6,34,0,85,0,32,32,0,52,17,34,0,84,0,8,16,0,32,32,0,52,17,32,0,52,0,32,16,0,32,0,53,34,0,53,0,32,34,0,52,17,27,0,55,34,0,201,27,16,11,3,33,0,209,48,6,34,0,187,0,13,0,52,0,1,27,32,0,197,17,0,16,34,0,195,17,0,22,0,66,17,0,32,16,32,0,150,0,46,0,13,26,16,0,0,34,0,87,17,34,0,150,34,0,163,11,4,33,0,210,48,6,34,0,196,0,36,0,61,17,0,22,34,0,197,17,34,0,179,34,0,209,34,0,210,34,0,200,11,5,7,11,0,0,46,0,174,0,51,0,42,27,26,11,0,0,65,0,27,16,11,4,33,0,3,48,6,34,0,2,0,13,0,11,0,70,21,0,58,0,24,27,16,0,43,34,0,3,26,0,26,0,13,21,0,54,0,22,27,16,33,0,4,33,0,5,33,0,6,33,0,7,12,4,48,6,34,0,1,32,1,41,34,0,5,32,0,6,11,2,17,33,0,8,48,33,0,9,33,0,10,33,0,11,33,0,12,33,0,13,12,5,48,6,34,0,9,32,1,43,34,0,10,32,0,11,0,36,16,34,0,12,34,0,13,34,0,6,0,46,0,65,26,16,0,29,34,0,7,17,11,5,17,33,0,14,33,0,15,33,0,16,33,0,17,33,0,18,12,5,48,6,34,0,14,34,0,11,0,26,0,66,17,0,22,34,0,4,0,35,34,0,15,17,11,1,17,0,22,16,34,0,16,0,12,16,0,31,16,0,45,0,11,26,16,34,0,17,0,12,16,0,31,16,0,45,0,11,26,16,34,0,18,34,0,8,11,6,7,34,0,1,34,0,2,16,7,32,0,1,0,35,0,53,32,0,2,0,32,34,0,1,17,27,0,55,0,46,0,66,26,27,16,32,1,13,34,0,2,0,44,0,35,26,16,17,7,34,0,1,0,32,16,0,36,16,0,117,11,2,0,42,16,7,34,0,1,0,22,0,65,17,0,35,0,53,0,50,0,0,26,27,32,1,31,17,0,9,32,1,32,17,0,32,16,0,118,11,2,0,42,16,7,32,1,26,0,32,34,0,1,17,0,119,11,2,0,42,16,7,32,1,26,0,32,34,0,1,17,0,120,11,2,0,42,16,7,34,0,2,0,32,34,0,1,17,0,44,0,35,26,32,1,26,17,0,121,11,2,0,42,16,7,32,0,2,0,44,0,32,26,33,1,26,50,6,32,0,2,0,44,0,32,26,33,1,25,50,6,34,0,1,0,32,34,0,2,17,7,0,49,0,10,26,0,58,34,0,1,0,24,34,0,2,0,54,0,32,27,21,0,42,20,27,7,32,0,1,0,54,0,36,27,33,0,3,48,6,0,26,0,25,11,2,0,46,1,25,26,16,33,0,4,33,0,5,12,2,48,6,0,36,0,55,0,26,0,53,0,61,27,27,0,24,20,33,0,6,48,6,0,46,0,25,26,0,30,20,0,46,0,22,26,0,46,0,26,26,21,0,53,0,61,0,65,11,2,27,33,0,7,48,6,1,26,33,0,8,48,6,32,2,16,32,2,25,34,0,1,17,0,32,16,0,30,16,0,49,0,46,34,0,8,26,0,22,20,0,32,0,53,0,46,0,36,26,0,39,20,27,20,0,25,0,53,0,13,0,5,0,79,21,27,20,26,0,65,0,27,16,0,44,0,24,26,16,0,24,16,17,0,46,0,22,26,16,0,36,0,53,0,46,0,13,26,0,49,0,5,26,0,37,0,20,21,0,36,20,20,27,16,33,0,9,48,6,0,66,32,0,9,32,1,10,34,0,9,32,2,30,0,130,17,27,16,7,0,14,0,58,0,49,0,10,26,27,0,58,34,0,1,0,24,34,0,2,0,54,0,32,27,0,44,0,66,0,57,0,35,27,26,0,43,32,1,6,26,0,23,32,1,5,21,21,0,31,0,51,0,9,27,20,21,0,42,20,27,7,32,1,15,0,22,0,65,17,0,32,32,0,1,17,0,12,32,2,16,0,36,16,0,0,0,70,17,17,32,1,13,0,22,0,65,21,0,32,34,0,1,21,32,1,10,0,135,27,16,7,34,0,1,0,6,33,1,26,50,0,14,0,67,17,32,1,27,32,1,10,34,0,4,27,16,7,32,2,28,32,2,25,34,0,1,17,0,9,32,1,47,0,14,0,65,17,17,7,32,1,5,0,35,0,53,32,0,1,27,0,55,32,1,5,0,35,32,0,2,17,27,16,33,1,5,49,6,32,1,6,0,35,0,53,34,0,2,27,0,55,32,1,6,0,35,34,0,1,17,27,16,33,1,6,49,7,32,1,25,0,35,32,0,1,17,0,2,0,53,0,8,27,32,1,124,17,0,6,33,1,125,50,0,14,0,67,17,32,1,31,0,51,0,33,27,0,35,34,0,1,21,32,1,10,0,163,27,16,7,32,1,151,0,35,0,53,32,0,1,27,0,13,0,53,0,29,27,20,0,52,0,10,27,32,1,152,17,0,8,16,32,1,136,0,32,0,53,32,1,140,27,0,54,0,22,27,20,0,35,34,0,1,21,32,1,10,0,170,27,16,7,0,44,0,24,34,0,1,20,0,54,0,46,0,22,26,27,26,0,24,20,7,34,0,1,32,1,4,32,1,5,0,20,32,1,6,20,32,1,7,0,54,34,0,0,27,0,22,32,1,5,21,11,2,0,56,0,36,0,36,0,61,21,0,54,32,1,3,0,52,0,1,27,27,0,13,0,66,21,27,11,2,0,56,0,20,0,51,0,36,0,51,0,13,27,27,0,11,0,65,21,27,11,2,0,56,32,1,3,0,7,0,67,21,27,34,0,2,19,7] + ,[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[18],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[52],runtime[53],runtime[54],runtime[55],runtime[56],runtime[57],runtime[59],runtime[60],runtime[62],10,13,-1,11,26,9,0,1,2,5,8,4,3,-3,-2,6,7,17,Math.PI,Infinity,64,-4,-5,-6,32,48,43,44,42,66,24,16,14,'\0','0','#','\'','\"','@',str("⋄,"),str(":;?"),str("⇐←↩"),str("(){}⟨⟩[]"),str("‿"),str("·"),str("𝕊𝕏𝕎𝔽𝔾𝕤𝕩𝕨𝕣𝕗𝕘"),str(".¯π∞"),str("_"),str("aA"),str("•"),str("𝕨"),str(" "),str("#\'\"@"),str("s"),str("Unknown character"),str(": "),str("Character set conflict: "),str("˜⁼"),str("Unclosed quote"),str("Words can\'t only have underscores"),str("System dot with no name"),str("𝕣 can\'t be used with other word characters"),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("Unmatched bracket"),str("Empty program"),str("Swapped open and closed brackets"),str("Parentheses can\'t contain separators"),str("Predicates can\'t be placed inside lists"),str("Empty statement or expression"),str("Invalid assignment or stranding use"),str("Can\'t use export statement as predicate"),str("Dot must be followed by a name"),str("Punctuation : ; ? not allowed outside blocks"),str("Header-less bodies must come last"),str("At most two header-less bodies allowed"),str("Invalid Undo header syntax"),str("Only one header per body allowed"),str("Missing operand in header"),str("Invalid header structure"),str("Incorrect special name"),str("Header left argument without right"),str("Header operation must be a plain name"),str("Header with ⁼ must take arguments"),str("Header with ˜⁼ must have left argument"),str("Block header type conflict"),str("Special name outside of any block"),str("Unreachable body"),str("Dot must be preceded by a subject"),str("Nothing (·) cannot be assigned"),str("Can\'t use Nothing (·) as predicate"),str("Missing operand"),str("Double subjects (missing ‿?)"),str("No right-hand side in non-modified assignment"),str("Role of the two sides in assignment must match"),str("Can\'t use Nothing (·) in lists"),str("Square brackets can\'t be empty"),str("Can\'t return Nothing (·)"),str("Invalid use of 𝕨 in monadic case"),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("Alias must have a name on the right and appear within ⟨⟩"),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("System values not supported")] ,[[0,1,0],[0,0,1],[1,0,2],[1,1,3],[0,0,[[],[4]]],[0,0,[[],[5]]],[0,0,[[],[6]]],[0,0,[[],[7]]],[0,0,[[],[8]]],[0,0,[[],[9]]],[0,0,10],[0,0,11],[0,0,12],[0,0,13],[0,0,[[],[14]]],[0,0,[[],[15]]],[2,1,16],[0,0,17],[2,1,18],[0,0,19],[1,0,20],[0,0,21],[0,0,[[],[22]]],[0,0,23],[0,0,24],[0,0,25],[0,0,26]] - ,[[0,0],[3,45],[613,5],[632,6],[803,58],[3019,23],[3844,211],[12629,19],[12867,3],[12875,3],[12915,3],[12932,3],[12971,3],[12988,3],[13005,3],[13031,3],[13067,3],[13093,10],[13314,3],[13376,3],[13426,5],[13452,3],[13474,3],[13532,3],[13585,3],[13647,3],[13668,3]] + ,[[0,0],[3,45],[613,5],[632,6],[803,58],[3019,23],[3844,211],[12646,19],[12884,3],[12892,3],[12932,3],[12949,3],[12988,3],[13005,3],[13022,3],[13048,3],[13084,3],[13110,10],[13331,3],[13393,3],[13443,5],[13469,3],[13491,3],[13549,3],[13602,3],[13664,3],[13685,3]] ); let compgen = sys => { let gl = sys.glyphs, rt = sys.runtime; diff --git a/src/c.bqn b/src/c.bqn index 020421b8..615b0709 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -231,10 +231,11 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn "Dot must be preceded by a subject"_err_(⍋∘rev) (r=4)>»r=0 r(×⟜¬-⊢)↩dl # Namespace and dot to ¯1 - # Prep for lexical resolution before reordering 𝕩 - xv←𝕩-vi + # Reorder for parsing + xv←𝕩-vi # Save for lexical resolution {i↩(𝕨⊏i)⌾(𝕩⊸⊏)i⋄e↩(𝕩⊏e)⌾(𝕨⊸⊏)e}´bp # Highlight all contents of a pair when error reporting - 𝕩⊏˜↩g⋄hg←g⊏hf⋄r⊏˜↩gr⋄ir⊏˜↩gr⋄l↩(l0←l⊏⍋gs)∾/gr⊏sr>sl + 𝕩⊏˜↩g⋄hg←g⊏hf⋄r⊏˜↩gr⋄ns⊏˜↩gr⋄ir⊏˜↩gr + l↩(l0←l⊏⍋gs)∾/gr⊏sr>sl # Indices of list literals lm←(0¨sll)∾˜(5+⊑bB)-˜l0⊏𝕩 # List merge, adding 2 for [] # Parsing part 1 @@ -257,7 +258,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn at∾↩hj⋄ac←«⊸-(ak∾6¨hj)⌾(at⊸⊏)0¨𝕩 # Header assignment is 6 temporarily aa←×gac←g⊏ac↩»+`(1⊸»⊸∨0=+`)⊸×gi⊏ac # Broadcast ac to the entire target api←/(𝕩=⊑bO)∧ap←aa∧2=no # Assignment placeholder - "Can't use Nothing (·) in lists"_nerr (¬ap)×no×(gr⊏¬ns)∨»lo∨ls + "Can't use Nothing (·) in lists"_nerr (¬ap)×no×ns≤»lo∨ls "Square brackets can't be empty"_err_(G) aa<(𝕩=6+⊑bB)∧1«ps ac-↩3×ah←6=ac # Assignment is header; 6→3 nx⌈↩aa×1=no # Prevent assignment to 𝕨 if it's · @@ -275,7 +276,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn "Can't nest assignments (write aliases with ⇐)"_err_(ai⊏G) ((5≠ai⊏gac)∧ak=2)aa af>↩alm←ai⊏aa⋄al←alm/ai # aliases al - "Aliases can only appear in ⟨⟩ bracketed lists"_err_(al⊏G) ¬al⊏(fo∨𝕩=⊑bB)<○IT lo + "Alias must have a name on the right and appear within ⟨⟩"_err_(al⊏G) ¬(al-1)⊏aid∧ns∧»ls∨𝕩=4+⊑bB ai/˜↩af⋄at/˜↩af∾1¨hj # Lexical resolution (independent of parsing part 2 below) diff --git a/test/cases/namespace.bqn b/test/cases/namespace.bqn index ad0974a8..bdc83878 100644 --- a/test/cases/namespace.bqn +++ b/test/cases/namespace.bqn @@ -18,6 +18,8 @@ 5 % ⟨c⇐a⟩←{a⇐5}⋄c ! % ⟨a⇐c⟩←{a⇐5}⋄a ! % ⟨c⇐a⟩←{a⇐5}⋄a +! % ⟨c⇐(a)⟩←{a⇐5}⋄c +! % ⟨c⇐a‿b⟩←{a⇐b⇐5}⋄c 2 % b←{a⇐𝕩}2⋄⟨b⇐a⟩↩b⋄b ! % (d⇐b)‿a←{b⇐1+a⇐𝕩}2⋄a×d 6 % ⟨d⇐b,a⟩←{b⇐1+a⇐𝕩}2⋄a×d -- cgit v1.2.3