From 1bdbcb7302a6514cc407bab93c4b940fe3698991 Mon Sep 17 00:00:00 2001 From: Rafael Vuijk Date: Wed, 28 Oct 2026 18:53:41 +0000 Subject: [PATCH] The double factorial is the postfix n!! Mathematics writes the double factorial n!!, as it writes the factorial n!, and 5!! was a parse error. It is Entity.DoubleFactorialf, MathS.DoubleFactorial, written n!! and exported as SymPy's factorial2: the product of the positive integers up to n with its parity, 0!! and (-1)!! being the empty product 1, and below them n!! = (n + 2)!!/(n + 2), so (-3)!! is -1 and (-5)!! is 1/3. A negative even integer has none, and nothing off the integers has one: the extension through the gamma function gives 0!! = sqrt(2/pi), so no extension is the double factorial's. (n!)! keeps its parentheses. Three marks are the triple factorial in the literature, which the library does not have, so n!!! is refused rather than read as (n!!)!. The refusals of doublefactorial and factorial2 now point to n!!, and the native smoke test evaluates one. Part of #2182. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura --- BREAKING-CHANGES.md | 15 + Sources/.editorconfig | 3 + Sources/AngouriMath/Convenience/MathS.cs | 27 + Sources/AngouriMath/Core/Antlr/AngouriMath.g | 9 +- .../AngouriMath/Core/Antlr/AngouriMath.interp | 6 +- .../AngouriMath/Core/Antlr/AngouriMath.tokens | 474 +-- .../Core/Antlr/AngouriMathLexer.cs | 1465 +++---- .../Core/Antlr/AngouriMathLexer.interp | 8 +- .../Core/Antlr/AngouriMathLexer.tokens | 474 +-- .../Core/Antlr/AngouriMathParser.cs | 3397 +++++++++-------- Sources/AngouriMath/Core/Domains.Classes.cs | 10 + .../Entity.Continuous.Factorial.Classes.cs | 26 + .../Serialization/Entity.Serialization.cs | 1 + .../Transformations/Matching/MatchPattern.cs | 1 + .../Docs/Contributing/WritingARule.md | 2 +- Sources/AngouriMath/Docs/Usage/Syntax.md | 2 +- .../EquationSolver/InvertNode.Classes.cs | 7 + ...aluation.Continuous.Arithmetics.Classes.cs | 46 + .../Output/Latex/Latex.Arithmetics.Classes.cs | 15 +- .../ToString/ToString.Arithmetics.Classes.cs | 8 + .../ToSympy/ToSympy.Arithmetics.Classes.cs | 5 + Sources/AngouriMath/Functions/Substitute.cs | 7 + .../Functions/TreeAnalyzer/Sort.Classes.cs | 6 + Sources/MCP/AngouriMath.Mcp/Resources.cs | 2 +- Sources/Tests/AotSmokeTest/Program.cs | 4 + Sources/Tests/UnitTests/Common/PublicApi.txt | 21 + .../Convenience/DoubleFactorialTest.cs | 93 + .../UnitTests/Convenience/FromStringTest.cs | 3 +- .../Transformations/RuleAuthoringGuideTest.cs | 2 +- 29 files changed, 3241 insertions(+), 2898 deletions(-) create mode 100644 Sources/Tests/UnitTests/Convenience/DoubleFactorialTest.cs diff --git a/BREAKING-CHANGES.md b/BREAKING-CHANGES.md index c9fda4364..88096c1d9 100644 --- a/BREAKING-CHANGES.md +++ b/BREAKING-CHANGES.md @@ -290,6 +290,21 @@ the expression's own domain as its condition ([#2142](https://github.com/asc-com | `"(1 - cos(a))/(1 + cos(a))/tan(a/2)^2".Simplify()` | `(1 - cos(a)) / ((cos(a) + 1) * tan(a / 2) ^ 2)` | `1 provided not cos(a) + 1 = 0 and not tan(a / 2) = 0 and not cos(a / 2) = 0` | | `"(cos(2*x) - 1)^2 + sin(2*x)^2 - 4*sin(x)^2".Simplify()` ([#2133](https://github.com/asc-community/AngouriMath/issues/2133)) | `2 + (-2) * cos(2 * x) + (-4) * sin(x) ^ 2` | `0` | +### The double factorial is the postfix `n!!` + +**Not silent: `n!!` is now the double factorial, where it was a parse error.** It is the product of the positive integers +up to `n` with its parity, `0!!` and `(-1)!!` being `1`, and below them `n!! = (n + 2)!!/(n + 2)`. It has no value at a +negative even integer or off the integers, since the extension through the gamma function does not give `0!! = 1`. +`(n!)!` keeps its parentheses, and `n!!!`, the triple factorial, is refused rather than read as `(n!!)!` +([#2182](https://github.com/asc-community/AngouriMath/issues/2182)). + +| Input | Was (2.6.0) | Now | +|---|---|---| +| `"7!!".ToEntity().Simplify()` | throws `UnhandledParseException` | `105` | +| `"(-5)!!".ToEntity().Simplify()` | throws `UnhandledParseException` | `1/3` | +| `"n!!".ToEntity()` | throws `UnhandledParseException` | `n!!` | +| `"n!!!".ToEntity()` | throws `UnhandledParseException` | throws `UnrecognizedFunctionParseException` | + ### `re` and `im` are the real and the imaginary part **Not silent: `re(…)` and `im(…)`, and `real(…)` and `imag(…)`, are now the real and the imaginary part, where they were diff --git a/Sources/.editorconfig b/Sources/.editorconfig index 8b022d56d..b7ff61155 100644 --- a/Sources/.editorconfig +++ b/Sources/.editorconfig @@ -246,6 +246,9 @@ file_header_template=\nCopyright (c) 2019-2026 Angouri.\nAngouriMath is licensed [Tests/UnitTests/Convenience/RealAndImaginaryPartTest.cs] file_header_template=\nCopyright (c) 2019-2026 Angouri.\nAngouriMath is licensed under MIT.\nDetails: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md.\nWebsite: https://am.angouri.org.\n +[Tests/UnitTests/Convenience/DoubleFactorialTest.cs] +file_header_template=\nCopyright (c) 2019-2026 Angouri.\nAngouriMath is licensed under MIT.\nDetails: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md.\nWebsite: https://am.angouri.org.\n + [Tests/UnitTests/Convenience/IversonTest.cs] file_header_template=\nCopyright (c) 2019-2026 Angouri.\nAngouriMath is licensed under MIT.\nDetails: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md.\nWebsite: https://am.angouri.org.\n diff --git a/Sources/AngouriMath/Convenience/MathS.cs b/Sources/AngouriMath/Convenience/MathS.cs index d6dec5bce..33cfa5c2a 100644 --- a/Sources/AngouriMath/Convenience/MathS.cs +++ b/Sources/AngouriMath/Convenience/MathS.cs @@ -1484,6 +1484,33 @@ public static Entity VectorLength(Matrix v) [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Entity Im(Entity z) => new Imf(z); + /// The double factorial n!!: n (n - 2) (n - 4) ... down to 1 or 2 + /// An integer, other than a negative even one + /// The node + /// + /// 0!! and (-1)!! are 1, a negative odd n follows from + /// n!! = (n + 2)!!/(n + 2), and off the integers it has no value. It is not (n!)!. + /// https://github.com/asc-community/AngouriMath/issues/2182 + /// + /// + /// + /// using System; + /// using static AngouriMath.MathS; + /// + /// Console.WriteLine(DoubleFactorial(7).Simplify()); + /// Console.WriteLine(DoubleFactorial(8).Simplify()); + /// Console.WriteLine(DoubleFactorial(-5).Simplify()); + /// + /// Prints + /// + /// 105 + /// 384 + /// 1/3 + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Entity DoubleFactorial(Entity n) => new DoubleFactorialf(n); + /// The aleph number aleph(k), the size of an infinite set /// The index, a whole number from zero /// The node diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMath.g b/Sources/AngouriMath/Core/Antlr/AngouriMath.g index baf3ae0b0..4b8ee1d56 100644 --- a/Sources/AngouriMath/Core/Antlr/AngouriMath.g +++ b/Sources/AngouriMath/Core/Antlr/AngouriMath.g @@ -82,6 +82,11 @@ options // atom is defined later factorial_expression returns[Entity value] : p = atom '!' { $value = MathS.Factorial($p.value); } + /* The double factorial, n (n - 2) (n - 4) ..., which is not (n!)!: that keeps its parentheses. + Three marks are the triple factorial in the literature, which the library does not have, so + they are refused rather than read as (n!!)!. https://github.com/asc-community/AngouriMath/issues/2182 */ + | p = atom '!!' { $value = MathS.DoubleFactorial($p.value); } + | p = atom '!!!' { throw new UnrecognizedFunctionParseException("n!!! is the triple factorial, which AngouriMath does not have; write (n!!)! for the factorial of a double factorial"); } | p = atom { $value = $p.value; } ; @@ -698,8 +703,8 @@ atom returns[Entity value] | 'unitstep(' args = function_arguments ')' { $value = NotAFunctionHere("unitstep", "write iverson(x >= 0), which is 1 at 0"); } | 'isprime(' args = function_arguments ')' { $value = NotAFunctionHere("isprime", "write n in PP"); } | 'pochhammer(' args = function_arguments ')' { $value = NotAFunctionHere("pochhammer", "(x)_n is the rising factorial to some and the falling one to others; write risingfactorial or fallingfactorial"); } - | 'doublefactorial(' args = function_arguments ')' { $value = NotAFunctionHere("doublefactorial", "the double factorial is to be the postfix n!!, which is not implemented yet"); } - | 'factorial2(' args = function_arguments ')' { $value = NotAFunctionHere("factorial2", "the double factorial is to be the postfix n!!, which is not implemented yet"); } + | 'doublefactorial(' args = function_arguments ')' { $value = NotAFunctionHere("doublefactorial", "the double factorial is the postfix n!!"); } + | 'factorial2(' args = function_arguments ')' { $value = NotAFunctionHere("factorial2", "the double factorial is the postfix n!!"); } | 'fractionalpart(' args = function_arguments ')' { $value = NotAFunctionHere("fractionalpart", "write x mod 1, which is in [0, 1)"); } | 'quotient(' args = function_arguments ')' { $value = NotAFunctionHere("quotient", "write floor(a / b)"); } | 'domain(' args = function_arguments ')' diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMath.interp b/Sources/AngouriMath/Core/Antlr/AngouriMath.interp index e096eda6a..0bce64420 100644 --- a/Sources/AngouriMath/Core/Antlr/AngouriMath.interp +++ b/Sources/AngouriMath/Core/Antlr/AngouriMath.interp @@ -1,6 +1,8 @@ token literal names: null '!' +'!!' +'!!!' '^' '-' '+' @@ -465,6 +467,8 @@ null null null null +null +null NEWLINE NUMBER SPECIALSET @@ -504,4 +508,4 @@ statement atn: -[4, 1, 235, 1361, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 60, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 66, 8, 1, 11, 1, 12, 1, 67, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 74, 8, 1, 11, 1, 12, 1, 75, 3, 1, 78, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 85, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 95, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 105, 8, 3, 1, 3, 1, 3, 1, 3, 3, 3, 110, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 120, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 130, 8, 4, 10, 4, 12, 4, 133, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 145, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 151, 8, 5, 10, 5, 12, 5, 154, 9, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 168, 8, 6, 10, 6, 12, 6, 171, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 191, 8, 7, 10, 7, 12, 7, 194, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 226, 8, 8, 10, 8, 12, 8, 229, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 247, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 252, 8, 9, 10, 9, 12, 9, 255, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 263, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 282, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 298, 8, 11, 10, 11, 12, 11, 301, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 313, 8, 12, 10, 12, 12, 12, 316, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 328, 8, 13, 10, 13, 12, 13, 331, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 347, 8, 14, 10, 14, 12, 14, 350, 9, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 358, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 366, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 371, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 385, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 393, 8, 19, 10, 19, 12, 19, 396, 9, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 406, 8, 20, 10, 20, 12, 20, 409, 9, 20, 3, 20, 411, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 418, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 426, 8, 21, 5, 21, 428, 8, 21, 10, 21, 12, 21, 431, 9, 21, 3, 21, 433, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1355, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 0, 0, 26, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 0, 6, 1, 0, 6, 7, 1, 0, 33, 34, 1, 0, 37, 38, 1, 0, 42, 43, 1, 0, 44, 45, 1, 0, 46, 47, 1581, 0, 59, 1, 0, 0, 0, 2, 77, 1, 0, 0, 0, 4, 79, 1, 0, 0, 0, 6, 109, 1, 0, 0, 0, 8, 111, 1, 0, 0, 0, 10, 136, 1, 0, 0, 0, 12, 157, 1, 0, 0, 0, 14, 172, 1, 0, 0, 0, 16, 195, 1, 0, 0, 0, 18, 230, 1, 0, 0, 0, 20, 281, 1, 0, 0, 0, 22, 283, 1, 0, 0, 0, 24, 302, 1, 0, 0, 0, 26, 317, 1, 0, 0, 0, 28, 332, 1, 0, 0, 0, 30, 351, 1, 0, 0, 0, 32, 370, 1, 0, 0, 0, 34, 372, 1, 0, 0, 0, 36, 384, 1, 0, 0, 0, 38, 386, 1, 0, 0, 0, 40, 410, 1, 0, 0, 0, 42, 432, 1, 0, 0, 0, 44, 434, 1, 0, 0, 0, 46, 440, 1, 0, 0, 0, 48, 1354, 1, 0, 0, 0, 50, 1356, 1, 0, 0, 0, 52, 53, 3, 48, 24, 0, 53, 54, 5, 1, 0, 0, 54, 55, 6, 0, -1, 0, 55, 60, 1, 0, 0, 0, 56, 57, 3, 48, 24, 0, 57, 58, 6, 0, -1, 0, 58, 60, 1, 0, 0, 0, 59, 52, 1, 0, 0, 0, 59, 56, 1, 0, 0, 0, 60, 1, 1, 0, 0, 0, 61, 62, 5, 2, 0, 0, 62, 63, 3, 0, 0, 0, 63, 64, 6, 1, -1, 0, 64, 66, 1, 0, 0, 0, 65, 61, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 65, 1, 0, 0, 0, 67, 68, 1, 0, 0, 0, 68, 78, 1, 0, 0, 0, 69, 70, 5, 2, 0, 0, 70, 71, 3, 6, 3, 0, 71, 72, 6, 1, -1, 0, 72, 74, 1, 0, 0, 0, 73, 69, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 78, 1, 0, 0, 0, 77, 65, 1, 0, 0, 0, 77, 73, 1, 0, 0, 0, 78, 3, 1, 0, 0, 0, 79, 80, 3, 0, 0, 0, 80, 84, 6, 2, -1, 0, 81, 82, 3, 2, 1, 0, 82, 83, 6, 2, -1, 0, 83, 85, 1, 0, 0, 0, 84, 81, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 5, 1, 0, 0, 0, 86, 87, 5, 3, 0, 0, 87, 88, 3, 4, 2, 0, 88, 89, 6, 3, -1, 0, 89, 95, 1, 0, 0, 0, 90, 91, 5, 4, 0, 0, 91, 92, 3, 4, 2, 0, 92, 93, 6, 3, -1, 0, 93, 95, 1, 0, 0, 0, 94, 86, 1, 0, 0, 0, 94, 90, 1, 0, 0, 0, 95, 110, 1, 0, 0, 0, 96, 97, 5, 3, 0, 0, 97, 98, 3, 6, 3, 0, 98, 99, 6, 3, -1, 0, 99, 105, 1, 0, 0, 0, 100, 101, 5, 4, 0, 0, 101, 102, 3, 6, 3, 0, 102, 103, 6, 3, -1, 0, 103, 105, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 104, 100, 1, 0, 0, 0, 105, 110, 1, 0, 0, 0, 106, 107, 3, 4, 2, 0, 107, 108, 6, 3, -1, 0, 108, 110, 1, 0, 0, 0, 109, 94, 1, 0, 0, 0, 109, 104, 1, 0, 0, 0, 109, 106, 1, 0, 0, 0, 110, 7, 1, 0, 0, 0, 111, 112, 3, 6, 3, 0, 112, 131, 6, 4, -1, 0, 113, 119, 5, 5, 0, 0, 114, 115, 7, 0, 0, 0, 115, 120, 6, 4, -1, 0, 116, 117, 3, 6, 3, 0, 117, 118, 6, 4, -1, 0, 118, 120, 1, 0, 0, 0, 119, 114, 1, 0, 0, 0, 119, 116, 1, 0, 0, 0, 120, 130, 1, 0, 0, 0, 121, 122, 5, 8, 0, 0, 122, 123, 3, 6, 3, 0, 123, 124, 6, 4, -1, 0, 124, 130, 1, 0, 0, 0, 125, 126, 5, 9, 0, 0, 126, 127, 3, 6, 3, 0, 127, 128, 6, 4, -1, 0, 128, 130, 1, 0, 0, 0, 129, 113, 1, 0, 0, 0, 129, 121, 1, 0, 0, 0, 129, 125, 1, 0, 0, 0, 130, 133, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 134, 1, 0, 0, 0, 133, 131, 1, 0, 0, 0, 134, 135, 6, 4, -1, 0, 135, 9, 1, 0, 0, 0, 136, 137, 3, 8, 4, 0, 137, 152, 6, 5, -1, 0, 138, 144, 5, 4, 0, 0, 139, 140, 7, 0, 0, 0, 140, 145, 6, 5, -1, 0, 141, 142, 3, 8, 4, 0, 142, 143, 6, 5, -1, 0, 143, 145, 1, 0, 0, 0, 144, 139, 1, 0, 0, 0, 144, 141, 1, 0, 0, 0, 145, 151, 1, 0, 0, 0, 146, 147, 5, 3, 0, 0, 147, 148, 3, 8, 4, 0, 148, 149, 6, 5, -1, 0, 149, 151, 1, 0, 0, 0, 150, 138, 1, 0, 0, 0, 150, 146, 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 155, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 156, 6, 5, -1, 0, 156, 11, 1, 0, 0, 0, 157, 158, 3, 10, 5, 0, 158, 169, 6, 6, -1, 0, 159, 160, 5, 10, 0, 0, 160, 161, 3, 10, 5, 0, 161, 162, 6, 6, -1, 0, 162, 168, 1, 0, 0, 0, 163, 164, 5, 11, 0, 0, 164, 165, 3, 10, 5, 0, 165, 166, 6, 6, -1, 0, 166, 168, 1, 0, 0, 0, 167, 159, 1, 0, 0, 0, 167, 163, 1, 0, 0, 0, 168, 171, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 13, 1, 0, 0, 0, 171, 169, 1, 0, 0, 0, 172, 173, 3, 12, 6, 0, 173, 192, 6, 7, -1, 0, 174, 175, 5, 12, 0, 0, 175, 176, 3, 12, 6, 0, 176, 177, 6, 7, -1, 0, 177, 191, 1, 0, 0, 0, 178, 179, 5, 13, 0, 0, 179, 180, 3, 12, 6, 0, 180, 181, 6, 7, -1, 0, 181, 191, 1, 0, 0, 0, 182, 183, 5, 14, 0, 0, 183, 184, 3, 12, 6, 0, 184, 185, 6, 7, -1, 0, 185, 191, 1, 0, 0, 0, 186, 187, 5, 15, 0, 0, 187, 188, 3, 12, 6, 0, 188, 189, 6, 7, -1, 0, 189, 191, 1, 0, 0, 0, 190, 174, 1, 0, 0, 0, 190, 178, 1, 0, 0, 0, 190, 182, 1, 0, 0, 0, 190, 186, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 190, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 15, 1, 0, 0, 0, 194, 192, 1, 0, 0, 0, 195, 196, 3, 14, 7, 0, 196, 227, 6, 8, -1, 0, 197, 198, 5, 16, 0, 0, 198, 199, 3, 14, 7, 0, 199, 200, 6, 8, -1, 0, 200, 226, 1, 0, 0, 0, 201, 202, 5, 17, 0, 0, 202, 203, 3, 14, 7, 0, 203, 204, 6, 8, -1, 0, 204, 226, 1, 0, 0, 0, 205, 206, 5, 18, 0, 0, 206, 207, 3, 14, 7, 0, 207, 208, 6, 8, -1, 0, 208, 226, 1, 0, 0, 0, 209, 210, 5, 19, 0, 0, 210, 211, 3, 14, 7, 0, 211, 212, 6, 8, -1, 0, 212, 226, 1, 0, 0, 0, 213, 214, 5, 20, 0, 0, 214, 215, 3, 14, 7, 0, 215, 216, 6, 8, -1, 0, 216, 226, 1, 0, 0, 0, 217, 218, 5, 21, 0, 0, 218, 219, 3, 14, 7, 0, 219, 220, 6, 8, -1, 0, 220, 226, 1, 0, 0, 0, 221, 222, 5, 22, 0, 0, 222, 223, 3, 14, 7, 0, 223, 224, 6, 8, -1, 0, 224, 226, 1, 0, 0, 0, 225, 197, 1, 0, 0, 0, 225, 201, 1, 0, 0, 0, 225, 205, 1, 0, 0, 0, 225, 209, 1, 0, 0, 0, 225, 213, 1, 0, 0, 0, 225, 217, 1, 0, 0, 0, 225, 221, 1, 0, 0, 0, 226, 229, 1, 0, 0, 0, 227, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 17, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 230, 231, 3, 16, 8, 0, 231, 253, 6, 9, -1, 0, 232, 233, 5, 23, 0, 0, 233, 247, 6, 9, -1, 0, 234, 235, 5, 24, 0, 0, 235, 247, 6, 9, -1, 0, 236, 237, 5, 25, 0, 0, 237, 247, 6, 9, -1, 0, 238, 239, 5, 26, 0, 0, 239, 247, 6, 9, -1, 0, 240, 241, 5, 27, 0, 0, 241, 247, 6, 9, -1, 0, 242, 243, 5, 28, 0, 0, 243, 247, 6, 9, -1, 0, 244, 245, 5, 29, 0, 0, 245, 247, 6, 9, -1, 0, 246, 232, 1, 0, 0, 0, 246, 234, 1, 0, 0, 0, 246, 236, 1, 0, 0, 0, 246, 238, 1, 0, 0, 0, 246, 240, 1, 0, 0, 0, 246, 242, 1, 0, 0, 0, 246, 244, 1, 0, 0, 0, 247, 248, 1, 0, 0, 0, 248, 249, 3, 16, 8, 0, 249, 250, 6, 9, -1, 0, 250, 252, 1, 0, 0, 0, 251, 246, 1, 0, 0, 0, 252, 255, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 262, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 256, 257, 5, 30, 0, 0, 257, 258, 5, 9, 0, 0, 258, 259, 3, 16, 8, 0, 259, 260, 5, 31, 0, 0, 260, 261, 6, 9, -1, 0, 261, 263, 1, 0, 0, 0, 262, 256, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 265, 6, 9, -1, 0, 265, 19, 1, 0, 0, 0, 266, 267, 5, 32, 0, 0, 267, 268, 3, 18, 9, 0, 268, 269, 6, 10, -1, 0, 269, 282, 1, 0, 0, 0, 270, 271, 5, 32, 0, 0, 271, 272, 3, 20, 10, 0, 272, 273, 6, 10, -1, 0, 273, 282, 1, 0, 0, 0, 274, 275, 5, 32, 0, 0, 275, 276, 3, 34, 17, 0, 276, 277, 6, 10, -1, 0, 277, 282, 1, 0, 0, 0, 278, 279, 3, 18, 9, 0, 279, 280, 6, 10, -1, 0, 280, 282, 1, 0, 0, 0, 281, 266, 1, 0, 0, 0, 281, 270, 1, 0, 0, 0, 281, 274, 1, 0, 0, 0, 281, 278, 1, 0, 0, 0, 282, 21, 1, 0, 0, 0, 283, 284, 3, 20, 10, 0, 284, 299, 6, 11, -1, 0, 285, 286, 5, 33, 0, 0, 286, 287, 3, 20, 10, 0, 287, 288, 6, 11, -1, 0, 288, 298, 1, 0, 0, 0, 289, 290, 5, 34, 0, 0, 290, 291, 3, 20, 10, 0, 291, 292, 6, 11, -1, 0, 292, 298, 1, 0, 0, 0, 293, 294, 7, 1, 0, 0, 294, 295, 3, 34, 17, 0, 295, 296, 6, 11, -1, 0, 296, 298, 1, 0, 0, 0, 297, 285, 1, 0, 0, 0, 297, 289, 1, 0, 0, 0, 297, 293, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 23, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 303, 3, 22, 11, 0, 303, 314, 6, 12, -1, 0, 304, 305, 5, 35, 0, 0, 305, 306, 3, 22, 11, 0, 306, 307, 6, 12, -1, 0, 307, 313, 1, 0, 0, 0, 308, 309, 5, 35, 0, 0, 309, 310, 3, 34, 17, 0, 310, 311, 6, 12, -1, 0, 311, 313, 1, 0, 0, 0, 312, 304, 1, 0, 0, 0, 312, 308, 1, 0, 0, 0, 313, 316, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 25, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 317, 318, 3, 24, 12, 0, 318, 329, 6, 13, -1, 0, 319, 320, 5, 36, 0, 0, 320, 321, 3, 24, 12, 0, 321, 322, 6, 13, -1, 0, 322, 328, 1, 0, 0, 0, 323, 324, 5, 36, 0, 0, 324, 325, 3, 34, 17, 0, 325, 326, 6, 13, -1, 0, 326, 328, 1, 0, 0, 0, 327, 319, 1, 0, 0, 0, 327, 323, 1, 0, 0, 0, 328, 331, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 27, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 333, 3, 26, 13, 0, 333, 348, 6, 14, -1, 0, 334, 335, 5, 37, 0, 0, 335, 336, 3, 26, 13, 0, 336, 337, 6, 14, -1, 0, 337, 347, 1, 0, 0, 0, 338, 339, 5, 38, 0, 0, 339, 340, 3, 26, 13, 0, 340, 341, 6, 14, -1, 0, 341, 347, 1, 0, 0, 0, 342, 343, 7, 2, 0, 0, 343, 344, 3, 34, 17, 0, 344, 345, 6, 14, -1, 0, 345, 347, 1, 0, 0, 0, 346, 334, 1, 0, 0, 0, 346, 338, 1, 0, 0, 0, 346, 342, 1, 0, 0, 0, 347, 350, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 29, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 351, 352, 3, 28, 14, 0, 352, 357, 6, 15, -1, 0, 353, 354, 5, 39, 0, 0, 354, 355, 3, 30, 15, 0, 355, 356, 6, 15, -1, 0, 356, 358, 1, 0, 0, 0, 357, 353, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 31, 1, 0, 0, 0, 359, 360, 3, 30, 15, 0, 360, 365, 6, 16, -1, 0, 361, 362, 5, 40, 0, 0, 362, 363, 3, 32, 16, 0, 363, 364, 6, 16, -1, 0, 364, 366, 1, 0, 0, 0, 365, 361, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 371, 1, 0, 0, 0, 367, 368, 3, 34, 17, 0, 368, 369, 6, 16, -1, 0, 369, 371, 1, 0, 0, 0, 370, 359, 1, 0, 0, 0, 370, 367, 1, 0, 0, 0, 371, 33, 1, 0, 0, 0, 372, 373, 3, 36, 18, 0, 373, 374, 3, 38, 19, 0, 374, 375, 5, 41, 0, 0, 375, 376, 3, 32, 16, 0, 376, 377, 6, 17, -1, 0, 377, 35, 1, 0, 0, 0, 378, 379, 7, 3, 0, 0, 379, 385, 6, 18, -1, 0, 380, 381, 7, 4, 0, 0, 381, 385, 6, 18, -1, 0, 382, 383, 7, 5, 0, 0, 383, 385, 6, 18, -1, 0, 384, 378, 1, 0, 0, 0, 384, 380, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 385, 37, 1, 0, 0, 0, 386, 387, 3, 16, 8, 0, 387, 394, 6, 19, -1, 0, 388, 389, 5, 48, 0, 0, 389, 390, 3, 16, 8, 0, 390, 391, 6, 19, -1, 0, 391, 393, 1, 0, 0, 0, 392, 388, 1, 0, 0, 0, 393, 396, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 397, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 397, 398, 6, 19, -1, 0, 398, 39, 1, 0, 0, 0, 399, 400, 3, 32, 16, 0, 400, 407, 6, 20, -1, 0, 401, 402, 5, 48, 0, 0, 402, 403, 3, 32, 16, 0, 403, 404, 6, 20, -1, 0, 404, 406, 1, 0, 0, 0, 405, 401, 1, 0, 0, 0, 406, 409, 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 411, 1, 0, 0, 0, 409, 407, 1, 0, 0, 0, 410, 399, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 41, 1, 0, 0, 0, 412, 413, 3, 32, 16, 0, 413, 414, 6, 21, -1, 0, 414, 418, 1, 0, 0, 0, 415, 416, 7, 0, 0, 0, 416, 418, 6, 21, -1, 0, 417, 412, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 418, 429, 1, 0, 0, 0, 419, 425, 5, 48, 0, 0, 420, 421, 3, 32, 16, 0, 421, 422, 6, 21, -1, 0, 422, 426, 1, 0, 0, 0, 423, 424, 7, 0, 0, 0, 424, 426, 6, 21, -1, 0, 425, 420, 1, 0, 0, 0, 425, 423, 1, 0, 0, 0, 426, 428, 1, 0, 0, 0, 427, 419, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 433, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 432, 417, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 43, 1, 0, 0, 0, 434, 435, 3, 32, 16, 0, 435, 436, 6, 22, -1, 0, 436, 437, 5, 49, 0, 0, 437, 438, 3, 32, 16, 0, 438, 439, 6, 22, -1, 0, 439, 45, 1, 0, 0, 0, 440, 441, 3, 32, 16, 0, 441, 442, 6, 23, -1, 0, 442, 443, 5, 41, 0, 0, 443, 444, 3, 32, 16, 0, 444, 445, 6, 23, -1, 0, 445, 47, 1, 0, 0, 0, 446, 447, 5, 50, 0, 0, 447, 1355, 6, 24, -1, 0, 448, 449, 5, 51, 0, 0, 449, 1355, 6, 24, -1, 0, 450, 451, 5, 232, 0, 0, 451, 1355, 6, 24, -1, 0, 452, 453, 5, 229, 0, 0, 453, 1355, 6, 24, -1, 0, 454, 455, 5, 231, 0, 0, 455, 1355, 6, 24, -1, 0, 456, 457, 5, 230, 0, 0, 457, 1355, 6, 24, -1, 0, 458, 459, 5, 233, 0, 0, 459, 1355, 6, 24, -1, 0, 460, 461, 5, 52, 0, 0, 461, 462, 3, 32, 16, 0, 462, 463, 5, 53, 0, 0, 463, 464, 6, 24, -1, 0, 464, 1355, 1, 0, 0, 0, 465, 466, 5, 54, 0, 0, 466, 467, 3, 48, 24, 0, 467, 468, 6, 24, -1, 0, 468, 1355, 1, 0, 0, 0, 469, 470, 5, 55, 0, 0, 470, 471, 3, 40, 20, 0, 471, 472, 5, 56, 0, 0, 472, 473, 6, 24, -1, 0, 473, 1355, 1, 0, 0, 0, 474, 475, 5, 55, 0, 0, 475, 476, 3, 40, 20, 0, 476, 477, 5, 57, 0, 0, 477, 478, 6, 24, -1, 0, 478, 1355, 1, 0, 0, 0, 479, 480, 5, 30, 0, 0, 480, 481, 3, 44, 22, 0, 481, 482, 5, 31, 0, 0, 482, 483, 6, 24, -1, 0, 483, 1355, 1, 0, 0, 0, 484, 485, 5, 55, 0, 0, 485, 486, 3, 44, 22, 0, 486, 487, 5, 31, 0, 0, 487, 488, 6, 24, -1, 0, 488, 1355, 1, 0, 0, 0, 489, 490, 5, 55, 0, 0, 490, 491, 3, 44, 22, 0, 491, 492, 5, 57, 0, 0, 492, 493, 6, 24, -1, 0, 493, 1355, 1, 0, 0, 0, 494, 495, 5, 30, 0, 0, 495, 496, 3, 44, 22, 0, 496, 497, 5, 57, 0, 0, 497, 498, 6, 24, -1, 0, 498, 1355, 1, 0, 0, 0, 499, 500, 5, 30, 0, 0, 500, 501, 3, 32, 16, 0, 501, 502, 5, 31, 0, 0, 502, 503, 6, 24, -1, 0, 503, 1355, 1, 0, 0, 0, 504, 505, 5, 58, 0, 0, 505, 506, 3, 46, 23, 0, 506, 507, 5, 59, 0, 0, 507, 508, 6, 24, -1, 0, 508, 1355, 1, 0, 0, 0, 509, 510, 5, 58, 0, 0, 510, 511, 3, 42, 21, 0, 511, 512, 5, 59, 0, 0, 512, 513, 6, 24, -1, 0, 513, 1355, 1, 0, 0, 0, 514, 515, 5, 60, 0, 0, 515, 516, 3, 40, 20, 0, 516, 517, 5, 31, 0, 0, 517, 518, 6, 24, -1, 0, 518, 1355, 1, 0, 0, 0, 519, 520, 5, 61, 0, 0, 520, 521, 3, 40, 20, 0, 521, 522, 5, 31, 0, 0, 522, 523, 6, 24, -1, 0, 523, 1355, 1, 0, 0, 0, 524, 525, 5, 62, 0, 0, 525, 526, 3, 40, 20, 0, 526, 527, 5, 31, 0, 0, 527, 528, 6, 24, -1, 0, 528, 1355, 1, 0, 0, 0, 529, 530, 5, 63, 0, 0, 530, 531, 3, 40, 20, 0, 531, 532, 5, 31, 0, 0, 532, 533, 6, 24, -1, 0, 533, 1355, 1, 0, 0, 0, 534, 535, 5, 64, 0, 0, 535, 536, 3, 40, 20, 0, 536, 537, 5, 31, 0, 0, 537, 538, 6, 24, -1, 0, 538, 1355, 1, 0, 0, 0, 539, 540, 5, 65, 0, 0, 540, 541, 3, 40, 20, 0, 541, 542, 5, 31, 0, 0, 542, 543, 6, 24, -1, 0, 543, 1355, 1, 0, 0, 0, 544, 545, 5, 66, 0, 0, 545, 546, 3, 40, 20, 0, 546, 547, 5, 31, 0, 0, 547, 548, 6, 24, -1, 0, 548, 1355, 1, 0, 0, 0, 549, 550, 5, 67, 0, 0, 550, 551, 3, 40, 20, 0, 551, 552, 5, 31, 0, 0, 552, 553, 6, 24, -1, 0, 553, 1355, 1, 0, 0, 0, 554, 555, 5, 68, 0, 0, 555, 556, 3, 40, 20, 0, 556, 557, 5, 31, 0, 0, 557, 558, 6, 24, -1, 0, 558, 1355, 1, 0, 0, 0, 559, 560, 5, 69, 0, 0, 560, 561, 3, 40, 20, 0, 561, 562, 5, 31, 0, 0, 562, 563, 6, 24, -1, 0, 563, 1355, 1, 0, 0, 0, 564, 565, 5, 70, 0, 0, 565, 566, 3, 40, 20, 0, 566, 567, 5, 31, 0, 0, 567, 568, 6, 24, -1, 0, 568, 1355, 1, 0, 0, 0, 569, 570, 5, 71, 0, 0, 570, 571, 3, 40, 20, 0, 571, 572, 5, 31, 0, 0, 572, 573, 6, 24, -1, 0, 573, 1355, 1, 0, 0, 0, 574, 575, 5, 72, 0, 0, 575, 576, 3, 40, 20, 0, 576, 577, 5, 31, 0, 0, 577, 578, 6, 24, -1, 0, 578, 1355, 1, 0, 0, 0, 579, 580, 5, 73, 0, 0, 580, 581, 3, 40, 20, 0, 581, 582, 5, 31, 0, 0, 582, 583, 6, 24, -1, 0, 583, 1355, 1, 0, 0, 0, 584, 585, 5, 74, 0, 0, 585, 586, 3, 40, 20, 0, 586, 587, 5, 31, 0, 0, 587, 588, 6, 24, -1, 0, 588, 1355, 1, 0, 0, 0, 589, 590, 5, 75, 0, 0, 590, 591, 3, 40, 20, 0, 591, 592, 5, 31, 0, 0, 592, 593, 6, 24, -1, 0, 593, 1355, 1, 0, 0, 0, 594, 595, 5, 76, 0, 0, 595, 596, 3, 40, 20, 0, 596, 597, 5, 31, 0, 0, 597, 598, 6, 24, -1, 0, 598, 1355, 1, 0, 0, 0, 599, 600, 5, 77, 0, 0, 600, 601, 3, 40, 20, 0, 601, 602, 5, 31, 0, 0, 602, 603, 6, 24, -1, 0, 603, 1355, 1, 0, 0, 0, 604, 605, 5, 78, 0, 0, 605, 606, 3, 40, 20, 0, 606, 607, 5, 31, 0, 0, 607, 608, 6, 24, -1, 0, 608, 1355, 1, 0, 0, 0, 609, 610, 5, 79, 0, 0, 610, 611, 3, 40, 20, 0, 611, 612, 5, 31, 0, 0, 612, 613, 6, 24, -1, 0, 613, 1355, 1, 0, 0, 0, 614, 615, 5, 80, 0, 0, 615, 616, 3, 40, 20, 0, 616, 617, 5, 31, 0, 0, 617, 618, 6, 24, -1, 0, 618, 1355, 1, 0, 0, 0, 619, 620, 5, 81, 0, 0, 620, 621, 3, 40, 20, 0, 621, 622, 5, 31, 0, 0, 622, 623, 6, 24, -1, 0, 623, 1355, 1, 0, 0, 0, 624, 625, 5, 82, 0, 0, 625, 626, 3, 40, 20, 0, 626, 627, 5, 31, 0, 0, 627, 628, 6, 24, -1, 0, 628, 1355, 1, 0, 0, 0, 629, 630, 5, 83, 0, 0, 630, 631, 3, 40, 20, 0, 631, 632, 5, 31, 0, 0, 632, 633, 6, 24, -1, 0, 633, 1355, 1, 0, 0, 0, 634, 635, 5, 84, 0, 0, 635, 636, 3, 40, 20, 0, 636, 637, 5, 31, 0, 0, 637, 638, 6, 24, -1, 0, 638, 1355, 1, 0, 0, 0, 639, 640, 5, 85, 0, 0, 640, 641, 3, 40, 20, 0, 641, 642, 5, 31, 0, 0, 642, 643, 6, 24, -1, 0, 643, 1355, 1, 0, 0, 0, 644, 645, 5, 86, 0, 0, 645, 646, 3, 40, 20, 0, 646, 647, 5, 31, 0, 0, 647, 648, 6, 24, -1, 0, 648, 1355, 1, 0, 0, 0, 649, 650, 5, 87, 0, 0, 650, 651, 3, 40, 20, 0, 651, 652, 5, 31, 0, 0, 652, 653, 6, 24, -1, 0, 653, 1355, 1, 0, 0, 0, 654, 655, 5, 88, 0, 0, 655, 656, 3, 40, 20, 0, 656, 657, 5, 31, 0, 0, 657, 658, 6, 24, -1, 0, 658, 1355, 1, 0, 0, 0, 659, 660, 5, 89, 0, 0, 660, 661, 3, 40, 20, 0, 661, 662, 5, 31, 0, 0, 662, 663, 6, 24, -1, 0, 663, 1355, 1, 0, 0, 0, 664, 665, 5, 90, 0, 0, 665, 666, 3, 40, 20, 0, 666, 667, 5, 31, 0, 0, 667, 668, 6, 24, -1, 0, 668, 1355, 1, 0, 0, 0, 669, 670, 5, 91, 0, 0, 670, 671, 3, 40, 20, 0, 671, 672, 5, 31, 0, 0, 672, 673, 6, 24, -1, 0, 673, 1355, 1, 0, 0, 0, 674, 675, 5, 92, 0, 0, 675, 676, 3, 40, 20, 0, 676, 677, 5, 31, 0, 0, 677, 678, 6, 24, -1, 0, 678, 1355, 1, 0, 0, 0, 679, 680, 5, 93, 0, 0, 680, 681, 3, 40, 20, 0, 681, 682, 5, 31, 0, 0, 682, 683, 6, 24, -1, 0, 683, 1355, 1, 0, 0, 0, 684, 685, 5, 94, 0, 0, 685, 686, 3, 40, 20, 0, 686, 687, 5, 31, 0, 0, 687, 688, 6, 24, -1, 0, 688, 1355, 1, 0, 0, 0, 689, 690, 5, 95, 0, 0, 690, 691, 3, 40, 20, 0, 691, 692, 5, 31, 0, 0, 692, 693, 6, 24, -1, 0, 693, 1355, 1, 0, 0, 0, 694, 695, 5, 96, 0, 0, 695, 696, 3, 40, 20, 0, 696, 697, 5, 31, 0, 0, 697, 698, 6, 24, -1, 0, 698, 1355, 1, 0, 0, 0, 699, 700, 5, 97, 0, 0, 700, 701, 3, 40, 20, 0, 701, 702, 5, 31, 0, 0, 702, 703, 6, 24, -1, 0, 703, 1355, 1, 0, 0, 0, 704, 705, 5, 98, 0, 0, 705, 706, 3, 40, 20, 0, 706, 707, 5, 31, 0, 0, 707, 708, 6, 24, -1, 0, 708, 1355, 1, 0, 0, 0, 709, 710, 5, 99, 0, 0, 710, 711, 3, 40, 20, 0, 711, 712, 5, 31, 0, 0, 712, 713, 6, 24, -1, 0, 713, 1355, 1, 0, 0, 0, 714, 715, 5, 100, 0, 0, 715, 716, 3, 40, 20, 0, 716, 717, 5, 31, 0, 0, 717, 718, 6, 24, -1, 0, 718, 1355, 1, 0, 0, 0, 719, 720, 5, 101, 0, 0, 720, 721, 3, 40, 20, 0, 721, 722, 5, 31, 0, 0, 722, 723, 6, 24, -1, 0, 723, 1355, 1, 0, 0, 0, 724, 725, 5, 102, 0, 0, 725, 726, 3, 40, 20, 0, 726, 727, 5, 31, 0, 0, 727, 728, 6, 24, -1, 0, 728, 1355, 1, 0, 0, 0, 729, 730, 5, 103, 0, 0, 730, 731, 3, 40, 20, 0, 731, 732, 5, 31, 0, 0, 732, 733, 6, 24, -1, 0, 733, 1355, 1, 0, 0, 0, 734, 735, 5, 104, 0, 0, 735, 736, 3, 40, 20, 0, 736, 737, 5, 31, 0, 0, 737, 738, 6, 24, -1, 0, 738, 1355, 1, 0, 0, 0, 739, 740, 5, 105, 0, 0, 740, 741, 3, 40, 20, 0, 741, 742, 5, 31, 0, 0, 742, 743, 6, 24, -1, 0, 743, 1355, 1, 0, 0, 0, 744, 745, 5, 106, 0, 0, 745, 746, 3, 40, 20, 0, 746, 747, 5, 31, 0, 0, 747, 748, 6, 24, -1, 0, 748, 1355, 1, 0, 0, 0, 749, 750, 5, 107, 0, 0, 750, 751, 3, 40, 20, 0, 751, 752, 5, 31, 0, 0, 752, 753, 6, 24, -1, 0, 753, 1355, 1, 0, 0, 0, 754, 755, 5, 108, 0, 0, 755, 756, 3, 40, 20, 0, 756, 757, 5, 31, 0, 0, 757, 758, 6, 24, -1, 0, 758, 1355, 1, 0, 0, 0, 759, 760, 5, 109, 0, 0, 760, 761, 3, 40, 20, 0, 761, 762, 5, 31, 0, 0, 762, 763, 6, 24, -1, 0, 763, 1355, 1, 0, 0, 0, 764, 765, 5, 110, 0, 0, 765, 766, 3, 40, 20, 0, 766, 767, 5, 31, 0, 0, 767, 768, 6, 24, -1, 0, 768, 1355, 1, 0, 0, 0, 769, 770, 5, 111, 0, 0, 770, 771, 3, 40, 20, 0, 771, 772, 5, 31, 0, 0, 772, 773, 6, 24, -1, 0, 773, 1355, 1, 0, 0, 0, 774, 775, 5, 112, 0, 0, 775, 776, 3, 40, 20, 0, 776, 777, 5, 31, 0, 0, 777, 778, 6, 24, -1, 0, 778, 1355, 1, 0, 0, 0, 779, 780, 5, 113, 0, 0, 780, 781, 3, 40, 20, 0, 781, 782, 5, 31, 0, 0, 782, 783, 6, 24, -1, 0, 783, 1355, 1, 0, 0, 0, 784, 785, 5, 114, 0, 0, 785, 786, 3, 40, 20, 0, 786, 787, 5, 31, 0, 0, 787, 788, 6, 24, -1, 0, 788, 1355, 1, 0, 0, 0, 789, 790, 5, 115, 0, 0, 790, 791, 3, 40, 20, 0, 791, 792, 5, 31, 0, 0, 792, 793, 6, 24, -1, 0, 793, 1355, 1, 0, 0, 0, 794, 795, 5, 116, 0, 0, 795, 796, 3, 40, 20, 0, 796, 797, 5, 31, 0, 0, 797, 798, 6, 24, -1, 0, 798, 1355, 1, 0, 0, 0, 799, 800, 5, 117, 0, 0, 800, 801, 3, 40, 20, 0, 801, 802, 5, 31, 0, 0, 802, 803, 6, 24, -1, 0, 803, 1355, 1, 0, 0, 0, 804, 805, 5, 118, 0, 0, 805, 806, 3, 40, 20, 0, 806, 807, 5, 31, 0, 0, 807, 808, 6, 24, -1, 0, 808, 1355, 1, 0, 0, 0, 809, 810, 5, 119, 0, 0, 810, 811, 3, 40, 20, 0, 811, 812, 5, 31, 0, 0, 812, 813, 6, 24, -1, 0, 813, 1355, 1, 0, 0, 0, 814, 815, 5, 120, 0, 0, 815, 816, 3, 40, 20, 0, 816, 817, 5, 31, 0, 0, 817, 818, 6, 24, -1, 0, 818, 1355, 1, 0, 0, 0, 819, 820, 5, 121, 0, 0, 820, 821, 3, 40, 20, 0, 821, 822, 5, 31, 0, 0, 822, 823, 6, 24, -1, 0, 823, 1355, 1, 0, 0, 0, 824, 825, 5, 122, 0, 0, 825, 826, 3, 40, 20, 0, 826, 827, 5, 31, 0, 0, 827, 828, 6, 24, -1, 0, 828, 1355, 1, 0, 0, 0, 829, 830, 5, 123, 0, 0, 830, 831, 3, 40, 20, 0, 831, 832, 5, 31, 0, 0, 832, 833, 6, 24, -1, 0, 833, 1355, 1, 0, 0, 0, 834, 835, 5, 124, 0, 0, 835, 836, 3, 40, 20, 0, 836, 837, 5, 31, 0, 0, 837, 838, 6, 24, -1, 0, 838, 1355, 1, 0, 0, 0, 839, 840, 5, 125, 0, 0, 840, 841, 3, 40, 20, 0, 841, 842, 5, 31, 0, 0, 842, 843, 6, 24, -1, 0, 843, 1355, 1, 0, 0, 0, 844, 845, 5, 126, 0, 0, 845, 846, 3, 40, 20, 0, 846, 847, 5, 31, 0, 0, 847, 848, 6, 24, -1, 0, 848, 1355, 1, 0, 0, 0, 849, 850, 5, 127, 0, 0, 850, 851, 3, 40, 20, 0, 851, 852, 5, 31, 0, 0, 852, 853, 6, 24, -1, 0, 853, 1355, 1, 0, 0, 0, 854, 855, 5, 128, 0, 0, 855, 856, 3, 40, 20, 0, 856, 857, 5, 31, 0, 0, 857, 858, 6, 24, -1, 0, 858, 1355, 1, 0, 0, 0, 859, 860, 5, 129, 0, 0, 860, 861, 3, 40, 20, 0, 861, 862, 5, 31, 0, 0, 862, 863, 6, 24, -1, 0, 863, 1355, 1, 0, 0, 0, 864, 865, 5, 130, 0, 0, 865, 866, 3, 40, 20, 0, 866, 867, 5, 31, 0, 0, 867, 868, 6, 24, -1, 0, 868, 1355, 1, 0, 0, 0, 869, 870, 5, 131, 0, 0, 870, 871, 3, 40, 20, 0, 871, 872, 5, 31, 0, 0, 872, 873, 6, 24, -1, 0, 873, 1355, 1, 0, 0, 0, 874, 875, 5, 132, 0, 0, 875, 876, 3, 40, 20, 0, 876, 877, 5, 31, 0, 0, 877, 878, 6, 24, -1, 0, 878, 1355, 1, 0, 0, 0, 879, 880, 5, 133, 0, 0, 880, 881, 3, 40, 20, 0, 881, 882, 5, 31, 0, 0, 882, 883, 6, 24, -1, 0, 883, 1355, 1, 0, 0, 0, 884, 885, 5, 134, 0, 0, 885, 886, 3, 40, 20, 0, 886, 887, 5, 31, 0, 0, 887, 888, 6, 24, -1, 0, 888, 1355, 1, 0, 0, 0, 889, 890, 5, 135, 0, 0, 890, 891, 3, 40, 20, 0, 891, 892, 5, 31, 0, 0, 892, 893, 6, 24, -1, 0, 893, 1355, 1, 0, 0, 0, 894, 895, 5, 136, 0, 0, 895, 896, 3, 40, 20, 0, 896, 897, 5, 31, 0, 0, 897, 898, 6, 24, -1, 0, 898, 1355, 1, 0, 0, 0, 899, 900, 5, 137, 0, 0, 900, 901, 3, 40, 20, 0, 901, 902, 5, 31, 0, 0, 902, 903, 6, 24, -1, 0, 903, 1355, 1, 0, 0, 0, 904, 905, 5, 138, 0, 0, 905, 906, 3, 40, 20, 0, 906, 907, 5, 31, 0, 0, 907, 908, 6, 24, -1, 0, 908, 1355, 1, 0, 0, 0, 909, 910, 5, 139, 0, 0, 910, 911, 3, 40, 20, 0, 911, 912, 5, 31, 0, 0, 912, 913, 6, 24, -1, 0, 913, 1355, 1, 0, 0, 0, 914, 915, 5, 140, 0, 0, 915, 916, 3, 40, 20, 0, 916, 917, 5, 31, 0, 0, 917, 918, 6, 24, -1, 0, 918, 1355, 1, 0, 0, 0, 919, 920, 5, 141, 0, 0, 920, 921, 3, 40, 20, 0, 921, 922, 5, 31, 0, 0, 922, 923, 6, 24, -1, 0, 923, 1355, 1, 0, 0, 0, 924, 925, 5, 142, 0, 0, 925, 926, 3, 40, 20, 0, 926, 927, 5, 31, 0, 0, 927, 928, 6, 24, -1, 0, 928, 1355, 1, 0, 0, 0, 929, 930, 5, 143, 0, 0, 930, 931, 3, 40, 20, 0, 931, 932, 5, 31, 0, 0, 932, 933, 6, 24, -1, 0, 933, 1355, 1, 0, 0, 0, 934, 935, 5, 144, 0, 0, 935, 936, 3, 40, 20, 0, 936, 937, 5, 31, 0, 0, 937, 938, 6, 24, -1, 0, 938, 1355, 1, 0, 0, 0, 939, 940, 5, 145, 0, 0, 940, 941, 3, 40, 20, 0, 941, 942, 5, 31, 0, 0, 942, 943, 6, 24, -1, 0, 943, 1355, 1, 0, 0, 0, 944, 945, 5, 146, 0, 0, 945, 946, 3, 40, 20, 0, 946, 947, 5, 31, 0, 0, 947, 948, 6, 24, -1, 0, 948, 1355, 1, 0, 0, 0, 949, 950, 5, 147, 0, 0, 950, 951, 3, 40, 20, 0, 951, 952, 5, 31, 0, 0, 952, 953, 6, 24, -1, 0, 953, 1355, 1, 0, 0, 0, 954, 955, 5, 148, 0, 0, 955, 956, 3, 40, 20, 0, 956, 957, 5, 31, 0, 0, 957, 958, 6, 24, -1, 0, 958, 1355, 1, 0, 0, 0, 959, 960, 5, 149, 0, 0, 960, 961, 3, 40, 20, 0, 961, 962, 5, 31, 0, 0, 962, 963, 6, 24, -1, 0, 963, 1355, 1, 0, 0, 0, 964, 965, 5, 150, 0, 0, 965, 966, 3, 40, 20, 0, 966, 967, 5, 31, 0, 0, 967, 968, 6, 24, -1, 0, 968, 1355, 1, 0, 0, 0, 969, 970, 5, 151, 0, 0, 970, 971, 3, 40, 20, 0, 971, 972, 5, 31, 0, 0, 972, 973, 6, 24, -1, 0, 973, 1355, 1, 0, 0, 0, 974, 975, 5, 152, 0, 0, 975, 976, 3, 40, 20, 0, 976, 977, 5, 31, 0, 0, 977, 978, 6, 24, -1, 0, 978, 1355, 1, 0, 0, 0, 979, 980, 5, 153, 0, 0, 980, 981, 3, 40, 20, 0, 981, 982, 5, 31, 0, 0, 982, 983, 6, 24, -1, 0, 983, 1355, 1, 0, 0, 0, 984, 985, 5, 154, 0, 0, 985, 986, 3, 40, 20, 0, 986, 987, 5, 31, 0, 0, 987, 988, 6, 24, -1, 0, 988, 1355, 1, 0, 0, 0, 989, 990, 5, 155, 0, 0, 990, 991, 3, 40, 20, 0, 991, 992, 5, 31, 0, 0, 992, 993, 6, 24, -1, 0, 993, 1355, 1, 0, 0, 0, 994, 995, 5, 156, 0, 0, 995, 996, 3, 40, 20, 0, 996, 997, 5, 31, 0, 0, 997, 998, 6, 24, -1, 0, 998, 1355, 1, 0, 0, 0, 999, 1000, 5, 157, 0, 0, 1000, 1001, 3, 40, 20, 0, 1001, 1002, 5, 31, 0, 0, 1002, 1003, 6, 24, -1, 0, 1003, 1355, 1, 0, 0, 0, 1004, 1005, 5, 158, 0, 0, 1005, 1006, 3, 40, 20, 0, 1006, 1007, 5, 31, 0, 0, 1007, 1008, 6, 24, -1, 0, 1008, 1355, 1, 0, 0, 0, 1009, 1010, 5, 159, 0, 0, 1010, 1011, 3, 40, 20, 0, 1011, 1012, 5, 31, 0, 0, 1012, 1013, 6, 24, -1, 0, 1013, 1355, 1, 0, 0, 0, 1014, 1015, 5, 160, 0, 0, 1015, 1016, 3, 40, 20, 0, 1016, 1017, 5, 31, 0, 0, 1017, 1018, 6, 24, -1, 0, 1018, 1355, 1, 0, 0, 0, 1019, 1020, 5, 161, 0, 0, 1020, 1021, 3, 40, 20, 0, 1021, 1022, 5, 31, 0, 0, 1022, 1023, 6, 24, -1, 0, 1023, 1355, 1, 0, 0, 0, 1024, 1025, 5, 162, 0, 0, 1025, 1026, 3, 40, 20, 0, 1026, 1027, 5, 31, 0, 0, 1027, 1028, 6, 24, -1, 0, 1028, 1355, 1, 0, 0, 0, 1029, 1030, 5, 163, 0, 0, 1030, 1031, 3, 40, 20, 0, 1031, 1032, 5, 31, 0, 0, 1032, 1033, 6, 24, -1, 0, 1033, 1355, 1, 0, 0, 0, 1034, 1035, 5, 164, 0, 0, 1035, 1036, 3, 40, 20, 0, 1036, 1037, 5, 31, 0, 0, 1037, 1038, 6, 24, -1, 0, 1038, 1355, 1, 0, 0, 0, 1039, 1040, 5, 165, 0, 0, 1040, 1041, 3, 40, 20, 0, 1041, 1042, 5, 31, 0, 0, 1042, 1043, 6, 24, -1, 0, 1043, 1355, 1, 0, 0, 0, 1044, 1045, 5, 166, 0, 0, 1045, 1046, 3, 40, 20, 0, 1046, 1047, 5, 31, 0, 0, 1047, 1048, 6, 24, -1, 0, 1048, 1355, 1, 0, 0, 0, 1049, 1050, 5, 167, 0, 0, 1050, 1051, 3, 40, 20, 0, 1051, 1052, 5, 31, 0, 0, 1052, 1053, 6, 24, -1, 0, 1053, 1355, 1, 0, 0, 0, 1054, 1055, 5, 168, 0, 0, 1055, 1056, 3, 40, 20, 0, 1056, 1057, 5, 31, 0, 0, 1057, 1058, 6, 24, -1, 0, 1058, 1355, 1, 0, 0, 0, 1059, 1060, 5, 169, 0, 0, 1060, 1061, 3, 40, 20, 0, 1061, 1062, 5, 31, 0, 0, 1062, 1063, 6, 24, -1, 0, 1063, 1355, 1, 0, 0, 0, 1064, 1065, 5, 170, 0, 0, 1065, 1066, 3, 40, 20, 0, 1066, 1067, 5, 31, 0, 0, 1067, 1068, 6, 24, -1, 0, 1068, 1355, 1, 0, 0, 0, 1069, 1070, 5, 171, 0, 0, 1070, 1071, 3, 40, 20, 0, 1071, 1072, 5, 31, 0, 0, 1072, 1073, 6, 24, -1, 0, 1073, 1355, 1, 0, 0, 0, 1074, 1075, 5, 172, 0, 0, 1075, 1076, 3, 40, 20, 0, 1076, 1077, 5, 31, 0, 0, 1077, 1078, 6, 24, -1, 0, 1078, 1355, 1, 0, 0, 0, 1079, 1080, 5, 173, 0, 0, 1080, 1081, 3, 40, 20, 0, 1081, 1082, 5, 31, 0, 0, 1082, 1083, 6, 24, -1, 0, 1083, 1355, 1, 0, 0, 0, 1084, 1085, 5, 174, 0, 0, 1085, 1086, 3, 40, 20, 0, 1086, 1087, 5, 31, 0, 0, 1087, 1088, 6, 24, -1, 0, 1088, 1355, 1, 0, 0, 0, 1089, 1090, 5, 175, 0, 0, 1090, 1091, 3, 40, 20, 0, 1091, 1092, 5, 31, 0, 0, 1092, 1093, 6, 24, -1, 0, 1093, 1355, 1, 0, 0, 0, 1094, 1095, 5, 176, 0, 0, 1095, 1096, 3, 40, 20, 0, 1096, 1097, 5, 31, 0, 0, 1097, 1098, 6, 24, -1, 0, 1098, 1355, 1, 0, 0, 0, 1099, 1100, 5, 177, 0, 0, 1100, 1101, 3, 40, 20, 0, 1101, 1102, 5, 31, 0, 0, 1102, 1103, 6, 24, -1, 0, 1103, 1355, 1, 0, 0, 0, 1104, 1105, 5, 178, 0, 0, 1105, 1106, 3, 40, 20, 0, 1106, 1107, 5, 31, 0, 0, 1107, 1108, 6, 24, -1, 0, 1108, 1355, 1, 0, 0, 0, 1109, 1110, 5, 179, 0, 0, 1110, 1111, 3, 40, 20, 0, 1111, 1112, 5, 31, 0, 0, 1112, 1113, 6, 24, -1, 0, 1113, 1355, 1, 0, 0, 0, 1114, 1115, 5, 180, 0, 0, 1115, 1116, 3, 40, 20, 0, 1116, 1117, 5, 31, 0, 0, 1117, 1118, 6, 24, -1, 0, 1118, 1355, 1, 0, 0, 0, 1119, 1120, 5, 181, 0, 0, 1120, 1121, 3, 40, 20, 0, 1121, 1122, 5, 31, 0, 0, 1122, 1123, 6, 24, -1, 0, 1123, 1355, 1, 0, 0, 0, 1124, 1125, 5, 182, 0, 0, 1125, 1126, 3, 40, 20, 0, 1126, 1127, 5, 31, 0, 0, 1127, 1128, 6, 24, -1, 0, 1128, 1355, 1, 0, 0, 0, 1129, 1130, 5, 183, 0, 0, 1130, 1131, 3, 40, 20, 0, 1131, 1132, 5, 31, 0, 0, 1132, 1133, 6, 24, -1, 0, 1133, 1355, 1, 0, 0, 0, 1134, 1135, 5, 184, 0, 0, 1135, 1136, 3, 40, 20, 0, 1136, 1137, 5, 31, 0, 0, 1137, 1138, 6, 24, -1, 0, 1138, 1355, 1, 0, 0, 0, 1139, 1140, 5, 185, 0, 0, 1140, 1141, 3, 40, 20, 0, 1141, 1142, 5, 31, 0, 0, 1142, 1143, 6, 24, -1, 0, 1143, 1355, 1, 0, 0, 0, 1144, 1145, 5, 186, 0, 0, 1145, 1146, 3, 40, 20, 0, 1146, 1147, 5, 31, 0, 0, 1147, 1148, 6, 24, -1, 0, 1148, 1355, 1, 0, 0, 0, 1149, 1150, 5, 187, 0, 0, 1150, 1151, 3, 40, 20, 0, 1151, 1152, 5, 31, 0, 0, 1152, 1153, 6, 24, -1, 0, 1153, 1355, 1, 0, 0, 0, 1154, 1155, 5, 188, 0, 0, 1155, 1156, 3, 40, 20, 0, 1156, 1157, 5, 31, 0, 0, 1157, 1158, 6, 24, -1, 0, 1158, 1355, 1, 0, 0, 0, 1159, 1160, 5, 189, 0, 0, 1160, 1161, 3, 40, 20, 0, 1161, 1162, 5, 31, 0, 0, 1162, 1163, 6, 24, -1, 0, 1163, 1355, 1, 0, 0, 0, 1164, 1165, 5, 190, 0, 0, 1165, 1166, 3, 40, 20, 0, 1166, 1167, 5, 31, 0, 0, 1167, 1168, 6, 24, -1, 0, 1168, 1355, 1, 0, 0, 0, 1169, 1170, 5, 191, 0, 0, 1170, 1171, 3, 40, 20, 0, 1171, 1172, 5, 31, 0, 0, 1172, 1173, 6, 24, -1, 0, 1173, 1355, 1, 0, 0, 0, 1174, 1175, 5, 192, 0, 0, 1175, 1176, 3, 40, 20, 0, 1176, 1177, 5, 31, 0, 0, 1177, 1178, 6, 24, -1, 0, 1178, 1355, 1, 0, 0, 0, 1179, 1180, 5, 193, 0, 0, 1180, 1181, 3, 40, 20, 0, 1181, 1182, 5, 31, 0, 0, 1182, 1183, 6, 24, -1, 0, 1183, 1355, 1, 0, 0, 0, 1184, 1185, 5, 194, 0, 0, 1185, 1186, 3, 40, 20, 0, 1186, 1187, 5, 31, 0, 0, 1187, 1188, 6, 24, -1, 0, 1188, 1355, 1, 0, 0, 0, 1189, 1190, 5, 195, 0, 0, 1190, 1191, 3, 40, 20, 0, 1191, 1192, 5, 31, 0, 0, 1192, 1193, 6, 24, -1, 0, 1193, 1355, 1, 0, 0, 0, 1194, 1195, 5, 196, 0, 0, 1195, 1196, 3, 40, 20, 0, 1196, 1197, 5, 31, 0, 0, 1197, 1198, 6, 24, -1, 0, 1198, 1355, 1, 0, 0, 0, 1199, 1200, 5, 197, 0, 0, 1200, 1201, 3, 40, 20, 0, 1201, 1202, 5, 31, 0, 0, 1202, 1203, 6, 24, -1, 0, 1203, 1355, 1, 0, 0, 0, 1204, 1205, 5, 198, 0, 0, 1205, 1206, 3, 40, 20, 0, 1206, 1207, 5, 31, 0, 0, 1207, 1208, 6, 24, -1, 0, 1208, 1355, 1, 0, 0, 0, 1209, 1210, 5, 199, 0, 0, 1210, 1211, 3, 40, 20, 0, 1211, 1212, 5, 31, 0, 0, 1212, 1213, 6, 24, -1, 0, 1213, 1355, 1, 0, 0, 0, 1214, 1215, 5, 200, 0, 0, 1215, 1216, 3, 40, 20, 0, 1216, 1217, 5, 31, 0, 0, 1217, 1218, 6, 24, -1, 0, 1218, 1355, 1, 0, 0, 0, 1219, 1220, 5, 201, 0, 0, 1220, 1221, 3, 40, 20, 0, 1221, 1222, 5, 31, 0, 0, 1222, 1223, 6, 24, -1, 0, 1223, 1355, 1, 0, 0, 0, 1224, 1225, 5, 202, 0, 0, 1225, 1226, 3, 40, 20, 0, 1226, 1227, 5, 31, 0, 0, 1227, 1228, 6, 24, -1, 0, 1228, 1355, 1, 0, 0, 0, 1229, 1230, 5, 203, 0, 0, 1230, 1231, 3, 40, 20, 0, 1231, 1232, 5, 31, 0, 0, 1232, 1233, 6, 24, -1, 0, 1233, 1355, 1, 0, 0, 0, 1234, 1235, 5, 204, 0, 0, 1235, 1236, 3, 40, 20, 0, 1236, 1237, 5, 31, 0, 0, 1237, 1238, 6, 24, -1, 0, 1238, 1355, 1, 0, 0, 0, 1239, 1240, 5, 205, 0, 0, 1240, 1241, 3, 40, 20, 0, 1241, 1242, 5, 31, 0, 0, 1242, 1243, 6, 24, -1, 0, 1243, 1355, 1, 0, 0, 0, 1244, 1245, 5, 206, 0, 0, 1245, 1246, 3, 40, 20, 0, 1246, 1247, 5, 31, 0, 0, 1247, 1248, 6, 24, -1, 0, 1248, 1355, 1, 0, 0, 0, 1249, 1250, 5, 207, 0, 0, 1250, 1251, 3, 40, 20, 0, 1251, 1252, 5, 31, 0, 0, 1252, 1253, 6, 24, -1, 0, 1253, 1355, 1, 0, 0, 0, 1254, 1255, 5, 208, 0, 0, 1255, 1256, 3, 40, 20, 0, 1256, 1257, 5, 31, 0, 0, 1257, 1258, 6, 24, -1, 0, 1258, 1355, 1, 0, 0, 0, 1259, 1260, 5, 209, 0, 0, 1260, 1261, 3, 40, 20, 0, 1261, 1262, 5, 31, 0, 0, 1262, 1263, 6, 24, -1, 0, 1263, 1355, 1, 0, 0, 0, 1264, 1265, 5, 210, 0, 0, 1265, 1266, 3, 40, 20, 0, 1266, 1267, 5, 31, 0, 0, 1267, 1268, 6, 24, -1, 0, 1268, 1355, 1, 0, 0, 0, 1269, 1270, 5, 211, 0, 0, 1270, 1271, 3, 40, 20, 0, 1271, 1272, 5, 31, 0, 0, 1272, 1273, 6, 24, -1, 0, 1273, 1355, 1, 0, 0, 0, 1274, 1275, 5, 212, 0, 0, 1275, 1276, 3, 40, 20, 0, 1276, 1277, 5, 31, 0, 0, 1277, 1278, 6, 24, -1, 0, 1278, 1355, 1, 0, 0, 0, 1279, 1280, 5, 213, 0, 0, 1280, 1281, 3, 40, 20, 0, 1281, 1282, 5, 31, 0, 0, 1282, 1283, 6, 24, -1, 0, 1283, 1355, 1, 0, 0, 0, 1284, 1285, 5, 214, 0, 0, 1285, 1286, 3, 40, 20, 0, 1286, 1287, 5, 31, 0, 0, 1287, 1288, 6, 24, -1, 0, 1288, 1355, 1, 0, 0, 0, 1289, 1290, 5, 215, 0, 0, 1290, 1291, 3, 40, 20, 0, 1291, 1292, 5, 31, 0, 0, 1292, 1293, 6, 24, -1, 0, 1293, 1355, 1, 0, 0, 0, 1294, 1295, 5, 216, 0, 0, 1295, 1296, 3, 40, 20, 0, 1296, 1297, 5, 31, 0, 0, 1297, 1298, 6, 24, -1, 0, 1298, 1355, 1, 0, 0, 0, 1299, 1300, 5, 217, 0, 0, 1300, 1301, 3, 40, 20, 0, 1301, 1302, 5, 31, 0, 0, 1302, 1303, 6, 24, -1, 0, 1303, 1355, 1, 0, 0, 0, 1304, 1305, 5, 218, 0, 0, 1305, 1306, 3, 40, 20, 0, 1306, 1307, 5, 31, 0, 0, 1307, 1308, 6, 24, -1, 0, 1308, 1355, 1, 0, 0, 0, 1309, 1310, 5, 219, 0, 0, 1310, 1311, 3, 40, 20, 0, 1311, 1312, 5, 31, 0, 0, 1312, 1313, 6, 24, -1, 0, 1313, 1355, 1, 0, 0, 0, 1314, 1315, 5, 220, 0, 0, 1315, 1316, 3, 40, 20, 0, 1316, 1317, 5, 31, 0, 0, 1317, 1318, 6, 24, -1, 0, 1318, 1355, 1, 0, 0, 0, 1319, 1320, 5, 221, 0, 0, 1320, 1321, 3, 40, 20, 0, 1321, 1322, 5, 31, 0, 0, 1322, 1323, 6, 24, -1, 0, 1323, 1355, 1, 0, 0, 0, 1324, 1325, 5, 222, 0, 0, 1325, 1326, 3, 40, 20, 0, 1326, 1327, 5, 31, 0, 0, 1327, 1328, 6, 24, -1, 0, 1328, 1355, 1, 0, 0, 0, 1329, 1330, 5, 223, 0, 0, 1330, 1331, 3, 40, 20, 0, 1331, 1332, 5, 31, 0, 0, 1332, 1333, 6, 24, -1, 0, 1333, 1355, 1, 0, 0, 0, 1334, 1335, 5, 224, 0, 0, 1335, 1336, 3, 40, 20, 0, 1336, 1337, 5, 31, 0, 0, 1337, 1338, 6, 24, -1, 0, 1338, 1355, 1, 0, 0, 0, 1339, 1340, 5, 225, 0, 0, 1340, 1341, 3, 40, 20, 0, 1341, 1342, 5, 31, 0, 0, 1342, 1343, 6, 24, -1, 0, 1343, 1355, 1, 0, 0, 0, 1344, 1345, 5, 226, 0, 0, 1345, 1346, 3, 40, 20, 0, 1346, 1347, 5, 31, 0, 0, 1347, 1348, 6, 24, -1, 0, 1348, 1355, 1, 0, 0, 0, 1349, 1350, 5, 227, 0, 0, 1350, 1351, 3, 40, 20, 0, 1351, 1352, 5, 31, 0, 0, 1352, 1353, 6, 24, -1, 0, 1353, 1355, 1, 0, 0, 0, 1354, 446, 1, 0, 0, 0, 1354, 448, 1, 0, 0, 0, 1354, 450, 1, 0, 0, 0, 1354, 452, 1, 0, 0, 0, 1354, 454, 1, 0, 0, 0, 1354, 456, 1, 0, 0, 0, 1354, 458, 1, 0, 0, 0, 1354, 460, 1, 0, 0, 0, 1354, 465, 1, 0, 0, 0, 1354, 469, 1, 0, 0, 0, 1354, 474, 1, 0, 0, 0, 1354, 479, 1, 0, 0, 0, 1354, 484, 1, 0, 0, 0, 1354, 489, 1, 0, 0, 0, 1354, 494, 1, 0, 0, 0, 1354, 499, 1, 0, 0, 0, 1354, 504, 1, 0, 0, 0, 1354, 509, 1, 0, 0, 0, 1354, 514, 1, 0, 0, 0, 1354, 519, 1, 0, 0, 0, 1354, 524, 1, 0, 0, 0, 1354, 529, 1, 0, 0, 0, 1354, 534, 1, 0, 0, 0, 1354, 539, 1, 0, 0, 0, 1354, 544, 1, 0, 0, 0, 1354, 549, 1, 0, 0, 0, 1354, 554, 1, 0, 0, 0, 1354, 559, 1, 0, 0, 0, 1354, 564, 1, 0, 0, 0, 1354, 569, 1, 0, 0, 0, 1354, 574, 1, 0, 0, 0, 1354, 579, 1, 0, 0, 0, 1354, 584, 1, 0, 0, 0, 1354, 589, 1, 0, 0, 0, 1354, 594, 1, 0, 0, 0, 1354, 599, 1, 0, 0, 0, 1354, 604, 1, 0, 0, 0, 1354, 609, 1, 0, 0, 0, 1354, 614, 1, 0, 0, 0, 1354, 619, 1, 0, 0, 0, 1354, 624, 1, 0, 0, 0, 1354, 629, 1, 0, 0, 0, 1354, 634, 1, 0, 0, 0, 1354, 639, 1, 0, 0, 0, 1354, 644, 1, 0, 0, 0, 1354, 649, 1, 0, 0, 0, 1354, 654, 1, 0, 0, 0, 1354, 659, 1, 0, 0, 0, 1354, 664, 1, 0, 0, 0, 1354, 669, 1, 0, 0, 0, 1354, 674, 1, 0, 0, 0, 1354, 679, 1, 0, 0, 0, 1354, 684, 1, 0, 0, 0, 1354, 689, 1, 0, 0, 0, 1354, 694, 1, 0, 0, 0, 1354, 699, 1, 0, 0, 0, 1354, 704, 1, 0, 0, 0, 1354, 709, 1, 0, 0, 0, 1354, 714, 1, 0, 0, 0, 1354, 719, 1, 0, 0, 0, 1354, 724, 1, 0, 0, 0, 1354, 729, 1, 0, 0, 0, 1354, 734, 1, 0, 0, 0, 1354, 739, 1, 0, 0, 0, 1354, 744, 1, 0, 0, 0, 1354, 749, 1, 0, 0, 0, 1354, 754, 1, 0, 0, 0, 1354, 759, 1, 0, 0, 0, 1354, 764, 1, 0, 0, 0, 1354, 769, 1, 0, 0, 0, 1354, 774, 1, 0, 0, 0, 1354, 779, 1, 0, 0, 0, 1354, 784, 1, 0, 0, 0, 1354, 789, 1, 0, 0, 0, 1354, 794, 1, 0, 0, 0, 1354, 799, 1, 0, 0, 0, 1354, 804, 1, 0, 0, 0, 1354, 809, 1, 0, 0, 0, 1354, 814, 1, 0, 0, 0, 1354, 819, 1, 0, 0, 0, 1354, 824, 1, 0, 0, 0, 1354, 829, 1, 0, 0, 0, 1354, 834, 1, 0, 0, 0, 1354, 839, 1, 0, 0, 0, 1354, 844, 1, 0, 0, 0, 1354, 849, 1, 0, 0, 0, 1354, 854, 1, 0, 0, 0, 1354, 859, 1, 0, 0, 0, 1354, 864, 1, 0, 0, 0, 1354, 869, 1, 0, 0, 0, 1354, 874, 1, 0, 0, 0, 1354, 879, 1, 0, 0, 0, 1354, 884, 1, 0, 0, 0, 1354, 889, 1, 0, 0, 0, 1354, 894, 1, 0, 0, 0, 1354, 899, 1, 0, 0, 0, 1354, 904, 1, 0, 0, 0, 1354, 909, 1, 0, 0, 0, 1354, 914, 1, 0, 0, 0, 1354, 919, 1, 0, 0, 0, 1354, 924, 1, 0, 0, 0, 1354, 929, 1, 0, 0, 0, 1354, 934, 1, 0, 0, 0, 1354, 939, 1, 0, 0, 0, 1354, 944, 1, 0, 0, 0, 1354, 949, 1, 0, 0, 0, 1354, 954, 1, 0, 0, 0, 1354, 959, 1, 0, 0, 0, 1354, 964, 1, 0, 0, 0, 1354, 969, 1, 0, 0, 0, 1354, 974, 1, 0, 0, 0, 1354, 979, 1, 0, 0, 0, 1354, 984, 1, 0, 0, 0, 1354, 989, 1, 0, 0, 0, 1354, 994, 1, 0, 0, 0, 1354, 999, 1, 0, 0, 0, 1354, 1004, 1, 0, 0, 0, 1354, 1009, 1, 0, 0, 0, 1354, 1014, 1, 0, 0, 0, 1354, 1019, 1, 0, 0, 0, 1354, 1024, 1, 0, 0, 0, 1354, 1029, 1, 0, 0, 0, 1354, 1034, 1, 0, 0, 0, 1354, 1039, 1, 0, 0, 0, 1354, 1044, 1, 0, 0, 0, 1354, 1049, 1, 0, 0, 0, 1354, 1054, 1, 0, 0, 0, 1354, 1059, 1, 0, 0, 0, 1354, 1064, 1, 0, 0, 0, 1354, 1069, 1, 0, 0, 0, 1354, 1074, 1, 0, 0, 0, 1354, 1079, 1, 0, 0, 0, 1354, 1084, 1, 0, 0, 0, 1354, 1089, 1, 0, 0, 0, 1354, 1094, 1, 0, 0, 0, 1354, 1099, 1, 0, 0, 0, 1354, 1104, 1, 0, 0, 0, 1354, 1109, 1, 0, 0, 0, 1354, 1114, 1, 0, 0, 0, 1354, 1119, 1, 0, 0, 0, 1354, 1124, 1, 0, 0, 0, 1354, 1129, 1, 0, 0, 0, 1354, 1134, 1, 0, 0, 0, 1354, 1139, 1, 0, 0, 0, 1354, 1144, 1, 0, 0, 0, 1354, 1149, 1, 0, 0, 0, 1354, 1154, 1, 0, 0, 0, 1354, 1159, 1, 0, 0, 0, 1354, 1164, 1, 0, 0, 0, 1354, 1169, 1, 0, 0, 0, 1354, 1174, 1, 0, 0, 0, 1354, 1179, 1, 0, 0, 0, 1354, 1184, 1, 0, 0, 0, 1354, 1189, 1, 0, 0, 0, 1354, 1194, 1, 0, 0, 0, 1354, 1199, 1, 0, 0, 0, 1354, 1204, 1, 0, 0, 0, 1354, 1209, 1, 0, 0, 0, 1354, 1214, 1, 0, 0, 0, 1354, 1219, 1, 0, 0, 0, 1354, 1224, 1, 0, 0, 0, 1354, 1229, 1, 0, 0, 0, 1354, 1234, 1, 0, 0, 0, 1354, 1239, 1, 0, 0, 0, 1354, 1244, 1, 0, 0, 0, 1354, 1249, 1, 0, 0, 0, 1354, 1254, 1, 0, 0, 0, 1354, 1259, 1, 0, 0, 0, 1354, 1264, 1, 0, 0, 0, 1354, 1269, 1, 0, 0, 0, 1354, 1274, 1, 0, 0, 0, 1354, 1279, 1, 0, 0, 0, 1354, 1284, 1, 0, 0, 0, 1354, 1289, 1, 0, 0, 0, 1354, 1294, 1, 0, 0, 0, 1354, 1299, 1, 0, 0, 0, 1354, 1304, 1, 0, 0, 0, 1354, 1309, 1, 0, 0, 0, 1354, 1314, 1, 0, 0, 0, 1354, 1319, 1, 0, 0, 0, 1354, 1324, 1, 0, 0, 0, 1354, 1329, 1, 0, 0, 0, 1354, 1334, 1, 0, 0, 0, 1354, 1339, 1, 0, 0, 0, 1354, 1344, 1, 0, 0, 0, 1354, 1349, 1, 0, 0, 0, 1355, 49, 1, 0, 0, 0, 1356, 1357, 3, 32, 16, 0, 1357, 1358, 5, 0, 0, 1, 1358, 1359, 6, 25, -1, 0, 1359, 51, 1, 0, 0, 0, 44, 59, 67, 75, 77, 84, 94, 104, 109, 119, 129, 131, 144, 150, 152, 167, 169, 190, 192, 225, 227, 246, 253, 262, 281, 297, 299, 312, 314, 327, 329, 346, 348, 357, 365, 370, 384, 394, 407, 410, 417, 425, 429, 432, 1354] \ No newline at end of file +[4, 1, 237, 1369, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 68, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 74, 8, 1, 11, 1, 12, 1, 75, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 82, 8, 1, 11, 1, 12, 1, 83, 3, 1, 86, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 93, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 103, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 113, 8, 3, 1, 3, 1, 3, 1, 3, 3, 3, 118, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 128, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 138, 8, 4, 10, 4, 12, 4, 141, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 153, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 159, 8, 5, 10, 5, 12, 5, 162, 9, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 176, 8, 6, 10, 6, 12, 6, 179, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 199, 8, 7, 10, 7, 12, 7, 202, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 234, 8, 8, 10, 8, 12, 8, 237, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 255, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 260, 8, 9, 10, 9, 12, 9, 263, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 271, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 290, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 306, 8, 11, 10, 11, 12, 11, 309, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 321, 8, 12, 10, 12, 12, 12, 324, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 336, 8, 13, 10, 13, 12, 13, 339, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 355, 8, 14, 10, 14, 12, 14, 358, 9, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 366, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 374, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 379, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 393, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 401, 8, 19, 10, 19, 12, 19, 404, 9, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 414, 8, 20, 10, 20, 12, 20, 417, 9, 20, 3, 20, 419, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 426, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 434, 8, 21, 5, 21, 436, 8, 21, 10, 21, 12, 21, 439, 9, 21, 3, 21, 441, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1363, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 0, 0, 26, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 0, 6, 1, 0, 8, 9, 1, 0, 35, 36, 1, 0, 39, 40, 1, 0, 44, 45, 1, 0, 46, 47, 1, 0, 48, 49, 1591, 0, 67, 1, 0, 0, 0, 2, 85, 1, 0, 0, 0, 4, 87, 1, 0, 0, 0, 6, 117, 1, 0, 0, 0, 8, 119, 1, 0, 0, 0, 10, 144, 1, 0, 0, 0, 12, 165, 1, 0, 0, 0, 14, 180, 1, 0, 0, 0, 16, 203, 1, 0, 0, 0, 18, 238, 1, 0, 0, 0, 20, 289, 1, 0, 0, 0, 22, 291, 1, 0, 0, 0, 24, 310, 1, 0, 0, 0, 26, 325, 1, 0, 0, 0, 28, 340, 1, 0, 0, 0, 30, 359, 1, 0, 0, 0, 32, 378, 1, 0, 0, 0, 34, 380, 1, 0, 0, 0, 36, 392, 1, 0, 0, 0, 38, 394, 1, 0, 0, 0, 40, 418, 1, 0, 0, 0, 42, 440, 1, 0, 0, 0, 44, 442, 1, 0, 0, 0, 46, 448, 1, 0, 0, 0, 48, 1362, 1, 0, 0, 0, 50, 1364, 1, 0, 0, 0, 52, 53, 3, 48, 24, 0, 53, 54, 5, 1, 0, 0, 54, 55, 6, 0, -1, 0, 55, 68, 1, 0, 0, 0, 56, 57, 3, 48, 24, 0, 57, 58, 5, 2, 0, 0, 58, 59, 6, 0, -1, 0, 59, 68, 1, 0, 0, 0, 60, 61, 3, 48, 24, 0, 61, 62, 5, 3, 0, 0, 62, 63, 6, 0, -1, 0, 63, 68, 1, 0, 0, 0, 64, 65, 3, 48, 24, 0, 65, 66, 6, 0, -1, 0, 66, 68, 1, 0, 0, 0, 67, 52, 1, 0, 0, 0, 67, 56, 1, 0, 0, 0, 67, 60, 1, 0, 0, 0, 67, 64, 1, 0, 0, 0, 68, 1, 1, 0, 0, 0, 69, 70, 5, 4, 0, 0, 70, 71, 3, 0, 0, 0, 71, 72, 6, 1, -1, 0, 72, 74, 1, 0, 0, 0, 73, 69, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 86, 1, 0, 0, 0, 77, 78, 5, 4, 0, 0, 78, 79, 3, 6, 3, 0, 79, 80, 6, 1, -1, 0, 80, 82, 1, 0, 0, 0, 81, 77, 1, 0, 0, 0, 82, 83, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 86, 1, 0, 0, 0, 85, 73, 1, 0, 0, 0, 85, 81, 1, 0, 0, 0, 86, 3, 1, 0, 0, 0, 87, 88, 3, 0, 0, 0, 88, 92, 6, 2, -1, 0, 89, 90, 3, 2, 1, 0, 90, 91, 6, 2, -1, 0, 91, 93, 1, 0, 0, 0, 92, 89, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 5, 1, 0, 0, 0, 94, 95, 5, 5, 0, 0, 95, 96, 3, 4, 2, 0, 96, 97, 6, 3, -1, 0, 97, 103, 1, 0, 0, 0, 98, 99, 5, 6, 0, 0, 99, 100, 3, 4, 2, 0, 100, 101, 6, 3, -1, 0, 101, 103, 1, 0, 0, 0, 102, 94, 1, 0, 0, 0, 102, 98, 1, 0, 0, 0, 103, 118, 1, 0, 0, 0, 104, 105, 5, 5, 0, 0, 105, 106, 3, 6, 3, 0, 106, 107, 6, 3, -1, 0, 107, 113, 1, 0, 0, 0, 108, 109, 5, 6, 0, 0, 109, 110, 3, 6, 3, 0, 110, 111, 6, 3, -1, 0, 111, 113, 1, 0, 0, 0, 112, 104, 1, 0, 0, 0, 112, 108, 1, 0, 0, 0, 113, 118, 1, 0, 0, 0, 114, 115, 3, 4, 2, 0, 115, 116, 6, 3, -1, 0, 116, 118, 1, 0, 0, 0, 117, 102, 1, 0, 0, 0, 117, 112, 1, 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, 7, 1, 0, 0, 0, 119, 120, 3, 6, 3, 0, 120, 139, 6, 4, -1, 0, 121, 127, 5, 7, 0, 0, 122, 123, 7, 0, 0, 0, 123, 128, 6, 4, -1, 0, 124, 125, 3, 6, 3, 0, 125, 126, 6, 4, -1, 0, 126, 128, 1, 0, 0, 0, 127, 122, 1, 0, 0, 0, 127, 124, 1, 0, 0, 0, 128, 138, 1, 0, 0, 0, 129, 130, 5, 10, 0, 0, 130, 131, 3, 6, 3, 0, 131, 132, 6, 4, -1, 0, 132, 138, 1, 0, 0, 0, 133, 134, 5, 11, 0, 0, 134, 135, 3, 6, 3, 0, 135, 136, 6, 4, -1, 0, 136, 138, 1, 0, 0, 0, 137, 121, 1, 0, 0, 0, 137, 129, 1, 0, 0, 0, 137, 133, 1, 0, 0, 0, 138, 141, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 142, 1, 0, 0, 0, 141, 139, 1, 0, 0, 0, 142, 143, 6, 4, -1, 0, 143, 9, 1, 0, 0, 0, 144, 145, 3, 8, 4, 0, 145, 160, 6, 5, -1, 0, 146, 152, 5, 6, 0, 0, 147, 148, 7, 0, 0, 0, 148, 153, 6, 5, -1, 0, 149, 150, 3, 8, 4, 0, 150, 151, 6, 5, -1, 0, 151, 153, 1, 0, 0, 0, 152, 147, 1, 0, 0, 0, 152, 149, 1, 0, 0, 0, 153, 159, 1, 0, 0, 0, 154, 155, 5, 5, 0, 0, 155, 156, 3, 8, 4, 0, 156, 157, 6, 5, -1, 0, 157, 159, 1, 0, 0, 0, 158, 146, 1, 0, 0, 0, 158, 154, 1, 0, 0, 0, 159, 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 163, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 164, 6, 5, -1, 0, 164, 11, 1, 0, 0, 0, 165, 166, 3, 10, 5, 0, 166, 177, 6, 6, -1, 0, 167, 168, 5, 12, 0, 0, 168, 169, 3, 10, 5, 0, 169, 170, 6, 6, -1, 0, 170, 176, 1, 0, 0, 0, 171, 172, 5, 13, 0, 0, 172, 173, 3, 10, 5, 0, 173, 174, 6, 6, -1, 0, 174, 176, 1, 0, 0, 0, 175, 167, 1, 0, 0, 0, 175, 171, 1, 0, 0, 0, 176, 179, 1, 0, 0, 0, 177, 175, 1, 0, 0, 0, 177, 178, 1, 0, 0, 0, 178, 13, 1, 0, 0, 0, 179, 177, 1, 0, 0, 0, 180, 181, 3, 12, 6, 0, 181, 200, 6, 7, -1, 0, 182, 183, 5, 14, 0, 0, 183, 184, 3, 12, 6, 0, 184, 185, 6, 7, -1, 0, 185, 199, 1, 0, 0, 0, 186, 187, 5, 15, 0, 0, 187, 188, 3, 12, 6, 0, 188, 189, 6, 7, -1, 0, 189, 199, 1, 0, 0, 0, 190, 191, 5, 16, 0, 0, 191, 192, 3, 12, 6, 0, 192, 193, 6, 7, -1, 0, 193, 199, 1, 0, 0, 0, 194, 195, 5, 17, 0, 0, 195, 196, 3, 12, 6, 0, 196, 197, 6, 7, -1, 0, 197, 199, 1, 0, 0, 0, 198, 182, 1, 0, 0, 0, 198, 186, 1, 0, 0, 0, 198, 190, 1, 0, 0, 0, 198, 194, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 15, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 3, 14, 7, 0, 204, 235, 6, 8, -1, 0, 205, 206, 5, 18, 0, 0, 206, 207, 3, 14, 7, 0, 207, 208, 6, 8, -1, 0, 208, 234, 1, 0, 0, 0, 209, 210, 5, 19, 0, 0, 210, 211, 3, 14, 7, 0, 211, 212, 6, 8, -1, 0, 212, 234, 1, 0, 0, 0, 213, 214, 5, 20, 0, 0, 214, 215, 3, 14, 7, 0, 215, 216, 6, 8, -1, 0, 216, 234, 1, 0, 0, 0, 217, 218, 5, 21, 0, 0, 218, 219, 3, 14, 7, 0, 219, 220, 6, 8, -1, 0, 220, 234, 1, 0, 0, 0, 221, 222, 5, 22, 0, 0, 222, 223, 3, 14, 7, 0, 223, 224, 6, 8, -1, 0, 224, 234, 1, 0, 0, 0, 225, 226, 5, 23, 0, 0, 226, 227, 3, 14, 7, 0, 227, 228, 6, 8, -1, 0, 228, 234, 1, 0, 0, 0, 229, 230, 5, 24, 0, 0, 230, 231, 3, 14, 7, 0, 231, 232, 6, 8, -1, 0, 232, 234, 1, 0, 0, 0, 233, 205, 1, 0, 0, 0, 233, 209, 1, 0, 0, 0, 233, 213, 1, 0, 0, 0, 233, 217, 1, 0, 0, 0, 233, 221, 1, 0, 0, 0, 233, 225, 1, 0, 0, 0, 233, 229, 1, 0, 0, 0, 234, 237, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 17, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 238, 239, 3, 16, 8, 0, 239, 261, 6, 9, -1, 0, 240, 241, 5, 25, 0, 0, 241, 255, 6, 9, -1, 0, 242, 243, 5, 26, 0, 0, 243, 255, 6, 9, -1, 0, 244, 245, 5, 27, 0, 0, 245, 255, 6, 9, -1, 0, 246, 247, 5, 28, 0, 0, 247, 255, 6, 9, -1, 0, 248, 249, 5, 29, 0, 0, 249, 255, 6, 9, -1, 0, 250, 251, 5, 30, 0, 0, 251, 255, 6, 9, -1, 0, 252, 253, 5, 31, 0, 0, 253, 255, 6, 9, -1, 0, 254, 240, 1, 0, 0, 0, 254, 242, 1, 0, 0, 0, 254, 244, 1, 0, 0, 0, 254, 246, 1, 0, 0, 0, 254, 248, 1, 0, 0, 0, 254, 250, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 257, 3, 16, 8, 0, 257, 258, 6, 9, -1, 0, 258, 260, 1, 0, 0, 0, 259, 254, 1, 0, 0, 0, 260, 263, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 270, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 264, 265, 5, 32, 0, 0, 265, 266, 5, 11, 0, 0, 266, 267, 3, 16, 8, 0, 267, 268, 5, 33, 0, 0, 268, 269, 6, 9, -1, 0, 269, 271, 1, 0, 0, 0, 270, 264, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 273, 6, 9, -1, 0, 273, 19, 1, 0, 0, 0, 274, 275, 5, 34, 0, 0, 275, 276, 3, 18, 9, 0, 276, 277, 6, 10, -1, 0, 277, 290, 1, 0, 0, 0, 278, 279, 5, 34, 0, 0, 279, 280, 3, 20, 10, 0, 280, 281, 6, 10, -1, 0, 281, 290, 1, 0, 0, 0, 282, 283, 5, 34, 0, 0, 283, 284, 3, 34, 17, 0, 284, 285, 6, 10, -1, 0, 285, 290, 1, 0, 0, 0, 286, 287, 3, 18, 9, 0, 287, 288, 6, 10, -1, 0, 288, 290, 1, 0, 0, 0, 289, 274, 1, 0, 0, 0, 289, 278, 1, 0, 0, 0, 289, 282, 1, 0, 0, 0, 289, 286, 1, 0, 0, 0, 290, 21, 1, 0, 0, 0, 291, 292, 3, 20, 10, 0, 292, 307, 6, 11, -1, 0, 293, 294, 5, 35, 0, 0, 294, 295, 3, 20, 10, 0, 295, 296, 6, 11, -1, 0, 296, 306, 1, 0, 0, 0, 297, 298, 5, 36, 0, 0, 298, 299, 3, 20, 10, 0, 299, 300, 6, 11, -1, 0, 300, 306, 1, 0, 0, 0, 301, 302, 7, 1, 0, 0, 302, 303, 3, 34, 17, 0, 303, 304, 6, 11, -1, 0, 304, 306, 1, 0, 0, 0, 305, 293, 1, 0, 0, 0, 305, 297, 1, 0, 0, 0, 305, 301, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 23, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 311, 3, 22, 11, 0, 311, 322, 6, 12, -1, 0, 312, 313, 5, 37, 0, 0, 313, 314, 3, 22, 11, 0, 314, 315, 6, 12, -1, 0, 315, 321, 1, 0, 0, 0, 316, 317, 5, 37, 0, 0, 317, 318, 3, 34, 17, 0, 318, 319, 6, 12, -1, 0, 319, 321, 1, 0, 0, 0, 320, 312, 1, 0, 0, 0, 320, 316, 1, 0, 0, 0, 321, 324, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 25, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 325, 326, 3, 24, 12, 0, 326, 337, 6, 13, -1, 0, 327, 328, 5, 38, 0, 0, 328, 329, 3, 24, 12, 0, 329, 330, 6, 13, -1, 0, 330, 336, 1, 0, 0, 0, 331, 332, 5, 38, 0, 0, 332, 333, 3, 34, 17, 0, 333, 334, 6, 13, -1, 0, 334, 336, 1, 0, 0, 0, 335, 327, 1, 0, 0, 0, 335, 331, 1, 0, 0, 0, 336, 339, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 27, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, 341, 3, 26, 13, 0, 341, 356, 6, 14, -1, 0, 342, 343, 5, 39, 0, 0, 343, 344, 3, 26, 13, 0, 344, 345, 6, 14, -1, 0, 345, 355, 1, 0, 0, 0, 346, 347, 5, 40, 0, 0, 347, 348, 3, 26, 13, 0, 348, 349, 6, 14, -1, 0, 349, 355, 1, 0, 0, 0, 350, 351, 7, 2, 0, 0, 351, 352, 3, 34, 17, 0, 352, 353, 6, 14, -1, 0, 353, 355, 1, 0, 0, 0, 354, 342, 1, 0, 0, 0, 354, 346, 1, 0, 0, 0, 354, 350, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 29, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 359, 360, 3, 28, 14, 0, 360, 365, 6, 15, -1, 0, 361, 362, 5, 41, 0, 0, 362, 363, 3, 30, 15, 0, 363, 364, 6, 15, -1, 0, 364, 366, 1, 0, 0, 0, 365, 361, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 31, 1, 0, 0, 0, 367, 368, 3, 30, 15, 0, 368, 373, 6, 16, -1, 0, 369, 370, 5, 42, 0, 0, 370, 371, 3, 32, 16, 0, 371, 372, 6, 16, -1, 0, 372, 374, 1, 0, 0, 0, 373, 369, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 379, 1, 0, 0, 0, 375, 376, 3, 34, 17, 0, 376, 377, 6, 16, -1, 0, 377, 379, 1, 0, 0, 0, 378, 367, 1, 0, 0, 0, 378, 375, 1, 0, 0, 0, 379, 33, 1, 0, 0, 0, 380, 381, 3, 36, 18, 0, 381, 382, 3, 38, 19, 0, 382, 383, 5, 43, 0, 0, 383, 384, 3, 32, 16, 0, 384, 385, 6, 17, -1, 0, 385, 35, 1, 0, 0, 0, 386, 387, 7, 3, 0, 0, 387, 393, 6, 18, -1, 0, 388, 389, 7, 4, 0, 0, 389, 393, 6, 18, -1, 0, 390, 391, 7, 5, 0, 0, 391, 393, 6, 18, -1, 0, 392, 386, 1, 0, 0, 0, 392, 388, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 393, 37, 1, 0, 0, 0, 394, 395, 3, 16, 8, 0, 395, 402, 6, 19, -1, 0, 396, 397, 5, 50, 0, 0, 397, 398, 3, 16, 8, 0, 398, 399, 6, 19, -1, 0, 399, 401, 1, 0, 0, 0, 400, 396, 1, 0, 0, 0, 401, 404, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 405, 1, 0, 0, 0, 404, 402, 1, 0, 0, 0, 405, 406, 6, 19, -1, 0, 406, 39, 1, 0, 0, 0, 407, 408, 3, 32, 16, 0, 408, 415, 6, 20, -1, 0, 409, 410, 5, 50, 0, 0, 410, 411, 3, 32, 16, 0, 411, 412, 6, 20, -1, 0, 412, 414, 1, 0, 0, 0, 413, 409, 1, 0, 0, 0, 414, 417, 1, 0, 0, 0, 415, 413, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 419, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 418, 407, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 41, 1, 0, 0, 0, 420, 421, 3, 32, 16, 0, 421, 422, 6, 21, -1, 0, 422, 426, 1, 0, 0, 0, 423, 424, 7, 0, 0, 0, 424, 426, 6, 21, -1, 0, 425, 420, 1, 0, 0, 0, 425, 423, 1, 0, 0, 0, 426, 437, 1, 0, 0, 0, 427, 433, 5, 50, 0, 0, 428, 429, 3, 32, 16, 0, 429, 430, 6, 21, -1, 0, 430, 434, 1, 0, 0, 0, 431, 432, 7, 0, 0, 0, 432, 434, 6, 21, -1, 0, 433, 428, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 434, 436, 1, 0, 0, 0, 435, 427, 1, 0, 0, 0, 436, 439, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 441, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 440, 425, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 43, 1, 0, 0, 0, 442, 443, 3, 32, 16, 0, 443, 444, 6, 22, -1, 0, 444, 445, 5, 51, 0, 0, 445, 446, 3, 32, 16, 0, 446, 447, 6, 22, -1, 0, 447, 45, 1, 0, 0, 0, 448, 449, 3, 32, 16, 0, 449, 450, 6, 23, -1, 0, 450, 451, 5, 43, 0, 0, 451, 452, 3, 32, 16, 0, 452, 453, 6, 23, -1, 0, 453, 47, 1, 0, 0, 0, 454, 455, 5, 52, 0, 0, 455, 1363, 6, 24, -1, 0, 456, 457, 5, 53, 0, 0, 457, 1363, 6, 24, -1, 0, 458, 459, 5, 234, 0, 0, 459, 1363, 6, 24, -1, 0, 460, 461, 5, 231, 0, 0, 461, 1363, 6, 24, -1, 0, 462, 463, 5, 233, 0, 0, 463, 1363, 6, 24, -1, 0, 464, 465, 5, 232, 0, 0, 465, 1363, 6, 24, -1, 0, 466, 467, 5, 235, 0, 0, 467, 1363, 6, 24, -1, 0, 468, 469, 5, 54, 0, 0, 469, 470, 3, 32, 16, 0, 470, 471, 5, 55, 0, 0, 471, 472, 6, 24, -1, 0, 472, 1363, 1, 0, 0, 0, 473, 474, 5, 56, 0, 0, 474, 475, 3, 48, 24, 0, 475, 476, 6, 24, -1, 0, 476, 1363, 1, 0, 0, 0, 477, 478, 5, 57, 0, 0, 478, 479, 3, 40, 20, 0, 479, 480, 5, 58, 0, 0, 480, 481, 6, 24, -1, 0, 481, 1363, 1, 0, 0, 0, 482, 483, 5, 57, 0, 0, 483, 484, 3, 40, 20, 0, 484, 485, 5, 59, 0, 0, 485, 486, 6, 24, -1, 0, 486, 1363, 1, 0, 0, 0, 487, 488, 5, 32, 0, 0, 488, 489, 3, 44, 22, 0, 489, 490, 5, 33, 0, 0, 490, 491, 6, 24, -1, 0, 491, 1363, 1, 0, 0, 0, 492, 493, 5, 57, 0, 0, 493, 494, 3, 44, 22, 0, 494, 495, 5, 33, 0, 0, 495, 496, 6, 24, -1, 0, 496, 1363, 1, 0, 0, 0, 497, 498, 5, 57, 0, 0, 498, 499, 3, 44, 22, 0, 499, 500, 5, 59, 0, 0, 500, 501, 6, 24, -1, 0, 501, 1363, 1, 0, 0, 0, 502, 503, 5, 32, 0, 0, 503, 504, 3, 44, 22, 0, 504, 505, 5, 59, 0, 0, 505, 506, 6, 24, -1, 0, 506, 1363, 1, 0, 0, 0, 507, 508, 5, 32, 0, 0, 508, 509, 3, 32, 16, 0, 509, 510, 5, 33, 0, 0, 510, 511, 6, 24, -1, 0, 511, 1363, 1, 0, 0, 0, 512, 513, 5, 60, 0, 0, 513, 514, 3, 46, 23, 0, 514, 515, 5, 61, 0, 0, 515, 516, 6, 24, -1, 0, 516, 1363, 1, 0, 0, 0, 517, 518, 5, 60, 0, 0, 518, 519, 3, 42, 21, 0, 519, 520, 5, 61, 0, 0, 520, 521, 6, 24, -1, 0, 521, 1363, 1, 0, 0, 0, 522, 523, 5, 62, 0, 0, 523, 524, 3, 40, 20, 0, 524, 525, 5, 33, 0, 0, 525, 526, 6, 24, -1, 0, 526, 1363, 1, 0, 0, 0, 527, 528, 5, 63, 0, 0, 528, 529, 3, 40, 20, 0, 529, 530, 5, 33, 0, 0, 530, 531, 6, 24, -1, 0, 531, 1363, 1, 0, 0, 0, 532, 533, 5, 64, 0, 0, 533, 534, 3, 40, 20, 0, 534, 535, 5, 33, 0, 0, 535, 536, 6, 24, -1, 0, 536, 1363, 1, 0, 0, 0, 537, 538, 5, 65, 0, 0, 538, 539, 3, 40, 20, 0, 539, 540, 5, 33, 0, 0, 540, 541, 6, 24, -1, 0, 541, 1363, 1, 0, 0, 0, 542, 543, 5, 66, 0, 0, 543, 544, 3, 40, 20, 0, 544, 545, 5, 33, 0, 0, 545, 546, 6, 24, -1, 0, 546, 1363, 1, 0, 0, 0, 547, 548, 5, 67, 0, 0, 548, 549, 3, 40, 20, 0, 549, 550, 5, 33, 0, 0, 550, 551, 6, 24, -1, 0, 551, 1363, 1, 0, 0, 0, 552, 553, 5, 68, 0, 0, 553, 554, 3, 40, 20, 0, 554, 555, 5, 33, 0, 0, 555, 556, 6, 24, -1, 0, 556, 1363, 1, 0, 0, 0, 557, 558, 5, 69, 0, 0, 558, 559, 3, 40, 20, 0, 559, 560, 5, 33, 0, 0, 560, 561, 6, 24, -1, 0, 561, 1363, 1, 0, 0, 0, 562, 563, 5, 70, 0, 0, 563, 564, 3, 40, 20, 0, 564, 565, 5, 33, 0, 0, 565, 566, 6, 24, -1, 0, 566, 1363, 1, 0, 0, 0, 567, 568, 5, 71, 0, 0, 568, 569, 3, 40, 20, 0, 569, 570, 5, 33, 0, 0, 570, 571, 6, 24, -1, 0, 571, 1363, 1, 0, 0, 0, 572, 573, 5, 72, 0, 0, 573, 574, 3, 40, 20, 0, 574, 575, 5, 33, 0, 0, 575, 576, 6, 24, -1, 0, 576, 1363, 1, 0, 0, 0, 577, 578, 5, 73, 0, 0, 578, 579, 3, 40, 20, 0, 579, 580, 5, 33, 0, 0, 580, 581, 6, 24, -1, 0, 581, 1363, 1, 0, 0, 0, 582, 583, 5, 74, 0, 0, 583, 584, 3, 40, 20, 0, 584, 585, 5, 33, 0, 0, 585, 586, 6, 24, -1, 0, 586, 1363, 1, 0, 0, 0, 587, 588, 5, 75, 0, 0, 588, 589, 3, 40, 20, 0, 589, 590, 5, 33, 0, 0, 590, 591, 6, 24, -1, 0, 591, 1363, 1, 0, 0, 0, 592, 593, 5, 76, 0, 0, 593, 594, 3, 40, 20, 0, 594, 595, 5, 33, 0, 0, 595, 596, 6, 24, -1, 0, 596, 1363, 1, 0, 0, 0, 597, 598, 5, 77, 0, 0, 598, 599, 3, 40, 20, 0, 599, 600, 5, 33, 0, 0, 600, 601, 6, 24, -1, 0, 601, 1363, 1, 0, 0, 0, 602, 603, 5, 78, 0, 0, 603, 604, 3, 40, 20, 0, 604, 605, 5, 33, 0, 0, 605, 606, 6, 24, -1, 0, 606, 1363, 1, 0, 0, 0, 607, 608, 5, 79, 0, 0, 608, 609, 3, 40, 20, 0, 609, 610, 5, 33, 0, 0, 610, 611, 6, 24, -1, 0, 611, 1363, 1, 0, 0, 0, 612, 613, 5, 80, 0, 0, 613, 614, 3, 40, 20, 0, 614, 615, 5, 33, 0, 0, 615, 616, 6, 24, -1, 0, 616, 1363, 1, 0, 0, 0, 617, 618, 5, 81, 0, 0, 618, 619, 3, 40, 20, 0, 619, 620, 5, 33, 0, 0, 620, 621, 6, 24, -1, 0, 621, 1363, 1, 0, 0, 0, 622, 623, 5, 82, 0, 0, 623, 624, 3, 40, 20, 0, 624, 625, 5, 33, 0, 0, 625, 626, 6, 24, -1, 0, 626, 1363, 1, 0, 0, 0, 627, 628, 5, 83, 0, 0, 628, 629, 3, 40, 20, 0, 629, 630, 5, 33, 0, 0, 630, 631, 6, 24, -1, 0, 631, 1363, 1, 0, 0, 0, 632, 633, 5, 84, 0, 0, 633, 634, 3, 40, 20, 0, 634, 635, 5, 33, 0, 0, 635, 636, 6, 24, -1, 0, 636, 1363, 1, 0, 0, 0, 637, 638, 5, 85, 0, 0, 638, 639, 3, 40, 20, 0, 639, 640, 5, 33, 0, 0, 640, 641, 6, 24, -1, 0, 641, 1363, 1, 0, 0, 0, 642, 643, 5, 86, 0, 0, 643, 644, 3, 40, 20, 0, 644, 645, 5, 33, 0, 0, 645, 646, 6, 24, -1, 0, 646, 1363, 1, 0, 0, 0, 647, 648, 5, 87, 0, 0, 648, 649, 3, 40, 20, 0, 649, 650, 5, 33, 0, 0, 650, 651, 6, 24, -1, 0, 651, 1363, 1, 0, 0, 0, 652, 653, 5, 88, 0, 0, 653, 654, 3, 40, 20, 0, 654, 655, 5, 33, 0, 0, 655, 656, 6, 24, -1, 0, 656, 1363, 1, 0, 0, 0, 657, 658, 5, 89, 0, 0, 658, 659, 3, 40, 20, 0, 659, 660, 5, 33, 0, 0, 660, 661, 6, 24, -1, 0, 661, 1363, 1, 0, 0, 0, 662, 663, 5, 90, 0, 0, 663, 664, 3, 40, 20, 0, 664, 665, 5, 33, 0, 0, 665, 666, 6, 24, -1, 0, 666, 1363, 1, 0, 0, 0, 667, 668, 5, 91, 0, 0, 668, 669, 3, 40, 20, 0, 669, 670, 5, 33, 0, 0, 670, 671, 6, 24, -1, 0, 671, 1363, 1, 0, 0, 0, 672, 673, 5, 92, 0, 0, 673, 674, 3, 40, 20, 0, 674, 675, 5, 33, 0, 0, 675, 676, 6, 24, -1, 0, 676, 1363, 1, 0, 0, 0, 677, 678, 5, 93, 0, 0, 678, 679, 3, 40, 20, 0, 679, 680, 5, 33, 0, 0, 680, 681, 6, 24, -1, 0, 681, 1363, 1, 0, 0, 0, 682, 683, 5, 94, 0, 0, 683, 684, 3, 40, 20, 0, 684, 685, 5, 33, 0, 0, 685, 686, 6, 24, -1, 0, 686, 1363, 1, 0, 0, 0, 687, 688, 5, 95, 0, 0, 688, 689, 3, 40, 20, 0, 689, 690, 5, 33, 0, 0, 690, 691, 6, 24, -1, 0, 691, 1363, 1, 0, 0, 0, 692, 693, 5, 96, 0, 0, 693, 694, 3, 40, 20, 0, 694, 695, 5, 33, 0, 0, 695, 696, 6, 24, -1, 0, 696, 1363, 1, 0, 0, 0, 697, 698, 5, 97, 0, 0, 698, 699, 3, 40, 20, 0, 699, 700, 5, 33, 0, 0, 700, 701, 6, 24, -1, 0, 701, 1363, 1, 0, 0, 0, 702, 703, 5, 98, 0, 0, 703, 704, 3, 40, 20, 0, 704, 705, 5, 33, 0, 0, 705, 706, 6, 24, -1, 0, 706, 1363, 1, 0, 0, 0, 707, 708, 5, 99, 0, 0, 708, 709, 3, 40, 20, 0, 709, 710, 5, 33, 0, 0, 710, 711, 6, 24, -1, 0, 711, 1363, 1, 0, 0, 0, 712, 713, 5, 100, 0, 0, 713, 714, 3, 40, 20, 0, 714, 715, 5, 33, 0, 0, 715, 716, 6, 24, -1, 0, 716, 1363, 1, 0, 0, 0, 717, 718, 5, 101, 0, 0, 718, 719, 3, 40, 20, 0, 719, 720, 5, 33, 0, 0, 720, 721, 6, 24, -1, 0, 721, 1363, 1, 0, 0, 0, 722, 723, 5, 102, 0, 0, 723, 724, 3, 40, 20, 0, 724, 725, 5, 33, 0, 0, 725, 726, 6, 24, -1, 0, 726, 1363, 1, 0, 0, 0, 727, 728, 5, 103, 0, 0, 728, 729, 3, 40, 20, 0, 729, 730, 5, 33, 0, 0, 730, 731, 6, 24, -1, 0, 731, 1363, 1, 0, 0, 0, 732, 733, 5, 104, 0, 0, 733, 734, 3, 40, 20, 0, 734, 735, 5, 33, 0, 0, 735, 736, 6, 24, -1, 0, 736, 1363, 1, 0, 0, 0, 737, 738, 5, 105, 0, 0, 738, 739, 3, 40, 20, 0, 739, 740, 5, 33, 0, 0, 740, 741, 6, 24, -1, 0, 741, 1363, 1, 0, 0, 0, 742, 743, 5, 106, 0, 0, 743, 744, 3, 40, 20, 0, 744, 745, 5, 33, 0, 0, 745, 746, 6, 24, -1, 0, 746, 1363, 1, 0, 0, 0, 747, 748, 5, 107, 0, 0, 748, 749, 3, 40, 20, 0, 749, 750, 5, 33, 0, 0, 750, 751, 6, 24, -1, 0, 751, 1363, 1, 0, 0, 0, 752, 753, 5, 108, 0, 0, 753, 754, 3, 40, 20, 0, 754, 755, 5, 33, 0, 0, 755, 756, 6, 24, -1, 0, 756, 1363, 1, 0, 0, 0, 757, 758, 5, 109, 0, 0, 758, 759, 3, 40, 20, 0, 759, 760, 5, 33, 0, 0, 760, 761, 6, 24, -1, 0, 761, 1363, 1, 0, 0, 0, 762, 763, 5, 110, 0, 0, 763, 764, 3, 40, 20, 0, 764, 765, 5, 33, 0, 0, 765, 766, 6, 24, -1, 0, 766, 1363, 1, 0, 0, 0, 767, 768, 5, 111, 0, 0, 768, 769, 3, 40, 20, 0, 769, 770, 5, 33, 0, 0, 770, 771, 6, 24, -1, 0, 771, 1363, 1, 0, 0, 0, 772, 773, 5, 112, 0, 0, 773, 774, 3, 40, 20, 0, 774, 775, 5, 33, 0, 0, 775, 776, 6, 24, -1, 0, 776, 1363, 1, 0, 0, 0, 777, 778, 5, 113, 0, 0, 778, 779, 3, 40, 20, 0, 779, 780, 5, 33, 0, 0, 780, 781, 6, 24, -1, 0, 781, 1363, 1, 0, 0, 0, 782, 783, 5, 114, 0, 0, 783, 784, 3, 40, 20, 0, 784, 785, 5, 33, 0, 0, 785, 786, 6, 24, -1, 0, 786, 1363, 1, 0, 0, 0, 787, 788, 5, 115, 0, 0, 788, 789, 3, 40, 20, 0, 789, 790, 5, 33, 0, 0, 790, 791, 6, 24, -1, 0, 791, 1363, 1, 0, 0, 0, 792, 793, 5, 116, 0, 0, 793, 794, 3, 40, 20, 0, 794, 795, 5, 33, 0, 0, 795, 796, 6, 24, -1, 0, 796, 1363, 1, 0, 0, 0, 797, 798, 5, 117, 0, 0, 798, 799, 3, 40, 20, 0, 799, 800, 5, 33, 0, 0, 800, 801, 6, 24, -1, 0, 801, 1363, 1, 0, 0, 0, 802, 803, 5, 118, 0, 0, 803, 804, 3, 40, 20, 0, 804, 805, 5, 33, 0, 0, 805, 806, 6, 24, -1, 0, 806, 1363, 1, 0, 0, 0, 807, 808, 5, 119, 0, 0, 808, 809, 3, 40, 20, 0, 809, 810, 5, 33, 0, 0, 810, 811, 6, 24, -1, 0, 811, 1363, 1, 0, 0, 0, 812, 813, 5, 120, 0, 0, 813, 814, 3, 40, 20, 0, 814, 815, 5, 33, 0, 0, 815, 816, 6, 24, -1, 0, 816, 1363, 1, 0, 0, 0, 817, 818, 5, 121, 0, 0, 818, 819, 3, 40, 20, 0, 819, 820, 5, 33, 0, 0, 820, 821, 6, 24, -1, 0, 821, 1363, 1, 0, 0, 0, 822, 823, 5, 122, 0, 0, 823, 824, 3, 40, 20, 0, 824, 825, 5, 33, 0, 0, 825, 826, 6, 24, -1, 0, 826, 1363, 1, 0, 0, 0, 827, 828, 5, 123, 0, 0, 828, 829, 3, 40, 20, 0, 829, 830, 5, 33, 0, 0, 830, 831, 6, 24, -1, 0, 831, 1363, 1, 0, 0, 0, 832, 833, 5, 124, 0, 0, 833, 834, 3, 40, 20, 0, 834, 835, 5, 33, 0, 0, 835, 836, 6, 24, -1, 0, 836, 1363, 1, 0, 0, 0, 837, 838, 5, 125, 0, 0, 838, 839, 3, 40, 20, 0, 839, 840, 5, 33, 0, 0, 840, 841, 6, 24, -1, 0, 841, 1363, 1, 0, 0, 0, 842, 843, 5, 126, 0, 0, 843, 844, 3, 40, 20, 0, 844, 845, 5, 33, 0, 0, 845, 846, 6, 24, -1, 0, 846, 1363, 1, 0, 0, 0, 847, 848, 5, 127, 0, 0, 848, 849, 3, 40, 20, 0, 849, 850, 5, 33, 0, 0, 850, 851, 6, 24, -1, 0, 851, 1363, 1, 0, 0, 0, 852, 853, 5, 128, 0, 0, 853, 854, 3, 40, 20, 0, 854, 855, 5, 33, 0, 0, 855, 856, 6, 24, -1, 0, 856, 1363, 1, 0, 0, 0, 857, 858, 5, 129, 0, 0, 858, 859, 3, 40, 20, 0, 859, 860, 5, 33, 0, 0, 860, 861, 6, 24, -1, 0, 861, 1363, 1, 0, 0, 0, 862, 863, 5, 130, 0, 0, 863, 864, 3, 40, 20, 0, 864, 865, 5, 33, 0, 0, 865, 866, 6, 24, -1, 0, 866, 1363, 1, 0, 0, 0, 867, 868, 5, 131, 0, 0, 868, 869, 3, 40, 20, 0, 869, 870, 5, 33, 0, 0, 870, 871, 6, 24, -1, 0, 871, 1363, 1, 0, 0, 0, 872, 873, 5, 132, 0, 0, 873, 874, 3, 40, 20, 0, 874, 875, 5, 33, 0, 0, 875, 876, 6, 24, -1, 0, 876, 1363, 1, 0, 0, 0, 877, 878, 5, 133, 0, 0, 878, 879, 3, 40, 20, 0, 879, 880, 5, 33, 0, 0, 880, 881, 6, 24, -1, 0, 881, 1363, 1, 0, 0, 0, 882, 883, 5, 134, 0, 0, 883, 884, 3, 40, 20, 0, 884, 885, 5, 33, 0, 0, 885, 886, 6, 24, -1, 0, 886, 1363, 1, 0, 0, 0, 887, 888, 5, 135, 0, 0, 888, 889, 3, 40, 20, 0, 889, 890, 5, 33, 0, 0, 890, 891, 6, 24, -1, 0, 891, 1363, 1, 0, 0, 0, 892, 893, 5, 136, 0, 0, 893, 894, 3, 40, 20, 0, 894, 895, 5, 33, 0, 0, 895, 896, 6, 24, -1, 0, 896, 1363, 1, 0, 0, 0, 897, 898, 5, 137, 0, 0, 898, 899, 3, 40, 20, 0, 899, 900, 5, 33, 0, 0, 900, 901, 6, 24, -1, 0, 901, 1363, 1, 0, 0, 0, 902, 903, 5, 138, 0, 0, 903, 904, 3, 40, 20, 0, 904, 905, 5, 33, 0, 0, 905, 906, 6, 24, -1, 0, 906, 1363, 1, 0, 0, 0, 907, 908, 5, 139, 0, 0, 908, 909, 3, 40, 20, 0, 909, 910, 5, 33, 0, 0, 910, 911, 6, 24, -1, 0, 911, 1363, 1, 0, 0, 0, 912, 913, 5, 140, 0, 0, 913, 914, 3, 40, 20, 0, 914, 915, 5, 33, 0, 0, 915, 916, 6, 24, -1, 0, 916, 1363, 1, 0, 0, 0, 917, 918, 5, 141, 0, 0, 918, 919, 3, 40, 20, 0, 919, 920, 5, 33, 0, 0, 920, 921, 6, 24, -1, 0, 921, 1363, 1, 0, 0, 0, 922, 923, 5, 142, 0, 0, 923, 924, 3, 40, 20, 0, 924, 925, 5, 33, 0, 0, 925, 926, 6, 24, -1, 0, 926, 1363, 1, 0, 0, 0, 927, 928, 5, 143, 0, 0, 928, 929, 3, 40, 20, 0, 929, 930, 5, 33, 0, 0, 930, 931, 6, 24, -1, 0, 931, 1363, 1, 0, 0, 0, 932, 933, 5, 144, 0, 0, 933, 934, 3, 40, 20, 0, 934, 935, 5, 33, 0, 0, 935, 936, 6, 24, -1, 0, 936, 1363, 1, 0, 0, 0, 937, 938, 5, 145, 0, 0, 938, 939, 3, 40, 20, 0, 939, 940, 5, 33, 0, 0, 940, 941, 6, 24, -1, 0, 941, 1363, 1, 0, 0, 0, 942, 943, 5, 146, 0, 0, 943, 944, 3, 40, 20, 0, 944, 945, 5, 33, 0, 0, 945, 946, 6, 24, -1, 0, 946, 1363, 1, 0, 0, 0, 947, 948, 5, 147, 0, 0, 948, 949, 3, 40, 20, 0, 949, 950, 5, 33, 0, 0, 950, 951, 6, 24, -1, 0, 951, 1363, 1, 0, 0, 0, 952, 953, 5, 148, 0, 0, 953, 954, 3, 40, 20, 0, 954, 955, 5, 33, 0, 0, 955, 956, 6, 24, -1, 0, 956, 1363, 1, 0, 0, 0, 957, 958, 5, 149, 0, 0, 958, 959, 3, 40, 20, 0, 959, 960, 5, 33, 0, 0, 960, 961, 6, 24, -1, 0, 961, 1363, 1, 0, 0, 0, 962, 963, 5, 150, 0, 0, 963, 964, 3, 40, 20, 0, 964, 965, 5, 33, 0, 0, 965, 966, 6, 24, -1, 0, 966, 1363, 1, 0, 0, 0, 967, 968, 5, 151, 0, 0, 968, 969, 3, 40, 20, 0, 969, 970, 5, 33, 0, 0, 970, 971, 6, 24, -1, 0, 971, 1363, 1, 0, 0, 0, 972, 973, 5, 152, 0, 0, 973, 974, 3, 40, 20, 0, 974, 975, 5, 33, 0, 0, 975, 976, 6, 24, -1, 0, 976, 1363, 1, 0, 0, 0, 977, 978, 5, 153, 0, 0, 978, 979, 3, 40, 20, 0, 979, 980, 5, 33, 0, 0, 980, 981, 6, 24, -1, 0, 981, 1363, 1, 0, 0, 0, 982, 983, 5, 154, 0, 0, 983, 984, 3, 40, 20, 0, 984, 985, 5, 33, 0, 0, 985, 986, 6, 24, -1, 0, 986, 1363, 1, 0, 0, 0, 987, 988, 5, 155, 0, 0, 988, 989, 3, 40, 20, 0, 989, 990, 5, 33, 0, 0, 990, 991, 6, 24, -1, 0, 991, 1363, 1, 0, 0, 0, 992, 993, 5, 156, 0, 0, 993, 994, 3, 40, 20, 0, 994, 995, 5, 33, 0, 0, 995, 996, 6, 24, -1, 0, 996, 1363, 1, 0, 0, 0, 997, 998, 5, 157, 0, 0, 998, 999, 3, 40, 20, 0, 999, 1000, 5, 33, 0, 0, 1000, 1001, 6, 24, -1, 0, 1001, 1363, 1, 0, 0, 0, 1002, 1003, 5, 158, 0, 0, 1003, 1004, 3, 40, 20, 0, 1004, 1005, 5, 33, 0, 0, 1005, 1006, 6, 24, -1, 0, 1006, 1363, 1, 0, 0, 0, 1007, 1008, 5, 159, 0, 0, 1008, 1009, 3, 40, 20, 0, 1009, 1010, 5, 33, 0, 0, 1010, 1011, 6, 24, -1, 0, 1011, 1363, 1, 0, 0, 0, 1012, 1013, 5, 160, 0, 0, 1013, 1014, 3, 40, 20, 0, 1014, 1015, 5, 33, 0, 0, 1015, 1016, 6, 24, -1, 0, 1016, 1363, 1, 0, 0, 0, 1017, 1018, 5, 161, 0, 0, 1018, 1019, 3, 40, 20, 0, 1019, 1020, 5, 33, 0, 0, 1020, 1021, 6, 24, -1, 0, 1021, 1363, 1, 0, 0, 0, 1022, 1023, 5, 162, 0, 0, 1023, 1024, 3, 40, 20, 0, 1024, 1025, 5, 33, 0, 0, 1025, 1026, 6, 24, -1, 0, 1026, 1363, 1, 0, 0, 0, 1027, 1028, 5, 163, 0, 0, 1028, 1029, 3, 40, 20, 0, 1029, 1030, 5, 33, 0, 0, 1030, 1031, 6, 24, -1, 0, 1031, 1363, 1, 0, 0, 0, 1032, 1033, 5, 164, 0, 0, 1033, 1034, 3, 40, 20, 0, 1034, 1035, 5, 33, 0, 0, 1035, 1036, 6, 24, -1, 0, 1036, 1363, 1, 0, 0, 0, 1037, 1038, 5, 165, 0, 0, 1038, 1039, 3, 40, 20, 0, 1039, 1040, 5, 33, 0, 0, 1040, 1041, 6, 24, -1, 0, 1041, 1363, 1, 0, 0, 0, 1042, 1043, 5, 166, 0, 0, 1043, 1044, 3, 40, 20, 0, 1044, 1045, 5, 33, 0, 0, 1045, 1046, 6, 24, -1, 0, 1046, 1363, 1, 0, 0, 0, 1047, 1048, 5, 167, 0, 0, 1048, 1049, 3, 40, 20, 0, 1049, 1050, 5, 33, 0, 0, 1050, 1051, 6, 24, -1, 0, 1051, 1363, 1, 0, 0, 0, 1052, 1053, 5, 168, 0, 0, 1053, 1054, 3, 40, 20, 0, 1054, 1055, 5, 33, 0, 0, 1055, 1056, 6, 24, -1, 0, 1056, 1363, 1, 0, 0, 0, 1057, 1058, 5, 169, 0, 0, 1058, 1059, 3, 40, 20, 0, 1059, 1060, 5, 33, 0, 0, 1060, 1061, 6, 24, -1, 0, 1061, 1363, 1, 0, 0, 0, 1062, 1063, 5, 170, 0, 0, 1063, 1064, 3, 40, 20, 0, 1064, 1065, 5, 33, 0, 0, 1065, 1066, 6, 24, -1, 0, 1066, 1363, 1, 0, 0, 0, 1067, 1068, 5, 171, 0, 0, 1068, 1069, 3, 40, 20, 0, 1069, 1070, 5, 33, 0, 0, 1070, 1071, 6, 24, -1, 0, 1071, 1363, 1, 0, 0, 0, 1072, 1073, 5, 172, 0, 0, 1073, 1074, 3, 40, 20, 0, 1074, 1075, 5, 33, 0, 0, 1075, 1076, 6, 24, -1, 0, 1076, 1363, 1, 0, 0, 0, 1077, 1078, 5, 173, 0, 0, 1078, 1079, 3, 40, 20, 0, 1079, 1080, 5, 33, 0, 0, 1080, 1081, 6, 24, -1, 0, 1081, 1363, 1, 0, 0, 0, 1082, 1083, 5, 174, 0, 0, 1083, 1084, 3, 40, 20, 0, 1084, 1085, 5, 33, 0, 0, 1085, 1086, 6, 24, -1, 0, 1086, 1363, 1, 0, 0, 0, 1087, 1088, 5, 175, 0, 0, 1088, 1089, 3, 40, 20, 0, 1089, 1090, 5, 33, 0, 0, 1090, 1091, 6, 24, -1, 0, 1091, 1363, 1, 0, 0, 0, 1092, 1093, 5, 176, 0, 0, 1093, 1094, 3, 40, 20, 0, 1094, 1095, 5, 33, 0, 0, 1095, 1096, 6, 24, -1, 0, 1096, 1363, 1, 0, 0, 0, 1097, 1098, 5, 177, 0, 0, 1098, 1099, 3, 40, 20, 0, 1099, 1100, 5, 33, 0, 0, 1100, 1101, 6, 24, -1, 0, 1101, 1363, 1, 0, 0, 0, 1102, 1103, 5, 178, 0, 0, 1103, 1104, 3, 40, 20, 0, 1104, 1105, 5, 33, 0, 0, 1105, 1106, 6, 24, -1, 0, 1106, 1363, 1, 0, 0, 0, 1107, 1108, 5, 179, 0, 0, 1108, 1109, 3, 40, 20, 0, 1109, 1110, 5, 33, 0, 0, 1110, 1111, 6, 24, -1, 0, 1111, 1363, 1, 0, 0, 0, 1112, 1113, 5, 180, 0, 0, 1113, 1114, 3, 40, 20, 0, 1114, 1115, 5, 33, 0, 0, 1115, 1116, 6, 24, -1, 0, 1116, 1363, 1, 0, 0, 0, 1117, 1118, 5, 181, 0, 0, 1118, 1119, 3, 40, 20, 0, 1119, 1120, 5, 33, 0, 0, 1120, 1121, 6, 24, -1, 0, 1121, 1363, 1, 0, 0, 0, 1122, 1123, 5, 182, 0, 0, 1123, 1124, 3, 40, 20, 0, 1124, 1125, 5, 33, 0, 0, 1125, 1126, 6, 24, -1, 0, 1126, 1363, 1, 0, 0, 0, 1127, 1128, 5, 183, 0, 0, 1128, 1129, 3, 40, 20, 0, 1129, 1130, 5, 33, 0, 0, 1130, 1131, 6, 24, -1, 0, 1131, 1363, 1, 0, 0, 0, 1132, 1133, 5, 184, 0, 0, 1133, 1134, 3, 40, 20, 0, 1134, 1135, 5, 33, 0, 0, 1135, 1136, 6, 24, -1, 0, 1136, 1363, 1, 0, 0, 0, 1137, 1138, 5, 185, 0, 0, 1138, 1139, 3, 40, 20, 0, 1139, 1140, 5, 33, 0, 0, 1140, 1141, 6, 24, -1, 0, 1141, 1363, 1, 0, 0, 0, 1142, 1143, 5, 186, 0, 0, 1143, 1144, 3, 40, 20, 0, 1144, 1145, 5, 33, 0, 0, 1145, 1146, 6, 24, -1, 0, 1146, 1363, 1, 0, 0, 0, 1147, 1148, 5, 187, 0, 0, 1148, 1149, 3, 40, 20, 0, 1149, 1150, 5, 33, 0, 0, 1150, 1151, 6, 24, -1, 0, 1151, 1363, 1, 0, 0, 0, 1152, 1153, 5, 188, 0, 0, 1153, 1154, 3, 40, 20, 0, 1154, 1155, 5, 33, 0, 0, 1155, 1156, 6, 24, -1, 0, 1156, 1363, 1, 0, 0, 0, 1157, 1158, 5, 189, 0, 0, 1158, 1159, 3, 40, 20, 0, 1159, 1160, 5, 33, 0, 0, 1160, 1161, 6, 24, -1, 0, 1161, 1363, 1, 0, 0, 0, 1162, 1163, 5, 190, 0, 0, 1163, 1164, 3, 40, 20, 0, 1164, 1165, 5, 33, 0, 0, 1165, 1166, 6, 24, -1, 0, 1166, 1363, 1, 0, 0, 0, 1167, 1168, 5, 191, 0, 0, 1168, 1169, 3, 40, 20, 0, 1169, 1170, 5, 33, 0, 0, 1170, 1171, 6, 24, -1, 0, 1171, 1363, 1, 0, 0, 0, 1172, 1173, 5, 192, 0, 0, 1173, 1174, 3, 40, 20, 0, 1174, 1175, 5, 33, 0, 0, 1175, 1176, 6, 24, -1, 0, 1176, 1363, 1, 0, 0, 0, 1177, 1178, 5, 193, 0, 0, 1178, 1179, 3, 40, 20, 0, 1179, 1180, 5, 33, 0, 0, 1180, 1181, 6, 24, -1, 0, 1181, 1363, 1, 0, 0, 0, 1182, 1183, 5, 194, 0, 0, 1183, 1184, 3, 40, 20, 0, 1184, 1185, 5, 33, 0, 0, 1185, 1186, 6, 24, -1, 0, 1186, 1363, 1, 0, 0, 0, 1187, 1188, 5, 195, 0, 0, 1188, 1189, 3, 40, 20, 0, 1189, 1190, 5, 33, 0, 0, 1190, 1191, 6, 24, -1, 0, 1191, 1363, 1, 0, 0, 0, 1192, 1193, 5, 196, 0, 0, 1193, 1194, 3, 40, 20, 0, 1194, 1195, 5, 33, 0, 0, 1195, 1196, 6, 24, -1, 0, 1196, 1363, 1, 0, 0, 0, 1197, 1198, 5, 197, 0, 0, 1198, 1199, 3, 40, 20, 0, 1199, 1200, 5, 33, 0, 0, 1200, 1201, 6, 24, -1, 0, 1201, 1363, 1, 0, 0, 0, 1202, 1203, 5, 198, 0, 0, 1203, 1204, 3, 40, 20, 0, 1204, 1205, 5, 33, 0, 0, 1205, 1206, 6, 24, -1, 0, 1206, 1363, 1, 0, 0, 0, 1207, 1208, 5, 199, 0, 0, 1208, 1209, 3, 40, 20, 0, 1209, 1210, 5, 33, 0, 0, 1210, 1211, 6, 24, -1, 0, 1211, 1363, 1, 0, 0, 0, 1212, 1213, 5, 200, 0, 0, 1213, 1214, 3, 40, 20, 0, 1214, 1215, 5, 33, 0, 0, 1215, 1216, 6, 24, -1, 0, 1216, 1363, 1, 0, 0, 0, 1217, 1218, 5, 201, 0, 0, 1218, 1219, 3, 40, 20, 0, 1219, 1220, 5, 33, 0, 0, 1220, 1221, 6, 24, -1, 0, 1221, 1363, 1, 0, 0, 0, 1222, 1223, 5, 202, 0, 0, 1223, 1224, 3, 40, 20, 0, 1224, 1225, 5, 33, 0, 0, 1225, 1226, 6, 24, -1, 0, 1226, 1363, 1, 0, 0, 0, 1227, 1228, 5, 203, 0, 0, 1228, 1229, 3, 40, 20, 0, 1229, 1230, 5, 33, 0, 0, 1230, 1231, 6, 24, -1, 0, 1231, 1363, 1, 0, 0, 0, 1232, 1233, 5, 204, 0, 0, 1233, 1234, 3, 40, 20, 0, 1234, 1235, 5, 33, 0, 0, 1235, 1236, 6, 24, -1, 0, 1236, 1363, 1, 0, 0, 0, 1237, 1238, 5, 205, 0, 0, 1238, 1239, 3, 40, 20, 0, 1239, 1240, 5, 33, 0, 0, 1240, 1241, 6, 24, -1, 0, 1241, 1363, 1, 0, 0, 0, 1242, 1243, 5, 206, 0, 0, 1243, 1244, 3, 40, 20, 0, 1244, 1245, 5, 33, 0, 0, 1245, 1246, 6, 24, -1, 0, 1246, 1363, 1, 0, 0, 0, 1247, 1248, 5, 207, 0, 0, 1248, 1249, 3, 40, 20, 0, 1249, 1250, 5, 33, 0, 0, 1250, 1251, 6, 24, -1, 0, 1251, 1363, 1, 0, 0, 0, 1252, 1253, 5, 208, 0, 0, 1253, 1254, 3, 40, 20, 0, 1254, 1255, 5, 33, 0, 0, 1255, 1256, 6, 24, -1, 0, 1256, 1363, 1, 0, 0, 0, 1257, 1258, 5, 209, 0, 0, 1258, 1259, 3, 40, 20, 0, 1259, 1260, 5, 33, 0, 0, 1260, 1261, 6, 24, -1, 0, 1261, 1363, 1, 0, 0, 0, 1262, 1263, 5, 210, 0, 0, 1263, 1264, 3, 40, 20, 0, 1264, 1265, 5, 33, 0, 0, 1265, 1266, 6, 24, -1, 0, 1266, 1363, 1, 0, 0, 0, 1267, 1268, 5, 211, 0, 0, 1268, 1269, 3, 40, 20, 0, 1269, 1270, 5, 33, 0, 0, 1270, 1271, 6, 24, -1, 0, 1271, 1363, 1, 0, 0, 0, 1272, 1273, 5, 212, 0, 0, 1273, 1274, 3, 40, 20, 0, 1274, 1275, 5, 33, 0, 0, 1275, 1276, 6, 24, -1, 0, 1276, 1363, 1, 0, 0, 0, 1277, 1278, 5, 213, 0, 0, 1278, 1279, 3, 40, 20, 0, 1279, 1280, 5, 33, 0, 0, 1280, 1281, 6, 24, -1, 0, 1281, 1363, 1, 0, 0, 0, 1282, 1283, 5, 214, 0, 0, 1283, 1284, 3, 40, 20, 0, 1284, 1285, 5, 33, 0, 0, 1285, 1286, 6, 24, -1, 0, 1286, 1363, 1, 0, 0, 0, 1287, 1288, 5, 215, 0, 0, 1288, 1289, 3, 40, 20, 0, 1289, 1290, 5, 33, 0, 0, 1290, 1291, 6, 24, -1, 0, 1291, 1363, 1, 0, 0, 0, 1292, 1293, 5, 216, 0, 0, 1293, 1294, 3, 40, 20, 0, 1294, 1295, 5, 33, 0, 0, 1295, 1296, 6, 24, -1, 0, 1296, 1363, 1, 0, 0, 0, 1297, 1298, 5, 217, 0, 0, 1298, 1299, 3, 40, 20, 0, 1299, 1300, 5, 33, 0, 0, 1300, 1301, 6, 24, -1, 0, 1301, 1363, 1, 0, 0, 0, 1302, 1303, 5, 218, 0, 0, 1303, 1304, 3, 40, 20, 0, 1304, 1305, 5, 33, 0, 0, 1305, 1306, 6, 24, -1, 0, 1306, 1363, 1, 0, 0, 0, 1307, 1308, 5, 219, 0, 0, 1308, 1309, 3, 40, 20, 0, 1309, 1310, 5, 33, 0, 0, 1310, 1311, 6, 24, -1, 0, 1311, 1363, 1, 0, 0, 0, 1312, 1313, 5, 220, 0, 0, 1313, 1314, 3, 40, 20, 0, 1314, 1315, 5, 33, 0, 0, 1315, 1316, 6, 24, -1, 0, 1316, 1363, 1, 0, 0, 0, 1317, 1318, 5, 221, 0, 0, 1318, 1319, 3, 40, 20, 0, 1319, 1320, 5, 33, 0, 0, 1320, 1321, 6, 24, -1, 0, 1321, 1363, 1, 0, 0, 0, 1322, 1323, 5, 222, 0, 0, 1323, 1324, 3, 40, 20, 0, 1324, 1325, 5, 33, 0, 0, 1325, 1326, 6, 24, -1, 0, 1326, 1363, 1, 0, 0, 0, 1327, 1328, 5, 223, 0, 0, 1328, 1329, 3, 40, 20, 0, 1329, 1330, 5, 33, 0, 0, 1330, 1331, 6, 24, -1, 0, 1331, 1363, 1, 0, 0, 0, 1332, 1333, 5, 224, 0, 0, 1333, 1334, 3, 40, 20, 0, 1334, 1335, 5, 33, 0, 0, 1335, 1336, 6, 24, -1, 0, 1336, 1363, 1, 0, 0, 0, 1337, 1338, 5, 225, 0, 0, 1338, 1339, 3, 40, 20, 0, 1339, 1340, 5, 33, 0, 0, 1340, 1341, 6, 24, -1, 0, 1341, 1363, 1, 0, 0, 0, 1342, 1343, 5, 226, 0, 0, 1343, 1344, 3, 40, 20, 0, 1344, 1345, 5, 33, 0, 0, 1345, 1346, 6, 24, -1, 0, 1346, 1363, 1, 0, 0, 0, 1347, 1348, 5, 227, 0, 0, 1348, 1349, 3, 40, 20, 0, 1349, 1350, 5, 33, 0, 0, 1350, 1351, 6, 24, -1, 0, 1351, 1363, 1, 0, 0, 0, 1352, 1353, 5, 228, 0, 0, 1353, 1354, 3, 40, 20, 0, 1354, 1355, 5, 33, 0, 0, 1355, 1356, 6, 24, -1, 0, 1356, 1363, 1, 0, 0, 0, 1357, 1358, 5, 229, 0, 0, 1358, 1359, 3, 40, 20, 0, 1359, 1360, 5, 33, 0, 0, 1360, 1361, 6, 24, -1, 0, 1361, 1363, 1, 0, 0, 0, 1362, 454, 1, 0, 0, 0, 1362, 456, 1, 0, 0, 0, 1362, 458, 1, 0, 0, 0, 1362, 460, 1, 0, 0, 0, 1362, 462, 1, 0, 0, 0, 1362, 464, 1, 0, 0, 0, 1362, 466, 1, 0, 0, 0, 1362, 468, 1, 0, 0, 0, 1362, 473, 1, 0, 0, 0, 1362, 477, 1, 0, 0, 0, 1362, 482, 1, 0, 0, 0, 1362, 487, 1, 0, 0, 0, 1362, 492, 1, 0, 0, 0, 1362, 497, 1, 0, 0, 0, 1362, 502, 1, 0, 0, 0, 1362, 507, 1, 0, 0, 0, 1362, 512, 1, 0, 0, 0, 1362, 517, 1, 0, 0, 0, 1362, 522, 1, 0, 0, 0, 1362, 527, 1, 0, 0, 0, 1362, 532, 1, 0, 0, 0, 1362, 537, 1, 0, 0, 0, 1362, 542, 1, 0, 0, 0, 1362, 547, 1, 0, 0, 0, 1362, 552, 1, 0, 0, 0, 1362, 557, 1, 0, 0, 0, 1362, 562, 1, 0, 0, 0, 1362, 567, 1, 0, 0, 0, 1362, 572, 1, 0, 0, 0, 1362, 577, 1, 0, 0, 0, 1362, 582, 1, 0, 0, 0, 1362, 587, 1, 0, 0, 0, 1362, 592, 1, 0, 0, 0, 1362, 597, 1, 0, 0, 0, 1362, 602, 1, 0, 0, 0, 1362, 607, 1, 0, 0, 0, 1362, 612, 1, 0, 0, 0, 1362, 617, 1, 0, 0, 0, 1362, 622, 1, 0, 0, 0, 1362, 627, 1, 0, 0, 0, 1362, 632, 1, 0, 0, 0, 1362, 637, 1, 0, 0, 0, 1362, 642, 1, 0, 0, 0, 1362, 647, 1, 0, 0, 0, 1362, 652, 1, 0, 0, 0, 1362, 657, 1, 0, 0, 0, 1362, 662, 1, 0, 0, 0, 1362, 667, 1, 0, 0, 0, 1362, 672, 1, 0, 0, 0, 1362, 677, 1, 0, 0, 0, 1362, 682, 1, 0, 0, 0, 1362, 687, 1, 0, 0, 0, 1362, 692, 1, 0, 0, 0, 1362, 697, 1, 0, 0, 0, 1362, 702, 1, 0, 0, 0, 1362, 707, 1, 0, 0, 0, 1362, 712, 1, 0, 0, 0, 1362, 717, 1, 0, 0, 0, 1362, 722, 1, 0, 0, 0, 1362, 727, 1, 0, 0, 0, 1362, 732, 1, 0, 0, 0, 1362, 737, 1, 0, 0, 0, 1362, 742, 1, 0, 0, 0, 1362, 747, 1, 0, 0, 0, 1362, 752, 1, 0, 0, 0, 1362, 757, 1, 0, 0, 0, 1362, 762, 1, 0, 0, 0, 1362, 767, 1, 0, 0, 0, 1362, 772, 1, 0, 0, 0, 1362, 777, 1, 0, 0, 0, 1362, 782, 1, 0, 0, 0, 1362, 787, 1, 0, 0, 0, 1362, 792, 1, 0, 0, 0, 1362, 797, 1, 0, 0, 0, 1362, 802, 1, 0, 0, 0, 1362, 807, 1, 0, 0, 0, 1362, 812, 1, 0, 0, 0, 1362, 817, 1, 0, 0, 0, 1362, 822, 1, 0, 0, 0, 1362, 827, 1, 0, 0, 0, 1362, 832, 1, 0, 0, 0, 1362, 837, 1, 0, 0, 0, 1362, 842, 1, 0, 0, 0, 1362, 847, 1, 0, 0, 0, 1362, 852, 1, 0, 0, 0, 1362, 857, 1, 0, 0, 0, 1362, 862, 1, 0, 0, 0, 1362, 867, 1, 0, 0, 0, 1362, 872, 1, 0, 0, 0, 1362, 877, 1, 0, 0, 0, 1362, 882, 1, 0, 0, 0, 1362, 887, 1, 0, 0, 0, 1362, 892, 1, 0, 0, 0, 1362, 897, 1, 0, 0, 0, 1362, 902, 1, 0, 0, 0, 1362, 907, 1, 0, 0, 0, 1362, 912, 1, 0, 0, 0, 1362, 917, 1, 0, 0, 0, 1362, 922, 1, 0, 0, 0, 1362, 927, 1, 0, 0, 0, 1362, 932, 1, 0, 0, 0, 1362, 937, 1, 0, 0, 0, 1362, 942, 1, 0, 0, 0, 1362, 947, 1, 0, 0, 0, 1362, 952, 1, 0, 0, 0, 1362, 957, 1, 0, 0, 0, 1362, 962, 1, 0, 0, 0, 1362, 967, 1, 0, 0, 0, 1362, 972, 1, 0, 0, 0, 1362, 977, 1, 0, 0, 0, 1362, 982, 1, 0, 0, 0, 1362, 987, 1, 0, 0, 0, 1362, 992, 1, 0, 0, 0, 1362, 997, 1, 0, 0, 0, 1362, 1002, 1, 0, 0, 0, 1362, 1007, 1, 0, 0, 0, 1362, 1012, 1, 0, 0, 0, 1362, 1017, 1, 0, 0, 0, 1362, 1022, 1, 0, 0, 0, 1362, 1027, 1, 0, 0, 0, 1362, 1032, 1, 0, 0, 0, 1362, 1037, 1, 0, 0, 0, 1362, 1042, 1, 0, 0, 0, 1362, 1047, 1, 0, 0, 0, 1362, 1052, 1, 0, 0, 0, 1362, 1057, 1, 0, 0, 0, 1362, 1062, 1, 0, 0, 0, 1362, 1067, 1, 0, 0, 0, 1362, 1072, 1, 0, 0, 0, 1362, 1077, 1, 0, 0, 0, 1362, 1082, 1, 0, 0, 0, 1362, 1087, 1, 0, 0, 0, 1362, 1092, 1, 0, 0, 0, 1362, 1097, 1, 0, 0, 0, 1362, 1102, 1, 0, 0, 0, 1362, 1107, 1, 0, 0, 0, 1362, 1112, 1, 0, 0, 0, 1362, 1117, 1, 0, 0, 0, 1362, 1122, 1, 0, 0, 0, 1362, 1127, 1, 0, 0, 0, 1362, 1132, 1, 0, 0, 0, 1362, 1137, 1, 0, 0, 0, 1362, 1142, 1, 0, 0, 0, 1362, 1147, 1, 0, 0, 0, 1362, 1152, 1, 0, 0, 0, 1362, 1157, 1, 0, 0, 0, 1362, 1162, 1, 0, 0, 0, 1362, 1167, 1, 0, 0, 0, 1362, 1172, 1, 0, 0, 0, 1362, 1177, 1, 0, 0, 0, 1362, 1182, 1, 0, 0, 0, 1362, 1187, 1, 0, 0, 0, 1362, 1192, 1, 0, 0, 0, 1362, 1197, 1, 0, 0, 0, 1362, 1202, 1, 0, 0, 0, 1362, 1207, 1, 0, 0, 0, 1362, 1212, 1, 0, 0, 0, 1362, 1217, 1, 0, 0, 0, 1362, 1222, 1, 0, 0, 0, 1362, 1227, 1, 0, 0, 0, 1362, 1232, 1, 0, 0, 0, 1362, 1237, 1, 0, 0, 0, 1362, 1242, 1, 0, 0, 0, 1362, 1247, 1, 0, 0, 0, 1362, 1252, 1, 0, 0, 0, 1362, 1257, 1, 0, 0, 0, 1362, 1262, 1, 0, 0, 0, 1362, 1267, 1, 0, 0, 0, 1362, 1272, 1, 0, 0, 0, 1362, 1277, 1, 0, 0, 0, 1362, 1282, 1, 0, 0, 0, 1362, 1287, 1, 0, 0, 0, 1362, 1292, 1, 0, 0, 0, 1362, 1297, 1, 0, 0, 0, 1362, 1302, 1, 0, 0, 0, 1362, 1307, 1, 0, 0, 0, 1362, 1312, 1, 0, 0, 0, 1362, 1317, 1, 0, 0, 0, 1362, 1322, 1, 0, 0, 0, 1362, 1327, 1, 0, 0, 0, 1362, 1332, 1, 0, 0, 0, 1362, 1337, 1, 0, 0, 0, 1362, 1342, 1, 0, 0, 0, 1362, 1347, 1, 0, 0, 0, 1362, 1352, 1, 0, 0, 0, 1362, 1357, 1, 0, 0, 0, 1363, 49, 1, 0, 0, 0, 1364, 1365, 3, 32, 16, 0, 1365, 1366, 5, 0, 0, 1, 1366, 1367, 6, 25, -1, 0, 1367, 51, 1, 0, 0, 0, 44, 67, 75, 83, 85, 92, 102, 112, 117, 127, 137, 139, 152, 158, 160, 175, 177, 198, 200, 233, 235, 254, 261, 270, 289, 305, 307, 320, 322, 335, 337, 354, 356, 365, 373, 378, 392, 402, 415, 418, 425, 433, 437, 440, 1362] \ No newline at end of file diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMath.tokens b/Sources/AngouriMath/Core/Antlr/AngouriMath.tokens index 23ae43fa3..62bf831c1 100644 --- a/Sources/AngouriMath/Core/Antlr/AngouriMath.tokens +++ b/Sources/AngouriMath/Core/Antlr/AngouriMath.tokens @@ -225,239 +225,243 @@ T__223=224 T__224=225 T__225=226 T__226=227 -NEWLINE=228 -NUMBER=229 -SPECIALSET=230 -BOOLEAN=231 -NAN=232 -VARIABLE=233 -COMMENT=234 -WS=235 +T__227=228 +T__228=229 +NEWLINE=230 +NUMBER=231 +SPECIALSET=232 +BOOLEAN=233 +NAN=234 +VARIABLE=235 +COMMENT=236 +WS=237 '!'=1 -'^'=2 -'-'=3 -'+'=4 -'*'=5 -'...'=6 -'…'=7 -'/'=8 -'mod'=9 -'intersect'=10 -'/\\'=11 -'unite'=12 -'\\/'=13 -'setsubtract'=14 -'\\'=15 -'in'=16 -'subset'=17 -'⊆'=18 -'superset'=19 -'⊇'=20 -'divides'=21 -'|'=22 -'>='=23 -'<='=24 -'>'=25 -'<'=26 -'='=27 -'<>'=28 -'≡'=29 -'('=30 -')'=31 -'not'=32 -'and'=33 -'&'=34 -'xor'=35 -'or'=36 -'implies'=37 -'->'=38 -'provided'=39 -'=>'=40 -':'=41 -'forall'=42 -'∀'=43 -'exists!'=44 -'∃!'=45 -'exists'=46 -'∃'=47 -','=48 -';'=49 -'+oo'=50 -'-oo'=51 -'(|'=52 -'|)'=53 -'#'=54 -'['=55 -']T'=56 -']'=57 -'{'=58 -'}'=59 -'log('=60 -'log10('=61 -'log2('=62 -'pow('=63 -'sqrt('=64 -'cbrt('=65 -'sqr('=66 -'ln('=67 -'exp('=68 -'sin('=69 -'cos('=70 -'tan('=71 -'cotan('=72 -'cot('=73 -'sec('=74 -'cosec('=75 -'csc('=76 -'arcsin('=77 -'arccos('=78 -'arctan('=79 -'arccotan('=80 -'arcsec('=81 -'arccosec('=82 -'arccsc('=83 -'acsc('=84 -'asin('=85 -'acos('=86 -'atan('=87 -'acotan('=88 -'asec('=89 -'acosec('=90 -'acot('=91 -'arccot('=92 -'sinh('=93 -'sh('=94 -'cosh('=95 -'ch('=96 -'tanh('=97 -'th('=98 -'cotanh('=99 -'coth('=100 -'cth('=101 -'sech('=102 -'sch('=103 -'cosech('=104 -'csch('=105 -'asinh('=106 -'arsinh('=107 -'arsh('=108 -'arcsinh('=109 -'acosh('=110 -'arcosh('=111 -'arch('=112 -'arccosh('=113 -'atanh('=114 -'artanh('=115 -'arth('=116 -'arctanh('=117 -'acoth('=118 -'arcoth('=119 -'acotanh('=120 -'arcotanh('=121 -'arcth('=122 -'arccotanh('=123 -'asech('=124 -'arsech('=125 -'arsch('=126 -'arcsech('=127 -'acosech('=128 -'arcosech('=129 -'arcsch('=130 -'arccosech('=131 -'acsch('=132 -'factorial('=133 -'gamma('=134 -'derivative('=135 -'integral('=136 -'limit('=137 -'limitleft('=138 -'limitright('=139 -'sum('=140 -'product('=141 -'signum('=142 -'sgn('=143 -'sign('=144 -'abs('=145 -'phi('=146 -'prime('=147 -'valuation('=148 -'card('=149 -'powerset('=150 -'union('=151 -'intersection('=152 -'complement('=153 -'image('=154 -'preimage('=155 -'floor('=156 -'ceil('=157 -'ceiling('=158 -'round('=159 -'min('=160 -'max('=161 -'argmax('=162 -'argmin('=163 -'gcd('=164 -'lcm('=165 -'binomial('=166 -'iverson('=167 -'aleph('=168 -'erf('=169 -'erfc('=170 -'erfi('=171 -'Ei('=172 -'li('=173 -'polygamma('=174 -'digamma('=175 -'Si('=176 -'Ci('=177 -'Shi('=178 -'Chi('=179 -'det('=180 -'transpose('=181 -'dot('=182 -'cross('=183 -'resultant('=184 -'conjugate('=185 -'conj('=186 -'arg('=187 -'Re('=188 -'Im('=189 -'re('=190 -'real('=191 -'im('=192 -'imag('=193 -'trunc('=194 -'zeta('=195 -'riemannzeta('=196 -'hurwitzzeta('=197 -'lambertw('=198 -'productlog('=199 -'mobius('=200 -'moebiusmu('=201 -'divisorsigma('=202 -'primenu('=203 -'primeomega('=204 -'primepi('=205 -'harmonicnumber('=206 -'catalannumber('=207 -'multinomial('=208 -'fallingfactorial('=209 -'factorialpower('=210 -'risingfactorial('=211 -'forwarddifference('=212 -'laplacian('=213 -'jacobian('=214 -'hessian('=215 -'heaviside('=216 -'unitstep('=217 -'isprime('=218 -'pochhammer('=219 -'doublefactorial('=220 -'factorial2('=221 -'fractionalpart('=222 -'quotient('=223 -'domain('=224 -'piecewise('=225 -'apply('=226 -'lambda('=227 -'NaN'=232 +'!!'=2 +'!!!'=3 +'^'=4 +'-'=5 +'+'=6 +'*'=7 +'...'=8 +'…'=9 +'/'=10 +'mod'=11 +'intersect'=12 +'/\\'=13 +'unite'=14 +'\\/'=15 +'setsubtract'=16 +'\\'=17 +'in'=18 +'subset'=19 +'⊆'=20 +'superset'=21 +'⊇'=22 +'divides'=23 +'|'=24 +'>='=25 +'<='=26 +'>'=27 +'<'=28 +'='=29 +'<>'=30 +'≡'=31 +'('=32 +')'=33 +'not'=34 +'and'=35 +'&'=36 +'xor'=37 +'or'=38 +'implies'=39 +'->'=40 +'provided'=41 +'=>'=42 +':'=43 +'forall'=44 +'∀'=45 +'exists!'=46 +'∃!'=47 +'exists'=48 +'∃'=49 +','=50 +';'=51 +'+oo'=52 +'-oo'=53 +'(|'=54 +'|)'=55 +'#'=56 +'['=57 +']T'=58 +']'=59 +'{'=60 +'}'=61 +'log('=62 +'log10('=63 +'log2('=64 +'pow('=65 +'sqrt('=66 +'cbrt('=67 +'sqr('=68 +'ln('=69 +'exp('=70 +'sin('=71 +'cos('=72 +'tan('=73 +'cotan('=74 +'cot('=75 +'sec('=76 +'cosec('=77 +'csc('=78 +'arcsin('=79 +'arccos('=80 +'arctan('=81 +'arccotan('=82 +'arcsec('=83 +'arccosec('=84 +'arccsc('=85 +'acsc('=86 +'asin('=87 +'acos('=88 +'atan('=89 +'acotan('=90 +'asec('=91 +'acosec('=92 +'acot('=93 +'arccot('=94 +'sinh('=95 +'sh('=96 +'cosh('=97 +'ch('=98 +'tanh('=99 +'th('=100 +'cotanh('=101 +'coth('=102 +'cth('=103 +'sech('=104 +'sch('=105 +'cosech('=106 +'csch('=107 +'asinh('=108 +'arsinh('=109 +'arsh('=110 +'arcsinh('=111 +'acosh('=112 +'arcosh('=113 +'arch('=114 +'arccosh('=115 +'atanh('=116 +'artanh('=117 +'arth('=118 +'arctanh('=119 +'acoth('=120 +'arcoth('=121 +'acotanh('=122 +'arcotanh('=123 +'arcth('=124 +'arccotanh('=125 +'asech('=126 +'arsech('=127 +'arsch('=128 +'arcsech('=129 +'acosech('=130 +'arcosech('=131 +'arcsch('=132 +'arccosech('=133 +'acsch('=134 +'factorial('=135 +'gamma('=136 +'derivative('=137 +'integral('=138 +'limit('=139 +'limitleft('=140 +'limitright('=141 +'sum('=142 +'product('=143 +'signum('=144 +'sgn('=145 +'sign('=146 +'abs('=147 +'phi('=148 +'prime('=149 +'valuation('=150 +'card('=151 +'powerset('=152 +'union('=153 +'intersection('=154 +'complement('=155 +'image('=156 +'preimage('=157 +'floor('=158 +'ceil('=159 +'ceiling('=160 +'round('=161 +'min('=162 +'max('=163 +'argmax('=164 +'argmin('=165 +'gcd('=166 +'lcm('=167 +'binomial('=168 +'iverson('=169 +'aleph('=170 +'erf('=171 +'erfc('=172 +'erfi('=173 +'Ei('=174 +'li('=175 +'polygamma('=176 +'digamma('=177 +'Si('=178 +'Ci('=179 +'Shi('=180 +'Chi('=181 +'det('=182 +'transpose('=183 +'dot('=184 +'cross('=185 +'resultant('=186 +'conjugate('=187 +'conj('=188 +'arg('=189 +'Re('=190 +'Im('=191 +'re('=192 +'real('=193 +'im('=194 +'imag('=195 +'trunc('=196 +'zeta('=197 +'riemannzeta('=198 +'hurwitzzeta('=199 +'lambertw('=200 +'productlog('=201 +'mobius('=202 +'moebiusmu('=203 +'divisorsigma('=204 +'primenu('=205 +'primeomega('=206 +'primepi('=207 +'harmonicnumber('=208 +'catalannumber('=209 +'multinomial('=210 +'fallingfactorial('=211 +'factorialpower('=212 +'risingfactorial('=213 +'forwarddifference('=214 +'laplacian('=215 +'jacobian('=216 +'hessian('=217 +'heaviside('=218 +'unitstep('=219 +'isprime('=220 +'pochhammer('=221 +'doublefactorial('=222 +'factorial2('=223 +'fractionalpart('=224 +'quotient('=225 +'domain('=226 +'piecewise('=227 +'apply('=228 +'lambda('=229 +'NaN'=234 diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.cs b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.cs index cfee9883f..9a8c1c2af 100644 --- a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.cs +++ b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.cs @@ -69,8 +69,8 @@ public const int T__209=210, T__210=211, T__211=212, T__212=213, T__213=214, T__214=215, T__215=216, T__216=217, T__217=218, T__218=219, T__219=220, T__220=221, T__221=222, T__222=223, T__223=224, T__224=225, T__225=226, T__226=227, - NEWLINE=228, NUMBER=229, SPECIALSET=230, BOOLEAN=231, NAN=232, VARIABLE=233, - COMMENT=234, WS=235; + T__227=228, T__228=229, NEWLINE=230, NUMBER=231, SPECIALSET=232, BOOLEAN=233, + NAN=234, VARIABLE=235, COMMENT=236, WS=237; public static string[] channelNames = { "DEFAULT_TOKEN_CHANNEL", "HIDDEN" }; @@ -110,8 +110,8 @@ public const int "T__203", "T__204", "T__205", "T__206", "T__207", "T__208", "T__209", "T__210", "T__211", "T__212", "T__213", "T__214", "T__215", "T__216", "T__217", "T__218", "T__219", "T__220", "T__221", "T__222", "T__223", - "T__224", "T__225", "T__226", "NEWLINE", "EXPONENT", "NUMBER", "SPECIALSET", - "BOOLEAN", "NAN", "VARIABLE", "COMMENT", "WS" + "T__224", "T__225", "T__226", "T__227", "T__228", "NEWLINE", "EXPONENT", + "NUMBER", "SPECIALSET", "BOOLEAN", "NAN", "VARIABLE", "COMMENT", "WS" }; @@ -132,8 +132,8 @@ public AngouriMathLexer(ICharStream input, TextWriter output, TextWriter errorOu } private static readonly string[] _LiteralNames = { - null, "'!'", "'^'", "'-'", "'+'", "'*'", "'...'", "'\\u2026'", "'/'", - "'mod'", "'intersect'", "'/\\'", "'unite'", "'\\/'", "'setsubtract'", + null, "'!'", "'!!'", "'!!!'", "'^'", "'-'", "'+'", "'*'", "'...'", "'\\u2026'", + "'/'", "'mod'", "'intersect'", "'/\\'", "'unite'", "'\\/'", "'setsubtract'", "'\\'", "'in'", "'subset'", "'\\u2286'", "'superset'", "'\\u2287'", "'divides'", "'|'", "'>='", "'<='", "'>'", "'<'", "'='", "'<>'", "'\\u2261'", "'('", "')'", "'not'", "'and'", "'&'", "'xor'", "'or'", "'implies'", "'->'", @@ -190,8 +190,8 @@ public AngouriMathLexer(ICharStream input, TextWriter output, TextWriter errorOu null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - "NEWLINE", "NUMBER", "SPECIALSET", "BOOLEAN", "NAN", "VARIABLE", "COMMENT", - "WS" + null, null, "NEWLINE", "NUMBER", "SPECIALSET", "BOOLEAN", "NAN", "VARIABLE", + "COMMENT", "WS" }; public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); @@ -221,7 +221,7 @@ static AngouriMathLexer() { } } private static int[] _serializedATN = { - 4,0,235,2182,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,0,237,2193,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2, 14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2, 21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2, @@ -257,729 +257,734 @@ static AngouriMathLexer() { 7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218, 7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224, 7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230, - 7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,1,0, - 1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,7,1,7,1, - 8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1, - 11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1, - 13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1, - 16,1,16,1,16,1,16,1,16,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1, - 18,1,18,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1, - 22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,25,1,25,1,26,1,26,1,27,1,27,1, - 27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1, - 32,1,33,1,33,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1, - 36,1,36,1,36,1,36,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1, - 38,1,38,1,39,1,39,1,39,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1, - 42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,45,1, - 45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,47,1,47,1,48,1,48,1,49,1,49,1, - 49,1,49,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,1, - 54,1,54,1,55,1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1,59,1,59,1,59,1, - 59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1, - 61,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1, - 64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,67,1, - 67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1, - 70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1, - 72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1, - 74,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1, - 77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1, - 78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1, - 80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1, - 81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1, - 83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1, - 86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1, - 88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1, - 90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1, - 92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1, - 94,1,94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1, - 97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1, - 99,1,99,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1, - 101,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103, - 1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105, - 1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,107, - 1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108, - 1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110, - 1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,112, - 1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113, - 1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115, - 1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116, - 1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118, - 1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119, - 1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120, - 1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122, - 1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123, - 1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125, - 1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126, - 1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128, - 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129, - 1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, - 1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132, - 1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133, - 1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135, - 1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137, - 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138, - 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139, - 1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141, - 1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,143, - 1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145, - 1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147, - 1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148, - 1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149, - 1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151, - 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,152,1,152, - 1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153, - 1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154, - 1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156, - 1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157, - 1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159, - 1,159,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161, - 1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163, - 1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165, - 1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166, - 1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,168,1,168, - 1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170, - 1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,173, - 1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,174,1,174, - 1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,176, - 1,176,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,178, - 1,178,1,179,1,179,1,179,1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180, - 1,180,1,180,1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,182,1,182, - 1,182,1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,183,1,183, - 1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184, - 1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186, - 1,186,1,186,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,189,1,189, - 1,189,1,189,1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191, - 1,192,1,192,1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193,1,193, + 7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236, + 7,236,2,237,7,237,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,3,1,3,1,4,1,4, + 1,5,1,5,1,6,1,6,1,7,1,7,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,10,1,10,1, + 11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,13,1, + 13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1, + 15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1, + 18,1,18,1,18,1,18,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1, + 20,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,24,1, + 24,1,24,1,25,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29,1,29,1, + 30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1, + 35,1,35,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1, + 38,1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1, + 40,1,41,1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1, + 44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,47,1,47,1, + 47,1,47,1,47,1,47,1,47,1,48,1,48,1,49,1,49,1,50,1,50,1,51,1,51,1,51,1, + 51,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1,54,1,55,1,55,1,56,1, + 56,1,57,1,57,1,57,1,58,1,58,1,59,1,59,1,60,1,60,1,61,1,61,1,61,1,61,1, + 61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1, + 64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1, + 66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,69,1,69,1, + 69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,72,1, + 72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1, + 74,1,74,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1, + 77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1, + 79,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1, + 80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1, + 82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1, + 83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1, + 85,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1, + 88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1, + 90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1, + 92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1, + 94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1, + 96,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1, + 99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1, + 101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103, + 1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105, + 1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107, + 1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110, + 1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112, + 1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113, + 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115, + 1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116, + 1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118, + 1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120, + 1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121, + 1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122, + 1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124, + 1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125, + 1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127, + 1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130, + 1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132, + 1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,134, + 1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135, + 1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136, + 1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137, + 1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139, + 1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140, + 1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141, + 1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,143, + 1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144, + 1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,147, + 1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,149, + 1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150, + 1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153, + 1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,158, + 1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159, + 1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161, + 1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163, + 1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165, + 1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167, + 1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168, + 1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,170, + 1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172, + 1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,174, + 1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,176, + 1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,177, + 1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,179,1,180,1,180,1,180, + 1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182, + 1,182,1,182,1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,184, + 1,184,1,184,1,184,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185,1,185, + 1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,186,1,186, + 1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188, + 1,188,1,188,1,188,1,189,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,191, + 1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,193,1,193,1,193, 1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195,1,195, - 1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196, - 1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,197,1,197,1,197, - 1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198,1,198,1,198,1,198,1,198, - 1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199, - 1,199,1,199,1,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200, - 1,200,1,200,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201, + 1,195,1,195,1,196,1,196,1,196,1,196,1,196,1,196,1,197,1,197,1,197,1,197, + 1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198,1,198,1,198, + 1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,199,1,199, + 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,200,1,200,1,200,1,200, + 1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,201,1,201,1,201,1,201, 1,201,1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202, - 1,202,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203, - 1,203,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,205,1,205, - 1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205, - 1,205,1,205,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206, - 1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,207,1,207,1,207, - 1,207,1,207,1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208, - 1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208, - 1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209, - 1,209,1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210, - 1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,211,1,211,1,211, - 1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211, - 1,211,1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212, - 1,212,1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213, - 1,213,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,215,1,215, - 1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217, - 1,217,1,217,1,217,1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, - 1,218,1,218,1,218,1,218,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219, - 1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220, - 1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,221,1,221,1,221, - 1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221, - 1,221,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,223, - 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,224,1,224,1,224,1,224,1,224, - 1,224,1,224,1,224,1,224,1,224,1,224,1,225,1,225,1,225,1,225,1,225,1,225, - 1,225,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,227,3,227,2033, - 8,227,1,227,4,227,2036,8,227,11,227,12,227,2037,1,227,1,227,1,228,1,228, - 3,228,2044,8,228,1,228,4,228,2047,8,228,11,228,12,228,2048,1,229,4,229, - 2052,8,229,11,229,12,229,2053,1,229,1,229,5,229,2058,8,229,10,229,12,229, - 2061,9,229,1,229,3,229,2064,8,229,1,229,3,229,2067,8,229,1,229,3,229,2070, - 8,229,1,229,4,229,2073,8,229,11,229,12,229,2074,1,229,3,229,2078,8,229, - 1,229,3,229,2081,8,229,1,229,3,229,2084,8,229,1,230,1,230,1,230,1,230, - 1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230, - 1,230,1,230,3,230,2104,8,230,1,231,1,231,1,231,1,231,1,231,1,231,1,231, - 1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,3,231, - 2124,8,231,1,232,1,232,1,232,1,232,1,233,4,233,2131,8,233,11,233,12,233, - 2132,1,233,1,233,4,233,2137,8,233,11,233,12,233,2138,5,233,2141,8,233, - 10,233,12,233,2144,9,233,1,234,1,234,1,234,1,234,5,234,2150,8,234,10,234, - 12,234,2153,9,234,1,234,3,234,2156,8,234,1,234,3,234,2159,8,234,1,234, - 1,234,1,234,1,234,5,234,2165,8,234,10,234,12,234,2168,9,234,1,234,1,234, - 3,234,2172,8,234,1,234,1,234,1,235,4,235,2177,8,235,11,235,12,235,2178, - 1,235,1,235,1,2166,0,236,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10, - 21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22, - 45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34, - 69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46, - 93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113, - 57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133, - 67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153, - 77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173, - 87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193, - 97,195,98,197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106, - 213,107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,115, - 231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,123,247,124, - 249,125,251,126,253,127,255,128,257,129,259,130,261,131,263,132,265,133, - 267,134,269,135,271,136,273,137,275,138,277,139,279,140,281,141,283,142, - 285,143,287,144,289,145,291,146,293,147,295,148,297,149,299,150,301,151, - 303,152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319,160, - 321,161,323,162,325,163,327,164,329,165,331,166,333,167,335,168,337,169, - 339,170,341,171,343,172,345,173,347,174,349,175,351,176,353,177,355,178, - 357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,186,373,187, - 375,188,377,189,379,190,381,191,383,192,385,193,387,194,389,195,391,196, - 393,197,395,198,397,199,399,200,401,201,403,202,405,203,407,204,409,205, - 411,206,413,207,415,208,417,209,419,210,421,211,423,212,425,213,427,214, - 429,215,431,216,433,217,435,218,437,219,439,220,441,221,443,222,445,223, - 447,224,449,225,451,226,453,227,455,228,457,0,459,229,461,230,463,231, - 465,232,467,233,469,234,471,235,1,0,6,2,0,69,69,101,101,2,0,43,43,45,45, - 5,0,65,90,97,122,880,1279,7936,8191,8495,8495,5,0,48,57,65,90,97,122,880, - 1279,7936,8191,2,0,10,10,13,13,2,0,9,9,32,32,2213,0,1,1,0,0,0,0,3,1,0, - 0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15, - 1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0, - 0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37, - 1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0, - 0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59, - 1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0, - 0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81, - 1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0, - 0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0, - 103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0, - 113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0, - 123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0, - 133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0, - 143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0, - 153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0, - 163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0, - 173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0, - 183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0, - 193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0, - 203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0, - 213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0, - 223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0, - 233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0, - 243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0, - 253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0, - 263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0, - 273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0, - 283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0, - 293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0, - 303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0, - 313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0, - 323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0, - 333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0, - 343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0, - 353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0, - 363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0, - 373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0, - 383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0, - 393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0, - 403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0, - 413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0, - 423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0, - 433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0, - 443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0, - 453,1,0,0,0,0,455,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0, - 465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,1,473,1,0,0,0,3, - 475,1,0,0,0,5,477,1,0,0,0,7,479,1,0,0,0,9,481,1,0,0,0,11,483,1,0,0,0,13, - 487,1,0,0,0,15,489,1,0,0,0,17,491,1,0,0,0,19,495,1,0,0,0,21,505,1,0,0, - 0,23,508,1,0,0,0,25,514,1,0,0,0,27,517,1,0,0,0,29,529,1,0,0,0,31,531,1, - 0,0,0,33,534,1,0,0,0,35,541,1,0,0,0,37,543,1,0,0,0,39,552,1,0,0,0,41,554, - 1,0,0,0,43,562,1,0,0,0,45,564,1,0,0,0,47,567,1,0,0,0,49,570,1,0,0,0,51, - 572,1,0,0,0,53,574,1,0,0,0,55,576,1,0,0,0,57,579,1,0,0,0,59,581,1,0,0, - 0,61,583,1,0,0,0,63,585,1,0,0,0,65,589,1,0,0,0,67,593,1,0,0,0,69,595,1, - 0,0,0,71,599,1,0,0,0,73,602,1,0,0,0,75,610,1,0,0,0,77,613,1,0,0,0,79,622, - 1,0,0,0,81,625,1,0,0,0,83,627,1,0,0,0,85,634,1,0,0,0,87,636,1,0,0,0,89, - 644,1,0,0,0,91,647,1,0,0,0,93,654,1,0,0,0,95,656,1,0,0,0,97,658,1,0,0, - 0,99,660,1,0,0,0,101,664,1,0,0,0,103,668,1,0,0,0,105,671,1,0,0,0,107,674, - 1,0,0,0,109,676,1,0,0,0,111,678,1,0,0,0,113,681,1,0,0,0,115,683,1,0,0, - 0,117,685,1,0,0,0,119,687,1,0,0,0,121,692,1,0,0,0,123,699,1,0,0,0,125, - 705,1,0,0,0,127,710,1,0,0,0,129,716,1,0,0,0,131,722,1,0,0,0,133,727,1, - 0,0,0,135,731,1,0,0,0,137,736,1,0,0,0,139,741,1,0,0,0,141,746,1,0,0,0, - 143,751,1,0,0,0,145,758,1,0,0,0,147,763,1,0,0,0,149,768,1,0,0,0,151,775, - 1,0,0,0,153,780,1,0,0,0,155,788,1,0,0,0,157,796,1,0,0,0,159,804,1,0,0, - 0,161,814,1,0,0,0,163,822,1,0,0,0,165,832,1,0,0,0,167,840,1,0,0,0,169, - 846,1,0,0,0,171,852,1,0,0,0,173,858,1,0,0,0,175,864,1,0,0,0,177,872,1, - 0,0,0,179,878,1,0,0,0,181,886,1,0,0,0,183,892,1,0,0,0,185,900,1,0,0,0, - 187,906,1,0,0,0,189,910,1,0,0,0,191,916,1,0,0,0,193,920,1,0,0,0,195,926, - 1,0,0,0,197,930,1,0,0,0,199,938,1,0,0,0,201,944,1,0,0,0,203,949,1,0,0, - 0,205,955,1,0,0,0,207,960,1,0,0,0,209,968,1,0,0,0,211,974,1,0,0,0,213, - 981,1,0,0,0,215,989,1,0,0,0,217,995,1,0,0,0,219,1004,1,0,0,0,221,1011, - 1,0,0,0,223,1019,1,0,0,0,225,1025,1,0,0,0,227,1034,1,0,0,0,229,1041,1, - 0,0,0,231,1049,1,0,0,0,233,1055,1,0,0,0,235,1064,1,0,0,0,237,1071,1,0, - 0,0,239,1079,1,0,0,0,241,1088,1,0,0,0,243,1098,1,0,0,0,245,1105,1,0,0, - 0,247,1116,1,0,0,0,249,1123,1,0,0,0,251,1131,1,0,0,0,253,1138,1,0,0,0, - 255,1147,1,0,0,0,257,1156,1,0,0,0,259,1166,1,0,0,0,261,1174,1,0,0,0,263, - 1185,1,0,0,0,265,1192,1,0,0,0,267,1203,1,0,0,0,269,1210,1,0,0,0,271,1222, - 1,0,0,0,273,1232,1,0,0,0,275,1239,1,0,0,0,277,1250,1,0,0,0,279,1262,1, - 0,0,0,281,1267,1,0,0,0,283,1276,1,0,0,0,285,1284,1,0,0,0,287,1289,1,0, - 0,0,289,1295,1,0,0,0,291,1300,1,0,0,0,293,1305,1,0,0,0,295,1312,1,0,0, - 0,297,1323,1,0,0,0,299,1329,1,0,0,0,301,1339,1,0,0,0,303,1346,1,0,0,0, - 305,1360,1,0,0,0,307,1372,1,0,0,0,309,1379,1,0,0,0,311,1389,1,0,0,0,313, - 1396,1,0,0,0,315,1402,1,0,0,0,317,1411,1,0,0,0,319,1418,1,0,0,0,321,1423, - 1,0,0,0,323,1428,1,0,0,0,325,1436,1,0,0,0,327,1444,1,0,0,0,329,1449,1, - 0,0,0,331,1454,1,0,0,0,333,1464,1,0,0,0,335,1473,1,0,0,0,337,1480,1,0, - 0,0,339,1485,1,0,0,0,341,1491,1,0,0,0,343,1497,1,0,0,0,345,1501,1,0,0, - 0,347,1505,1,0,0,0,349,1516,1,0,0,0,351,1525,1,0,0,0,353,1529,1,0,0,0, - 355,1533,1,0,0,0,357,1538,1,0,0,0,359,1543,1,0,0,0,361,1548,1,0,0,0,363, - 1559,1,0,0,0,365,1564,1,0,0,0,367,1571,1,0,0,0,369,1582,1,0,0,0,371,1593, - 1,0,0,0,373,1599,1,0,0,0,375,1604,1,0,0,0,377,1608,1,0,0,0,379,1612,1, - 0,0,0,381,1616,1,0,0,0,383,1622,1,0,0,0,385,1626,1,0,0,0,387,1632,1,0, - 0,0,389,1639,1,0,0,0,391,1645,1,0,0,0,393,1658,1,0,0,0,395,1671,1,0,0, - 0,397,1681,1,0,0,0,399,1693,1,0,0,0,401,1701,1,0,0,0,403,1712,1,0,0,0, - 405,1726,1,0,0,0,407,1735,1,0,0,0,409,1747,1,0,0,0,411,1756,1,0,0,0,413, - 1772,1,0,0,0,415,1787,1,0,0,0,417,1800,1,0,0,0,419,1818,1,0,0,0,421,1834, - 1,0,0,0,423,1851,1,0,0,0,425,1870,1,0,0,0,427,1881,1,0,0,0,429,1891,1, - 0,0,0,431,1900,1,0,0,0,433,1911,1,0,0,0,435,1921,1,0,0,0,437,1930,1,0, - 0,0,439,1942,1,0,0,0,441,1959,1,0,0,0,443,1971,1,0,0,0,445,1987,1,0,0, - 0,447,1997,1,0,0,0,449,2005,1,0,0,0,451,2016,1,0,0,0,453,2023,1,0,0,0, - 455,2035,1,0,0,0,457,2041,1,0,0,0,459,2083,1,0,0,0,461,2103,1,0,0,0,463, - 2123,1,0,0,0,465,2125,1,0,0,0,467,2130,1,0,0,0,469,2171,1,0,0,0,471,2176, - 1,0,0,0,473,474,5,33,0,0,474,2,1,0,0,0,475,476,5,94,0,0,476,4,1,0,0,0, - 477,478,5,45,0,0,478,6,1,0,0,0,479,480,5,43,0,0,480,8,1,0,0,0,481,482, - 5,42,0,0,482,10,1,0,0,0,483,484,5,46,0,0,484,485,5,46,0,0,485,486,5,46, - 0,0,486,12,1,0,0,0,487,488,5,8230,0,0,488,14,1,0,0,0,489,490,5,47,0,0, - 490,16,1,0,0,0,491,492,5,109,0,0,492,493,5,111,0,0,493,494,5,100,0,0,494, - 18,1,0,0,0,495,496,5,105,0,0,496,497,5,110,0,0,497,498,5,116,0,0,498,499, - 5,101,0,0,499,500,5,114,0,0,500,501,5,115,0,0,501,502,5,101,0,0,502,503, - 5,99,0,0,503,504,5,116,0,0,504,20,1,0,0,0,505,506,5,47,0,0,506,507,5,92, - 0,0,507,22,1,0,0,0,508,509,5,117,0,0,509,510,5,110,0,0,510,511,5,105,0, - 0,511,512,5,116,0,0,512,513,5,101,0,0,513,24,1,0,0,0,514,515,5,92,0,0, - 515,516,5,47,0,0,516,26,1,0,0,0,517,518,5,115,0,0,518,519,5,101,0,0,519, - 520,5,116,0,0,520,521,5,115,0,0,521,522,5,117,0,0,522,523,5,98,0,0,523, - 524,5,116,0,0,524,525,5,114,0,0,525,526,5,97,0,0,526,527,5,99,0,0,527, - 528,5,116,0,0,528,28,1,0,0,0,529,530,5,92,0,0,530,30,1,0,0,0,531,532,5, - 105,0,0,532,533,5,110,0,0,533,32,1,0,0,0,534,535,5,115,0,0,535,536,5,117, - 0,0,536,537,5,98,0,0,537,538,5,115,0,0,538,539,5,101,0,0,539,540,5,116, - 0,0,540,34,1,0,0,0,541,542,5,8838,0,0,542,36,1,0,0,0,543,544,5,115,0,0, - 544,545,5,117,0,0,545,546,5,112,0,0,546,547,5,101,0,0,547,548,5,114,0, - 0,548,549,5,115,0,0,549,550,5,101,0,0,550,551,5,116,0,0,551,38,1,0,0,0, - 552,553,5,8839,0,0,553,40,1,0,0,0,554,555,5,100,0,0,555,556,5,105,0,0, - 556,557,5,118,0,0,557,558,5,105,0,0,558,559,5,100,0,0,559,560,5,101,0, - 0,560,561,5,115,0,0,561,42,1,0,0,0,562,563,5,124,0,0,563,44,1,0,0,0,564, - 565,5,62,0,0,565,566,5,61,0,0,566,46,1,0,0,0,567,568,5,60,0,0,568,569, - 5,61,0,0,569,48,1,0,0,0,570,571,5,62,0,0,571,50,1,0,0,0,572,573,5,60,0, - 0,573,52,1,0,0,0,574,575,5,61,0,0,575,54,1,0,0,0,576,577,5,60,0,0,577, - 578,5,62,0,0,578,56,1,0,0,0,579,580,5,8801,0,0,580,58,1,0,0,0,581,582, - 5,40,0,0,582,60,1,0,0,0,583,584,5,41,0,0,584,62,1,0,0,0,585,586,5,110, - 0,0,586,587,5,111,0,0,587,588,5,116,0,0,588,64,1,0,0,0,589,590,5,97,0, - 0,590,591,5,110,0,0,591,592,5,100,0,0,592,66,1,0,0,0,593,594,5,38,0,0, - 594,68,1,0,0,0,595,596,5,120,0,0,596,597,5,111,0,0,597,598,5,114,0,0,598, - 70,1,0,0,0,599,600,5,111,0,0,600,601,5,114,0,0,601,72,1,0,0,0,602,603, - 5,105,0,0,603,604,5,109,0,0,604,605,5,112,0,0,605,606,5,108,0,0,606,607, - 5,105,0,0,607,608,5,101,0,0,608,609,5,115,0,0,609,74,1,0,0,0,610,611,5, - 45,0,0,611,612,5,62,0,0,612,76,1,0,0,0,613,614,5,112,0,0,614,615,5,114, - 0,0,615,616,5,111,0,0,616,617,5,118,0,0,617,618,5,105,0,0,618,619,5,100, - 0,0,619,620,5,101,0,0,620,621,5,100,0,0,621,78,1,0,0,0,622,623,5,61,0, - 0,623,624,5,62,0,0,624,80,1,0,0,0,625,626,5,58,0,0,626,82,1,0,0,0,627, - 628,5,102,0,0,628,629,5,111,0,0,629,630,5,114,0,0,630,631,5,97,0,0,631, - 632,5,108,0,0,632,633,5,108,0,0,633,84,1,0,0,0,634,635,5,8704,0,0,635, - 86,1,0,0,0,636,637,5,101,0,0,637,638,5,120,0,0,638,639,5,105,0,0,639,640, - 5,115,0,0,640,641,5,116,0,0,641,642,5,115,0,0,642,643,5,33,0,0,643,88, - 1,0,0,0,644,645,5,8707,0,0,645,646,5,33,0,0,646,90,1,0,0,0,647,648,5,101, - 0,0,648,649,5,120,0,0,649,650,5,105,0,0,650,651,5,115,0,0,651,652,5,116, - 0,0,652,653,5,115,0,0,653,92,1,0,0,0,654,655,5,8707,0,0,655,94,1,0,0,0, - 656,657,5,44,0,0,657,96,1,0,0,0,658,659,5,59,0,0,659,98,1,0,0,0,660,661, - 5,43,0,0,661,662,5,111,0,0,662,663,5,111,0,0,663,100,1,0,0,0,664,665,5, - 45,0,0,665,666,5,111,0,0,666,667,5,111,0,0,667,102,1,0,0,0,668,669,5,40, - 0,0,669,670,5,124,0,0,670,104,1,0,0,0,671,672,5,124,0,0,672,673,5,41,0, - 0,673,106,1,0,0,0,674,675,5,35,0,0,675,108,1,0,0,0,676,677,5,91,0,0,677, - 110,1,0,0,0,678,679,5,93,0,0,679,680,5,84,0,0,680,112,1,0,0,0,681,682, - 5,93,0,0,682,114,1,0,0,0,683,684,5,123,0,0,684,116,1,0,0,0,685,686,5,125, - 0,0,686,118,1,0,0,0,687,688,5,108,0,0,688,689,5,111,0,0,689,690,5,103, - 0,0,690,691,5,40,0,0,691,120,1,0,0,0,692,693,5,108,0,0,693,694,5,111,0, - 0,694,695,5,103,0,0,695,696,5,49,0,0,696,697,5,48,0,0,697,698,5,40,0,0, - 698,122,1,0,0,0,699,700,5,108,0,0,700,701,5,111,0,0,701,702,5,103,0,0, - 702,703,5,50,0,0,703,704,5,40,0,0,704,124,1,0,0,0,705,706,5,112,0,0,706, - 707,5,111,0,0,707,708,5,119,0,0,708,709,5,40,0,0,709,126,1,0,0,0,710,711, - 5,115,0,0,711,712,5,113,0,0,712,713,5,114,0,0,713,714,5,116,0,0,714,715, - 5,40,0,0,715,128,1,0,0,0,716,717,5,99,0,0,717,718,5,98,0,0,718,719,5,114, - 0,0,719,720,5,116,0,0,720,721,5,40,0,0,721,130,1,0,0,0,722,723,5,115,0, - 0,723,724,5,113,0,0,724,725,5,114,0,0,725,726,5,40,0,0,726,132,1,0,0,0, - 727,728,5,108,0,0,728,729,5,110,0,0,729,730,5,40,0,0,730,134,1,0,0,0,731, - 732,5,101,0,0,732,733,5,120,0,0,733,734,5,112,0,0,734,735,5,40,0,0,735, - 136,1,0,0,0,736,737,5,115,0,0,737,738,5,105,0,0,738,739,5,110,0,0,739, - 740,5,40,0,0,740,138,1,0,0,0,741,742,5,99,0,0,742,743,5,111,0,0,743,744, - 5,115,0,0,744,745,5,40,0,0,745,140,1,0,0,0,746,747,5,116,0,0,747,748,5, - 97,0,0,748,749,5,110,0,0,749,750,5,40,0,0,750,142,1,0,0,0,751,752,5,99, - 0,0,752,753,5,111,0,0,753,754,5,116,0,0,754,755,5,97,0,0,755,756,5,110, - 0,0,756,757,5,40,0,0,757,144,1,0,0,0,758,759,5,99,0,0,759,760,5,111,0, - 0,760,761,5,116,0,0,761,762,5,40,0,0,762,146,1,0,0,0,763,764,5,115,0,0, - 764,765,5,101,0,0,765,766,5,99,0,0,766,767,5,40,0,0,767,148,1,0,0,0,768, - 769,5,99,0,0,769,770,5,111,0,0,770,771,5,115,0,0,771,772,5,101,0,0,772, - 773,5,99,0,0,773,774,5,40,0,0,774,150,1,0,0,0,775,776,5,99,0,0,776,777, - 5,115,0,0,777,778,5,99,0,0,778,779,5,40,0,0,779,152,1,0,0,0,780,781,5, - 97,0,0,781,782,5,114,0,0,782,783,5,99,0,0,783,784,5,115,0,0,784,785,5, - 105,0,0,785,786,5,110,0,0,786,787,5,40,0,0,787,154,1,0,0,0,788,789,5,97, - 0,0,789,790,5,114,0,0,790,791,5,99,0,0,791,792,5,99,0,0,792,793,5,111, - 0,0,793,794,5,115,0,0,794,795,5,40,0,0,795,156,1,0,0,0,796,797,5,97,0, - 0,797,798,5,114,0,0,798,799,5,99,0,0,799,800,5,116,0,0,800,801,5,97,0, - 0,801,802,5,110,0,0,802,803,5,40,0,0,803,158,1,0,0,0,804,805,5,97,0,0, - 805,806,5,114,0,0,806,807,5,99,0,0,807,808,5,99,0,0,808,809,5,111,0,0, - 809,810,5,116,0,0,810,811,5,97,0,0,811,812,5,110,0,0,812,813,5,40,0,0, - 813,160,1,0,0,0,814,815,5,97,0,0,815,816,5,114,0,0,816,817,5,99,0,0,817, - 818,5,115,0,0,818,819,5,101,0,0,819,820,5,99,0,0,820,821,5,40,0,0,821, - 162,1,0,0,0,822,823,5,97,0,0,823,824,5,114,0,0,824,825,5,99,0,0,825,826, - 5,99,0,0,826,827,5,111,0,0,827,828,5,115,0,0,828,829,5,101,0,0,829,830, - 5,99,0,0,830,831,5,40,0,0,831,164,1,0,0,0,832,833,5,97,0,0,833,834,5,114, - 0,0,834,835,5,99,0,0,835,836,5,99,0,0,836,837,5,115,0,0,837,838,5,99,0, - 0,838,839,5,40,0,0,839,166,1,0,0,0,840,841,5,97,0,0,841,842,5,99,0,0,842, - 843,5,115,0,0,843,844,5,99,0,0,844,845,5,40,0,0,845,168,1,0,0,0,846,847, - 5,97,0,0,847,848,5,115,0,0,848,849,5,105,0,0,849,850,5,110,0,0,850,851, - 5,40,0,0,851,170,1,0,0,0,852,853,5,97,0,0,853,854,5,99,0,0,854,855,5,111, - 0,0,855,856,5,115,0,0,856,857,5,40,0,0,857,172,1,0,0,0,858,859,5,97,0, - 0,859,860,5,116,0,0,860,861,5,97,0,0,861,862,5,110,0,0,862,863,5,40,0, - 0,863,174,1,0,0,0,864,865,5,97,0,0,865,866,5,99,0,0,866,867,5,111,0,0, - 867,868,5,116,0,0,868,869,5,97,0,0,869,870,5,110,0,0,870,871,5,40,0,0, - 871,176,1,0,0,0,872,873,5,97,0,0,873,874,5,115,0,0,874,875,5,101,0,0,875, - 876,5,99,0,0,876,877,5,40,0,0,877,178,1,0,0,0,878,879,5,97,0,0,879,880, - 5,99,0,0,880,881,5,111,0,0,881,882,5,115,0,0,882,883,5,101,0,0,883,884, - 5,99,0,0,884,885,5,40,0,0,885,180,1,0,0,0,886,887,5,97,0,0,887,888,5,99, - 0,0,888,889,5,111,0,0,889,890,5,116,0,0,890,891,5,40,0,0,891,182,1,0,0, - 0,892,893,5,97,0,0,893,894,5,114,0,0,894,895,5,99,0,0,895,896,5,99,0,0, - 896,897,5,111,0,0,897,898,5,116,0,0,898,899,5,40,0,0,899,184,1,0,0,0,900, - 901,5,115,0,0,901,902,5,105,0,0,902,903,5,110,0,0,903,904,5,104,0,0,904, - 905,5,40,0,0,905,186,1,0,0,0,906,907,5,115,0,0,907,908,5,104,0,0,908,909, - 5,40,0,0,909,188,1,0,0,0,910,911,5,99,0,0,911,912,5,111,0,0,912,913,5, - 115,0,0,913,914,5,104,0,0,914,915,5,40,0,0,915,190,1,0,0,0,916,917,5,99, - 0,0,917,918,5,104,0,0,918,919,5,40,0,0,919,192,1,0,0,0,920,921,5,116,0, - 0,921,922,5,97,0,0,922,923,5,110,0,0,923,924,5,104,0,0,924,925,5,40,0, - 0,925,194,1,0,0,0,926,927,5,116,0,0,927,928,5,104,0,0,928,929,5,40,0,0, - 929,196,1,0,0,0,930,931,5,99,0,0,931,932,5,111,0,0,932,933,5,116,0,0,933, - 934,5,97,0,0,934,935,5,110,0,0,935,936,5,104,0,0,936,937,5,40,0,0,937, - 198,1,0,0,0,938,939,5,99,0,0,939,940,5,111,0,0,940,941,5,116,0,0,941,942, - 5,104,0,0,942,943,5,40,0,0,943,200,1,0,0,0,944,945,5,99,0,0,945,946,5, - 116,0,0,946,947,5,104,0,0,947,948,5,40,0,0,948,202,1,0,0,0,949,950,5,115, - 0,0,950,951,5,101,0,0,951,952,5,99,0,0,952,953,5,104,0,0,953,954,5,40, - 0,0,954,204,1,0,0,0,955,956,5,115,0,0,956,957,5,99,0,0,957,958,5,104,0, - 0,958,959,5,40,0,0,959,206,1,0,0,0,960,961,5,99,0,0,961,962,5,111,0,0, - 962,963,5,115,0,0,963,964,5,101,0,0,964,965,5,99,0,0,965,966,5,104,0,0, - 966,967,5,40,0,0,967,208,1,0,0,0,968,969,5,99,0,0,969,970,5,115,0,0,970, - 971,5,99,0,0,971,972,5,104,0,0,972,973,5,40,0,0,973,210,1,0,0,0,974,975, - 5,97,0,0,975,976,5,115,0,0,976,977,5,105,0,0,977,978,5,110,0,0,978,979, - 5,104,0,0,979,980,5,40,0,0,980,212,1,0,0,0,981,982,5,97,0,0,982,983,5, - 114,0,0,983,984,5,115,0,0,984,985,5,105,0,0,985,986,5,110,0,0,986,987, - 5,104,0,0,987,988,5,40,0,0,988,214,1,0,0,0,989,990,5,97,0,0,990,991,5, - 114,0,0,991,992,5,115,0,0,992,993,5,104,0,0,993,994,5,40,0,0,994,216,1, - 0,0,0,995,996,5,97,0,0,996,997,5,114,0,0,997,998,5,99,0,0,998,999,5,115, - 0,0,999,1000,5,105,0,0,1000,1001,5,110,0,0,1001,1002,5,104,0,0,1002,1003, - 5,40,0,0,1003,218,1,0,0,0,1004,1005,5,97,0,0,1005,1006,5,99,0,0,1006,1007, - 5,111,0,0,1007,1008,5,115,0,0,1008,1009,5,104,0,0,1009,1010,5,40,0,0,1010, - 220,1,0,0,0,1011,1012,5,97,0,0,1012,1013,5,114,0,0,1013,1014,5,99,0,0, - 1014,1015,5,111,0,0,1015,1016,5,115,0,0,1016,1017,5,104,0,0,1017,1018, - 5,40,0,0,1018,222,1,0,0,0,1019,1020,5,97,0,0,1020,1021,5,114,0,0,1021, - 1022,5,99,0,0,1022,1023,5,104,0,0,1023,1024,5,40,0,0,1024,224,1,0,0,0, - 1025,1026,5,97,0,0,1026,1027,5,114,0,0,1027,1028,5,99,0,0,1028,1029,5, - 99,0,0,1029,1030,5,111,0,0,1030,1031,5,115,0,0,1031,1032,5,104,0,0,1032, - 1033,5,40,0,0,1033,226,1,0,0,0,1034,1035,5,97,0,0,1035,1036,5,116,0,0, - 1036,1037,5,97,0,0,1037,1038,5,110,0,0,1038,1039,5,104,0,0,1039,1040,5, - 40,0,0,1040,228,1,0,0,0,1041,1042,5,97,0,0,1042,1043,5,114,0,0,1043,1044, - 5,116,0,0,1044,1045,5,97,0,0,1045,1046,5,110,0,0,1046,1047,5,104,0,0,1047, - 1048,5,40,0,0,1048,230,1,0,0,0,1049,1050,5,97,0,0,1050,1051,5,114,0,0, - 1051,1052,5,116,0,0,1052,1053,5,104,0,0,1053,1054,5,40,0,0,1054,232,1, - 0,0,0,1055,1056,5,97,0,0,1056,1057,5,114,0,0,1057,1058,5,99,0,0,1058,1059, - 5,116,0,0,1059,1060,5,97,0,0,1060,1061,5,110,0,0,1061,1062,5,104,0,0,1062, - 1063,5,40,0,0,1063,234,1,0,0,0,1064,1065,5,97,0,0,1065,1066,5,99,0,0,1066, - 1067,5,111,0,0,1067,1068,5,116,0,0,1068,1069,5,104,0,0,1069,1070,5,40, - 0,0,1070,236,1,0,0,0,1071,1072,5,97,0,0,1072,1073,5,114,0,0,1073,1074, - 5,99,0,0,1074,1075,5,111,0,0,1075,1076,5,116,0,0,1076,1077,5,104,0,0,1077, - 1078,5,40,0,0,1078,238,1,0,0,0,1079,1080,5,97,0,0,1080,1081,5,99,0,0,1081, - 1082,5,111,0,0,1082,1083,5,116,0,0,1083,1084,5,97,0,0,1084,1085,5,110, - 0,0,1085,1086,5,104,0,0,1086,1087,5,40,0,0,1087,240,1,0,0,0,1088,1089, - 5,97,0,0,1089,1090,5,114,0,0,1090,1091,5,99,0,0,1091,1092,5,111,0,0,1092, - 1093,5,116,0,0,1093,1094,5,97,0,0,1094,1095,5,110,0,0,1095,1096,5,104, - 0,0,1096,1097,5,40,0,0,1097,242,1,0,0,0,1098,1099,5,97,0,0,1099,1100,5, - 114,0,0,1100,1101,5,99,0,0,1101,1102,5,116,0,0,1102,1103,5,104,0,0,1103, - 1104,5,40,0,0,1104,244,1,0,0,0,1105,1106,5,97,0,0,1106,1107,5,114,0,0, - 1107,1108,5,99,0,0,1108,1109,5,99,0,0,1109,1110,5,111,0,0,1110,1111,5, - 116,0,0,1111,1112,5,97,0,0,1112,1113,5,110,0,0,1113,1114,5,104,0,0,1114, - 1115,5,40,0,0,1115,246,1,0,0,0,1116,1117,5,97,0,0,1117,1118,5,115,0,0, - 1118,1119,5,101,0,0,1119,1120,5,99,0,0,1120,1121,5,104,0,0,1121,1122,5, - 40,0,0,1122,248,1,0,0,0,1123,1124,5,97,0,0,1124,1125,5,114,0,0,1125,1126, - 5,115,0,0,1126,1127,5,101,0,0,1127,1128,5,99,0,0,1128,1129,5,104,0,0,1129, - 1130,5,40,0,0,1130,250,1,0,0,0,1131,1132,5,97,0,0,1132,1133,5,114,0,0, - 1133,1134,5,115,0,0,1134,1135,5,99,0,0,1135,1136,5,104,0,0,1136,1137,5, - 40,0,0,1137,252,1,0,0,0,1138,1139,5,97,0,0,1139,1140,5,114,0,0,1140,1141, - 5,99,0,0,1141,1142,5,115,0,0,1142,1143,5,101,0,0,1143,1144,5,99,0,0,1144, - 1145,5,104,0,0,1145,1146,5,40,0,0,1146,254,1,0,0,0,1147,1148,5,97,0,0, - 1148,1149,5,99,0,0,1149,1150,5,111,0,0,1150,1151,5,115,0,0,1151,1152,5, - 101,0,0,1152,1153,5,99,0,0,1153,1154,5,104,0,0,1154,1155,5,40,0,0,1155, - 256,1,0,0,0,1156,1157,5,97,0,0,1157,1158,5,114,0,0,1158,1159,5,99,0,0, - 1159,1160,5,111,0,0,1160,1161,5,115,0,0,1161,1162,5,101,0,0,1162,1163, - 5,99,0,0,1163,1164,5,104,0,0,1164,1165,5,40,0,0,1165,258,1,0,0,0,1166, - 1167,5,97,0,0,1167,1168,5,114,0,0,1168,1169,5,99,0,0,1169,1170,5,115,0, - 0,1170,1171,5,99,0,0,1171,1172,5,104,0,0,1172,1173,5,40,0,0,1173,260,1, - 0,0,0,1174,1175,5,97,0,0,1175,1176,5,114,0,0,1176,1177,5,99,0,0,1177,1178, - 5,99,0,0,1178,1179,5,111,0,0,1179,1180,5,115,0,0,1180,1181,5,101,0,0,1181, - 1182,5,99,0,0,1182,1183,5,104,0,0,1183,1184,5,40,0,0,1184,262,1,0,0,0, - 1185,1186,5,97,0,0,1186,1187,5,99,0,0,1187,1188,5,115,0,0,1188,1189,5, - 99,0,0,1189,1190,5,104,0,0,1190,1191,5,40,0,0,1191,264,1,0,0,0,1192,1193, - 5,102,0,0,1193,1194,5,97,0,0,1194,1195,5,99,0,0,1195,1196,5,116,0,0,1196, - 1197,5,111,0,0,1197,1198,5,114,0,0,1198,1199,5,105,0,0,1199,1200,5,97, - 0,0,1200,1201,5,108,0,0,1201,1202,5,40,0,0,1202,266,1,0,0,0,1203,1204, - 5,103,0,0,1204,1205,5,97,0,0,1205,1206,5,109,0,0,1206,1207,5,109,0,0,1207, - 1208,5,97,0,0,1208,1209,5,40,0,0,1209,268,1,0,0,0,1210,1211,5,100,0,0, - 1211,1212,5,101,0,0,1212,1213,5,114,0,0,1213,1214,5,105,0,0,1214,1215, - 5,118,0,0,1215,1216,5,97,0,0,1216,1217,5,116,0,0,1217,1218,5,105,0,0,1218, - 1219,5,118,0,0,1219,1220,5,101,0,0,1220,1221,5,40,0,0,1221,270,1,0,0,0, - 1222,1223,5,105,0,0,1223,1224,5,110,0,0,1224,1225,5,116,0,0,1225,1226, - 5,101,0,0,1226,1227,5,103,0,0,1227,1228,5,114,0,0,1228,1229,5,97,0,0,1229, - 1230,5,108,0,0,1230,1231,5,40,0,0,1231,272,1,0,0,0,1232,1233,5,108,0,0, - 1233,1234,5,105,0,0,1234,1235,5,109,0,0,1235,1236,5,105,0,0,1236,1237, - 5,116,0,0,1237,1238,5,40,0,0,1238,274,1,0,0,0,1239,1240,5,108,0,0,1240, - 1241,5,105,0,0,1241,1242,5,109,0,0,1242,1243,5,105,0,0,1243,1244,5,116, - 0,0,1244,1245,5,108,0,0,1245,1246,5,101,0,0,1246,1247,5,102,0,0,1247,1248, - 5,116,0,0,1248,1249,5,40,0,0,1249,276,1,0,0,0,1250,1251,5,108,0,0,1251, - 1252,5,105,0,0,1252,1253,5,109,0,0,1253,1254,5,105,0,0,1254,1255,5,116, - 0,0,1255,1256,5,114,0,0,1256,1257,5,105,0,0,1257,1258,5,103,0,0,1258,1259, - 5,104,0,0,1259,1260,5,116,0,0,1260,1261,5,40,0,0,1261,278,1,0,0,0,1262, - 1263,5,115,0,0,1263,1264,5,117,0,0,1264,1265,5,109,0,0,1265,1266,5,40, - 0,0,1266,280,1,0,0,0,1267,1268,5,112,0,0,1268,1269,5,114,0,0,1269,1270, - 5,111,0,0,1270,1271,5,100,0,0,1271,1272,5,117,0,0,1272,1273,5,99,0,0,1273, - 1274,5,116,0,0,1274,1275,5,40,0,0,1275,282,1,0,0,0,1276,1277,5,115,0,0, - 1277,1278,5,105,0,0,1278,1279,5,103,0,0,1279,1280,5,110,0,0,1280,1281, - 5,117,0,0,1281,1282,5,109,0,0,1282,1283,5,40,0,0,1283,284,1,0,0,0,1284, - 1285,5,115,0,0,1285,1286,5,103,0,0,1286,1287,5,110,0,0,1287,1288,5,40, - 0,0,1288,286,1,0,0,0,1289,1290,5,115,0,0,1290,1291,5,105,0,0,1291,1292, - 5,103,0,0,1292,1293,5,110,0,0,1293,1294,5,40,0,0,1294,288,1,0,0,0,1295, - 1296,5,97,0,0,1296,1297,5,98,0,0,1297,1298,5,115,0,0,1298,1299,5,40,0, - 0,1299,290,1,0,0,0,1300,1301,5,112,0,0,1301,1302,5,104,0,0,1302,1303,5, - 105,0,0,1303,1304,5,40,0,0,1304,292,1,0,0,0,1305,1306,5,112,0,0,1306,1307, - 5,114,0,0,1307,1308,5,105,0,0,1308,1309,5,109,0,0,1309,1310,5,101,0,0, - 1310,1311,5,40,0,0,1311,294,1,0,0,0,1312,1313,5,118,0,0,1313,1314,5,97, - 0,0,1314,1315,5,108,0,0,1315,1316,5,117,0,0,1316,1317,5,97,0,0,1317,1318, - 5,116,0,0,1318,1319,5,105,0,0,1319,1320,5,111,0,0,1320,1321,5,110,0,0, - 1321,1322,5,40,0,0,1322,296,1,0,0,0,1323,1324,5,99,0,0,1324,1325,5,97, - 0,0,1325,1326,5,114,0,0,1326,1327,5,100,0,0,1327,1328,5,40,0,0,1328,298, - 1,0,0,0,1329,1330,5,112,0,0,1330,1331,5,111,0,0,1331,1332,5,119,0,0,1332, - 1333,5,101,0,0,1333,1334,5,114,0,0,1334,1335,5,115,0,0,1335,1336,5,101, - 0,0,1336,1337,5,116,0,0,1337,1338,5,40,0,0,1338,300,1,0,0,0,1339,1340, - 5,117,0,0,1340,1341,5,110,0,0,1341,1342,5,105,0,0,1342,1343,5,111,0,0, - 1343,1344,5,110,0,0,1344,1345,5,40,0,0,1345,302,1,0,0,0,1346,1347,5,105, - 0,0,1347,1348,5,110,0,0,1348,1349,5,116,0,0,1349,1350,5,101,0,0,1350,1351, - 5,114,0,0,1351,1352,5,115,0,0,1352,1353,5,101,0,0,1353,1354,5,99,0,0,1354, - 1355,5,116,0,0,1355,1356,5,105,0,0,1356,1357,5,111,0,0,1357,1358,5,110, - 0,0,1358,1359,5,40,0,0,1359,304,1,0,0,0,1360,1361,5,99,0,0,1361,1362,5, - 111,0,0,1362,1363,5,109,0,0,1363,1364,5,112,0,0,1364,1365,5,108,0,0,1365, - 1366,5,101,0,0,1366,1367,5,109,0,0,1367,1368,5,101,0,0,1368,1369,5,110, - 0,0,1369,1370,5,116,0,0,1370,1371,5,40,0,0,1371,306,1,0,0,0,1372,1373, - 5,105,0,0,1373,1374,5,109,0,0,1374,1375,5,97,0,0,1375,1376,5,103,0,0,1376, - 1377,5,101,0,0,1377,1378,5,40,0,0,1378,308,1,0,0,0,1379,1380,5,112,0,0, - 1380,1381,5,114,0,0,1381,1382,5,101,0,0,1382,1383,5,105,0,0,1383,1384, - 5,109,0,0,1384,1385,5,97,0,0,1385,1386,5,103,0,0,1386,1387,5,101,0,0,1387, - 1388,5,40,0,0,1388,310,1,0,0,0,1389,1390,5,102,0,0,1390,1391,5,108,0,0, - 1391,1392,5,111,0,0,1392,1393,5,111,0,0,1393,1394,5,114,0,0,1394,1395, - 5,40,0,0,1395,312,1,0,0,0,1396,1397,5,99,0,0,1397,1398,5,101,0,0,1398, - 1399,5,105,0,0,1399,1400,5,108,0,0,1400,1401,5,40,0,0,1401,314,1,0,0,0, - 1402,1403,5,99,0,0,1403,1404,5,101,0,0,1404,1405,5,105,0,0,1405,1406,5, - 108,0,0,1406,1407,5,105,0,0,1407,1408,5,110,0,0,1408,1409,5,103,0,0,1409, - 1410,5,40,0,0,1410,316,1,0,0,0,1411,1412,5,114,0,0,1412,1413,5,111,0,0, - 1413,1414,5,117,0,0,1414,1415,5,110,0,0,1415,1416,5,100,0,0,1416,1417, - 5,40,0,0,1417,318,1,0,0,0,1418,1419,5,109,0,0,1419,1420,5,105,0,0,1420, - 1421,5,110,0,0,1421,1422,5,40,0,0,1422,320,1,0,0,0,1423,1424,5,109,0,0, - 1424,1425,5,97,0,0,1425,1426,5,120,0,0,1426,1427,5,40,0,0,1427,322,1,0, - 0,0,1428,1429,5,97,0,0,1429,1430,5,114,0,0,1430,1431,5,103,0,0,1431,1432, - 5,109,0,0,1432,1433,5,97,0,0,1433,1434,5,120,0,0,1434,1435,5,40,0,0,1435, - 324,1,0,0,0,1436,1437,5,97,0,0,1437,1438,5,114,0,0,1438,1439,5,103,0,0, - 1439,1440,5,109,0,0,1440,1441,5,105,0,0,1441,1442,5,110,0,0,1442,1443, - 5,40,0,0,1443,326,1,0,0,0,1444,1445,5,103,0,0,1445,1446,5,99,0,0,1446, - 1447,5,100,0,0,1447,1448,5,40,0,0,1448,328,1,0,0,0,1449,1450,5,108,0,0, - 1450,1451,5,99,0,0,1451,1452,5,109,0,0,1452,1453,5,40,0,0,1453,330,1,0, - 0,0,1454,1455,5,98,0,0,1455,1456,5,105,0,0,1456,1457,5,110,0,0,1457,1458, - 5,111,0,0,1458,1459,5,109,0,0,1459,1460,5,105,0,0,1460,1461,5,97,0,0,1461, - 1462,5,108,0,0,1462,1463,5,40,0,0,1463,332,1,0,0,0,1464,1465,5,105,0,0, - 1465,1466,5,118,0,0,1466,1467,5,101,0,0,1467,1468,5,114,0,0,1468,1469, - 5,115,0,0,1469,1470,5,111,0,0,1470,1471,5,110,0,0,1471,1472,5,40,0,0,1472, - 334,1,0,0,0,1473,1474,5,97,0,0,1474,1475,5,108,0,0,1475,1476,5,101,0,0, - 1476,1477,5,112,0,0,1477,1478,5,104,0,0,1478,1479,5,40,0,0,1479,336,1, - 0,0,0,1480,1481,5,101,0,0,1481,1482,5,114,0,0,1482,1483,5,102,0,0,1483, - 1484,5,40,0,0,1484,338,1,0,0,0,1485,1486,5,101,0,0,1486,1487,5,114,0,0, - 1487,1488,5,102,0,0,1488,1489,5,99,0,0,1489,1490,5,40,0,0,1490,340,1,0, - 0,0,1491,1492,5,101,0,0,1492,1493,5,114,0,0,1493,1494,5,102,0,0,1494,1495, - 5,105,0,0,1495,1496,5,40,0,0,1496,342,1,0,0,0,1497,1498,5,69,0,0,1498, - 1499,5,105,0,0,1499,1500,5,40,0,0,1500,344,1,0,0,0,1501,1502,5,108,0,0, - 1502,1503,5,105,0,0,1503,1504,5,40,0,0,1504,346,1,0,0,0,1505,1506,5,112, - 0,0,1506,1507,5,111,0,0,1507,1508,5,108,0,0,1508,1509,5,121,0,0,1509,1510, - 5,103,0,0,1510,1511,5,97,0,0,1511,1512,5,109,0,0,1512,1513,5,109,0,0,1513, - 1514,5,97,0,0,1514,1515,5,40,0,0,1515,348,1,0,0,0,1516,1517,5,100,0,0, - 1517,1518,5,105,0,0,1518,1519,5,103,0,0,1519,1520,5,97,0,0,1520,1521,5, - 109,0,0,1521,1522,5,109,0,0,1522,1523,5,97,0,0,1523,1524,5,40,0,0,1524, - 350,1,0,0,0,1525,1526,5,83,0,0,1526,1527,5,105,0,0,1527,1528,5,40,0,0, - 1528,352,1,0,0,0,1529,1530,5,67,0,0,1530,1531,5,105,0,0,1531,1532,5,40, - 0,0,1532,354,1,0,0,0,1533,1534,5,83,0,0,1534,1535,5,104,0,0,1535,1536, - 5,105,0,0,1536,1537,5,40,0,0,1537,356,1,0,0,0,1538,1539,5,67,0,0,1539, - 1540,5,104,0,0,1540,1541,5,105,0,0,1541,1542,5,40,0,0,1542,358,1,0,0,0, - 1543,1544,5,100,0,0,1544,1545,5,101,0,0,1545,1546,5,116,0,0,1546,1547, - 5,40,0,0,1547,360,1,0,0,0,1548,1549,5,116,0,0,1549,1550,5,114,0,0,1550, - 1551,5,97,0,0,1551,1552,5,110,0,0,1552,1553,5,115,0,0,1553,1554,5,112, - 0,0,1554,1555,5,111,0,0,1555,1556,5,115,0,0,1556,1557,5,101,0,0,1557,1558, - 5,40,0,0,1558,362,1,0,0,0,1559,1560,5,100,0,0,1560,1561,5,111,0,0,1561, - 1562,5,116,0,0,1562,1563,5,40,0,0,1563,364,1,0,0,0,1564,1565,5,99,0,0, - 1565,1566,5,114,0,0,1566,1567,5,111,0,0,1567,1568,5,115,0,0,1568,1569, - 5,115,0,0,1569,1570,5,40,0,0,1570,366,1,0,0,0,1571,1572,5,114,0,0,1572, - 1573,5,101,0,0,1573,1574,5,115,0,0,1574,1575,5,117,0,0,1575,1576,5,108, - 0,0,1576,1577,5,116,0,0,1577,1578,5,97,0,0,1578,1579,5,110,0,0,1579,1580, - 5,116,0,0,1580,1581,5,40,0,0,1581,368,1,0,0,0,1582,1583,5,99,0,0,1583, - 1584,5,111,0,0,1584,1585,5,110,0,0,1585,1586,5,106,0,0,1586,1587,5,117, - 0,0,1587,1588,5,103,0,0,1588,1589,5,97,0,0,1589,1590,5,116,0,0,1590,1591, - 5,101,0,0,1591,1592,5,40,0,0,1592,370,1,0,0,0,1593,1594,5,99,0,0,1594, - 1595,5,111,0,0,1595,1596,5,110,0,0,1596,1597,5,106,0,0,1597,1598,5,40, - 0,0,1598,372,1,0,0,0,1599,1600,5,97,0,0,1600,1601,5,114,0,0,1601,1602, - 5,103,0,0,1602,1603,5,40,0,0,1603,374,1,0,0,0,1604,1605,5,82,0,0,1605, - 1606,5,101,0,0,1606,1607,5,40,0,0,1607,376,1,0,0,0,1608,1609,5,73,0,0, - 1609,1610,5,109,0,0,1610,1611,5,40,0,0,1611,378,1,0,0,0,1612,1613,5,114, - 0,0,1613,1614,5,101,0,0,1614,1615,5,40,0,0,1615,380,1,0,0,0,1616,1617, - 5,114,0,0,1617,1618,5,101,0,0,1618,1619,5,97,0,0,1619,1620,5,108,0,0,1620, - 1621,5,40,0,0,1621,382,1,0,0,0,1622,1623,5,105,0,0,1623,1624,5,109,0,0, - 1624,1625,5,40,0,0,1625,384,1,0,0,0,1626,1627,5,105,0,0,1627,1628,5,109, - 0,0,1628,1629,5,97,0,0,1629,1630,5,103,0,0,1630,1631,5,40,0,0,1631,386, - 1,0,0,0,1632,1633,5,116,0,0,1633,1634,5,114,0,0,1634,1635,5,117,0,0,1635, - 1636,5,110,0,0,1636,1637,5,99,0,0,1637,1638,5,40,0,0,1638,388,1,0,0,0, - 1639,1640,5,122,0,0,1640,1641,5,101,0,0,1641,1642,5,116,0,0,1642,1643, - 5,97,0,0,1643,1644,5,40,0,0,1644,390,1,0,0,0,1645,1646,5,114,0,0,1646, - 1647,5,105,0,0,1647,1648,5,101,0,0,1648,1649,5,109,0,0,1649,1650,5,97, - 0,0,1650,1651,5,110,0,0,1651,1652,5,110,0,0,1652,1653,5,122,0,0,1653,1654, - 5,101,0,0,1654,1655,5,116,0,0,1655,1656,5,97,0,0,1656,1657,5,40,0,0,1657, - 392,1,0,0,0,1658,1659,5,104,0,0,1659,1660,5,117,0,0,1660,1661,5,114,0, - 0,1661,1662,5,119,0,0,1662,1663,5,105,0,0,1663,1664,5,116,0,0,1664,1665, - 5,122,0,0,1665,1666,5,122,0,0,1666,1667,5,101,0,0,1667,1668,5,116,0,0, - 1668,1669,5,97,0,0,1669,1670,5,40,0,0,1670,394,1,0,0,0,1671,1672,5,108, - 0,0,1672,1673,5,97,0,0,1673,1674,5,109,0,0,1674,1675,5,98,0,0,1675,1676, - 5,101,0,0,1676,1677,5,114,0,0,1677,1678,5,116,0,0,1678,1679,5,119,0,0, - 1679,1680,5,40,0,0,1680,396,1,0,0,0,1681,1682,5,112,0,0,1682,1683,5,114, - 0,0,1683,1684,5,111,0,0,1684,1685,5,100,0,0,1685,1686,5,117,0,0,1686,1687, - 5,99,0,0,1687,1688,5,116,0,0,1688,1689,5,108,0,0,1689,1690,5,111,0,0,1690, - 1691,5,103,0,0,1691,1692,5,40,0,0,1692,398,1,0,0,0,1693,1694,5,109,0,0, - 1694,1695,5,111,0,0,1695,1696,5,98,0,0,1696,1697,5,105,0,0,1697,1698,5, - 117,0,0,1698,1699,5,115,0,0,1699,1700,5,40,0,0,1700,400,1,0,0,0,1701,1702, - 5,109,0,0,1702,1703,5,111,0,0,1703,1704,5,101,0,0,1704,1705,5,98,0,0,1705, - 1706,5,105,0,0,1706,1707,5,117,0,0,1707,1708,5,115,0,0,1708,1709,5,109, - 0,0,1709,1710,5,117,0,0,1710,1711,5,40,0,0,1711,402,1,0,0,0,1712,1713, - 5,100,0,0,1713,1714,5,105,0,0,1714,1715,5,118,0,0,1715,1716,5,105,0,0, - 1716,1717,5,115,0,0,1717,1718,5,111,0,0,1718,1719,5,114,0,0,1719,1720, - 5,115,0,0,1720,1721,5,105,0,0,1721,1722,5,103,0,0,1722,1723,5,109,0,0, - 1723,1724,5,97,0,0,1724,1725,5,40,0,0,1725,404,1,0,0,0,1726,1727,5,112, - 0,0,1727,1728,5,114,0,0,1728,1729,5,105,0,0,1729,1730,5,109,0,0,1730,1731, - 5,101,0,0,1731,1732,5,110,0,0,1732,1733,5,117,0,0,1733,1734,5,40,0,0,1734, - 406,1,0,0,0,1735,1736,5,112,0,0,1736,1737,5,114,0,0,1737,1738,5,105,0, - 0,1738,1739,5,109,0,0,1739,1740,5,101,0,0,1740,1741,5,111,0,0,1741,1742, - 5,109,0,0,1742,1743,5,101,0,0,1743,1744,5,103,0,0,1744,1745,5,97,0,0,1745, - 1746,5,40,0,0,1746,408,1,0,0,0,1747,1748,5,112,0,0,1748,1749,5,114,0,0, - 1749,1750,5,105,0,0,1750,1751,5,109,0,0,1751,1752,5,101,0,0,1752,1753, - 5,112,0,0,1753,1754,5,105,0,0,1754,1755,5,40,0,0,1755,410,1,0,0,0,1756, - 1757,5,104,0,0,1757,1758,5,97,0,0,1758,1759,5,114,0,0,1759,1760,5,109, - 0,0,1760,1761,5,111,0,0,1761,1762,5,110,0,0,1762,1763,5,105,0,0,1763,1764, - 5,99,0,0,1764,1765,5,110,0,0,1765,1766,5,117,0,0,1766,1767,5,109,0,0,1767, - 1768,5,98,0,0,1768,1769,5,101,0,0,1769,1770,5,114,0,0,1770,1771,5,40,0, - 0,1771,412,1,0,0,0,1772,1773,5,99,0,0,1773,1774,5,97,0,0,1774,1775,5,116, - 0,0,1775,1776,5,97,0,0,1776,1777,5,108,0,0,1777,1778,5,97,0,0,1778,1779, - 5,110,0,0,1779,1780,5,110,0,0,1780,1781,5,117,0,0,1781,1782,5,109,0,0, - 1782,1783,5,98,0,0,1783,1784,5,101,0,0,1784,1785,5,114,0,0,1785,1786,5, - 40,0,0,1786,414,1,0,0,0,1787,1788,5,109,0,0,1788,1789,5,117,0,0,1789,1790, - 5,108,0,0,1790,1791,5,116,0,0,1791,1792,5,105,0,0,1792,1793,5,110,0,0, - 1793,1794,5,111,0,0,1794,1795,5,109,0,0,1795,1796,5,105,0,0,1796,1797, - 5,97,0,0,1797,1798,5,108,0,0,1798,1799,5,40,0,0,1799,416,1,0,0,0,1800, - 1801,5,102,0,0,1801,1802,5,97,0,0,1802,1803,5,108,0,0,1803,1804,5,108, - 0,0,1804,1805,5,105,0,0,1805,1806,5,110,0,0,1806,1807,5,103,0,0,1807,1808, - 5,102,0,0,1808,1809,5,97,0,0,1809,1810,5,99,0,0,1810,1811,5,116,0,0,1811, - 1812,5,111,0,0,1812,1813,5,114,0,0,1813,1814,5,105,0,0,1814,1815,5,97, - 0,0,1815,1816,5,108,0,0,1816,1817,5,40,0,0,1817,418,1,0,0,0,1818,1819, - 5,102,0,0,1819,1820,5,97,0,0,1820,1821,5,99,0,0,1821,1822,5,116,0,0,1822, - 1823,5,111,0,0,1823,1824,5,114,0,0,1824,1825,5,105,0,0,1825,1826,5,97, - 0,0,1826,1827,5,108,0,0,1827,1828,5,112,0,0,1828,1829,5,111,0,0,1829,1830, - 5,119,0,0,1830,1831,5,101,0,0,1831,1832,5,114,0,0,1832,1833,5,40,0,0,1833, - 420,1,0,0,0,1834,1835,5,114,0,0,1835,1836,5,105,0,0,1836,1837,5,115,0, - 0,1837,1838,5,105,0,0,1838,1839,5,110,0,0,1839,1840,5,103,0,0,1840,1841, - 5,102,0,0,1841,1842,5,97,0,0,1842,1843,5,99,0,0,1843,1844,5,116,0,0,1844, - 1845,5,111,0,0,1845,1846,5,114,0,0,1846,1847,5,105,0,0,1847,1848,5,97, - 0,0,1848,1849,5,108,0,0,1849,1850,5,40,0,0,1850,422,1,0,0,0,1851,1852, - 5,102,0,0,1852,1853,5,111,0,0,1853,1854,5,114,0,0,1854,1855,5,119,0,0, - 1855,1856,5,97,0,0,1856,1857,5,114,0,0,1857,1858,5,100,0,0,1858,1859,5, - 100,0,0,1859,1860,5,105,0,0,1860,1861,5,102,0,0,1861,1862,5,102,0,0,1862, - 1863,5,101,0,0,1863,1864,5,114,0,0,1864,1865,5,101,0,0,1865,1866,5,110, - 0,0,1866,1867,5,99,0,0,1867,1868,5,101,0,0,1868,1869,5,40,0,0,1869,424, - 1,0,0,0,1870,1871,5,108,0,0,1871,1872,5,97,0,0,1872,1873,5,112,0,0,1873, - 1874,5,108,0,0,1874,1875,5,97,0,0,1875,1876,5,99,0,0,1876,1877,5,105,0, - 0,1877,1878,5,97,0,0,1878,1879,5,110,0,0,1879,1880,5,40,0,0,1880,426,1, - 0,0,0,1881,1882,5,106,0,0,1882,1883,5,97,0,0,1883,1884,5,99,0,0,1884,1885, - 5,111,0,0,1885,1886,5,98,0,0,1886,1887,5,105,0,0,1887,1888,5,97,0,0,1888, - 1889,5,110,0,0,1889,1890,5,40,0,0,1890,428,1,0,0,0,1891,1892,5,104,0,0, - 1892,1893,5,101,0,0,1893,1894,5,115,0,0,1894,1895,5,115,0,0,1895,1896, - 5,105,0,0,1896,1897,5,97,0,0,1897,1898,5,110,0,0,1898,1899,5,40,0,0,1899, - 430,1,0,0,0,1900,1901,5,104,0,0,1901,1902,5,101,0,0,1902,1903,5,97,0,0, - 1903,1904,5,118,0,0,1904,1905,5,105,0,0,1905,1906,5,115,0,0,1906,1907, - 5,105,0,0,1907,1908,5,100,0,0,1908,1909,5,101,0,0,1909,1910,5,40,0,0,1910, - 432,1,0,0,0,1911,1912,5,117,0,0,1912,1913,5,110,0,0,1913,1914,5,105,0, - 0,1914,1915,5,116,0,0,1915,1916,5,115,0,0,1916,1917,5,116,0,0,1917,1918, - 5,101,0,0,1918,1919,5,112,0,0,1919,1920,5,40,0,0,1920,434,1,0,0,0,1921, - 1922,5,105,0,0,1922,1923,5,115,0,0,1923,1924,5,112,0,0,1924,1925,5,114, - 0,0,1925,1926,5,105,0,0,1926,1927,5,109,0,0,1927,1928,5,101,0,0,1928,1929, - 5,40,0,0,1929,436,1,0,0,0,1930,1931,5,112,0,0,1931,1932,5,111,0,0,1932, - 1933,5,99,0,0,1933,1934,5,104,0,0,1934,1935,5,104,0,0,1935,1936,5,97,0, - 0,1936,1937,5,109,0,0,1937,1938,5,109,0,0,1938,1939,5,101,0,0,1939,1940, - 5,114,0,0,1940,1941,5,40,0,0,1941,438,1,0,0,0,1942,1943,5,100,0,0,1943, - 1944,5,111,0,0,1944,1945,5,117,0,0,1945,1946,5,98,0,0,1946,1947,5,108, - 0,0,1947,1948,5,101,0,0,1948,1949,5,102,0,0,1949,1950,5,97,0,0,1950,1951, - 5,99,0,0,1951,1952,5,116,0,0,1952,1953,5,111,0,0,1953,1954,5,114,0,0,1954, - 1955,5,105,0,0,1955,1956,5,97,0,0,1956,1957,5,108,0,0,1957,1958,5,40,0, - 0,1958,440,1,0,0,0,1959,1960,5,102,0,0,1960,1961,5,97,0,0,1961,1962,5, - 99,0,0,1962,1963,5,116,0,0,1963,1964,5,111,0,0,1964,1965,5,114,0,0,1965, - 1966,5,105,0,0,1966,1967,5,97,0,0,1967,1968,5,108,0,0,1968,1969,5,50,0, - 0,1969,1970,5,40,0,0,1970,442,1,0,0,0,1971,1972,5,102,0,0,1972,1973,5, - 114,0,0,1973,1974,5,97,0,0,1974,1975,5,99,0,0,1975,1976,5,116,0,0,1976, - 1977,5,105,0,0,1977,1978,5,111,0,0,1978,1979,5,110,0,0,1979,1980,5,97, - 0,0,1980,1981,5,108,0,0,1981,1982,5,112,0,0,1982,1983,5,97,0,0,1983,1984, - 5,114,0,0,1984,1985,5,116,0,0,1985,1986,5,40,0,0,1986,444,1,0,0,0,1987, - 1988,5,113,0,0,1988,1989,5,117,0,0,1989,1990,5,111,0,0,1990,1991,5,116, - 0,0,1991,1992,5,105,0,0,1992,1993,5,101,0,0,1993,1994,5,110,0,0,1994,1995, - 5,116,0,0,1995,1996,5,40,0,0,1996,446,1,0,0,0,1997,1998,5,100,0,0,1998, - 1999,5,111,0,0,1999,2000,5,109,0,0,2000,2001,5,97,0,0,2001,2002,5,105, - 0,0,2002,2003,5,110,0,0,2003,2004,5,40,0,0,2004,448,1,0,0,0,2005,2006, - 5,112,0,0,2006,2007,5,105,0,0,2007,2008,5,101,0,0,2008,2009,5,99,0,0,2009, - 2010,5,101,0,0,2010,2011,5,119,0,0,2011,2012,5,105,0,0,2012,2013,5,115, - 0,0,2013,2014,5,101,0,0,2014,2015,5,40,0,0,2015,450,1,0,0,0,2016,2017, - 5,97,0,0,2017,2018,5,112,0,0,2018,2019,5,112,0,0,2019,2020,5,108,0,0,2020, - 2021,5,121,0,0,2021,2022,5,40,0,0,2022,452,1,0,0,0,2023,2024,5,108,0,0, - 2024,2025,5,97,0,0,2025,2026,5,109,0,0,2026,2027,5,98,0,0,2027,2028,5, - 100,0,0,2028,2029,5,97,0,0,2029,2030,5,40,0,0,2030,454,1,0,0,0,2031,2033, - 5,13,0,0,2032,2031,1,0,0,0,2032,2033,1,0,0,0,2033,2034,1,0,0,0,2034,2036, - 5,10,0,0,2035,2032,1,0,0,0,2036,2037,1,0,0,0,2037,2035,1,0,0,0,2037,2038, - 1,0,0,0,2038,2039,1,0,0,0,2039,2040,6,227,0,0,2040,456,1,0,0,0,2041,2043, - 7,0,0,0,2042,2044,7,1,0,0,2043,2042,1,0,0,0,2043,2044,1,0,0,0,2044,2046, - 1,0,0,0,2045,2047,2,48,57,0,2046,2045,1,0,0,0,2047,2048,1,0,0,0,2048,2046, - 1,0,0,0,2048,2049,1,0,0,0,2049,458,1,0,0,0,2050,2052,2,48,57,0,2051,2050, - 1,0,0,0,2052,2053,1,0,0,0,2053,2051,1,0,0,0,2053,2054,1,0,0,0,2054,2055, - 1,0,0,0,2055,2059,5,46,0,0,2056,2058,2,48,57,0,2057,2056,1,0,0,0,2058, - 2061,1,0,0,0,2059,2057,1,0,0,0,2059,2060,1,0,0,0,2060,2063,1,0,0,0,2061, - 2059,1,0,0,0,2062,2064,3,457,228,0,2063,2062,1,0,0,0,2063,2064,1,0,0,0, - 2064,2066,1,0,0,0,2065,2067,5,105,0,0,2066,2065,1,0,0,0,2066,2067,1,0, - 0,0,2067,2084,1,0,0,0,2068,2070,5,46,0,0,2069,2068,1,0,0,0,2069,2070,1, - 0,0,0,2070,2072,1,0,0,0,2071,2073,2,48,57,0,2072,2071,1,0,0,0,2073,2074, - 1,0,0,0,2074,2072,1,0,0,0,2074,2075,1,0,0,0,2075,2077,1,0,0,0,2076,2078, - 3,457,228,0,2077,2076,1,0,0,0,2077,2078,1,0,0,0,2078,2080,1,0,0,0,2079, - 2081,5,105,0,0,2080,2079,1,0,0,0,2080,2081,1,0,0,0,2081,2084,1,0,0,0,2082, - 2084,5,105,0,0,2083,2051,1,0,0,0,2083,2069,1,0,0,0,2083,2082,1,0,0,0,2084, - 460,1,0,0,0,2085,2086,5,67,0,0,2086,2104,5,67,0,0,2087,2088,5,82,0,0,2088, - 2104,5,82,0,0,2089,2090,5,81,0,0,2090,2104,5,81,0,0,2091,2092,5,90,0,0, - 2092,2104,5,90,0,0,2093,2094,5,66,0,0,2094,2104,5,66,0,0,2095,2096,5,90, - 0,0,2096,2097,5,90,0,0,2097,2104,5,42,0,0,2098,2099,5,90,0,0,2099,2100, - 5,90,0,0,2100,2104,5,43,0,0,2101,2102,5,80,0,0,2102,2104,5,80,0,0,2103, - 2085,1,0,0,0,2103,2087,1,0,0,0,2103,2089,1,0,0,0,2103,2091,1,0,0,0,2103, - 2093,1,0,0,0,2103,2095,1,0,0,0,2103,2098,1,0,0,0,2103,2101,1,0,0,0,2104, - 462,1,0,0,0,2105,2106,5,116,0,0,2106,2107,5,114,0,0,2107,2108,5,117,0, - 0,2108,2124,5,101,0,0,2109,2110,5,84,0,0,2110,2111,5,114,0,0,2111,2112, - 5,117,0,0,2112,2124,5,101,0,0,2113,2114,5,102,0,0,2114,2115,5,97,0,0,2115, - 2116,5,108,0,0,2116,2117,5,115,0,0,2117,2124,5,101,0,0,2118,2119,5,70, - 0,0,2119,2120,5,97,0,0,2120,2121,5,108,0,0,2121,2122,5,115,0,0,2122,2124, - 5,101,0,0,2123,2105,1,0,0,0,2123,2109,1,0,0,0,2123,2113,1,0,0,0,2123,2118, - 1,0,0,0,2124,464,1,0,0,0,2125,2126,5,78,0,0,2126,2127,5,97,0,0,2127,2128, - 5,78,0,0,2128,466,1,0,0,0,2129,2131,7,2,0,0,2130,2129,1,0,0,0,2131,2132, - 1,0,0,0,2132,2130,1,0,0,0,2132,2133,1,0,0,0,2133,2142,1,0,0,0,2134,2136, - 5,95,0,0,2135,2137,7,3,0,0,2136,2135,1,0,0,0,2137,2138,1,0,0,0,2138,2136, - 1,0,0,0,2138,2139,1,0,0,0,2139,2141,1,0,0,0,2140,2134,1,0,0,0,2141,2144, - 1,0,0,0,2142,2140,1,0,0,0,2142,2143,1,0,0,0,2143,468,1,0,0,0,2144,2142, - 1,0,0,0,2145,2146,5,47,0,0,2146,2147,5,47,0,0,2147,2151,1,0,0,0,2148,2150, - 8,4,0,0,2149,2148,1,0,0,0,2150,2153,1,0,0,0,2151,2149,1,0,0,0,2151,2152, - 1,0,0,0,2152,2158,1,0,0,0,2153,2151,1,0,0,0,2154,2156,5,13,0,0,2155,2154, - 1,0,0,0,2155,2156,1,0,0,0,2156,2157,1,0,0,0,2157,2159,5,10,0,0,2158,2155, - 1,0,0,0,2158,2159,1,0,0,0,2159,2172,1,0,0,0,2160,2161,5,47,0,0,2161,2162, - 5,42,0,0,2162,2166,1,0,0,0,2163,2165,9,0,0,0,2164,2163,1,0,0,0,2165,2168, - 1,0,0,0,2166,2167,1,0,0,0,2166,2164,1,0,0,0,2167,2169,1,0,0,0,2168,2166, - 1,0,0,0,2169,2170,5,42,0,0,2170,2172,5,47,0,0,2171,2145,1,0,0,0,2171,2160, - 1,0,0,0,2172,2173,1,0,0,0,2173,2174,6,234,0,0,2174,470,1,0,0,0,2175,2177, - 7,5,0,0,2176,2175,1,0,0,0,2177,2178,1,0,0,0,2178,2176,1,0,0,0,2178,2179, - 1,0,0,0,2179,2180,1,0,0,0,2180,2181,6,235,0,0,2181,472,1,0,0,0,25,0,2032, - 2037,2043,2048,2053,2059,2063,2066,2069,2074,2077,2080,2083,2103,2123, - 2132,2138,2142,2151,2155,2158,2166,2171,2178,1,6,0,0 + 1,202,1,202,1,202,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203, + 1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,204,1,204, + 1,204,1,204,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205, + 1,205,1,205,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,207, + 1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207, + 1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208, + 1,208,1,208,1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209, + 1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210, + 1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210, + 1,210,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211, + 1,211,1,211,1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,212, + 1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,213,1,213, + 1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213, + 1,213,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,1,214,1,214,1,214, + 1,214,1,214,1,214,1,214,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215, + 1,215,1,215,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,217, + 1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,218,1,218, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,219,1,219,1,219,1,219, + 1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220,1,220,1,220,1,220, + 1,220,1,220,1,220,1,220,1,220,1,221,1,221,1,221,1,221,1,221,1,221,1,221, + 1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,222,1,222, + 1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226,1,226, + 1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227, + 1,227,1,227,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,229,3,229, + 2044,8,229,1,229,4,229,2047,8,229,11,229,12,229,2048,1,229,1,229,1,230, + 1,230,3,230,2055,8,230,1,230,4,230,2058,8,230,11,230,12,230,2059,1,231, + 4,231,2063,8,231,11,231,12,231,2064,1,231,1,231,5,231,2069,8,231,10,231, + 12,231,2072,9,231,1,231,3,231,2075,8,231,1,231,3,231,2078,8,231,1,231, + 3,231,2081,8,231,1,231,4,231,2084,8,231,11,231,12,231,2085,1,231,3,231, + 2089,8,231,1,231,3,231,2092,8,231,1,231,3,231,2095,8,231,1,232,1,232,1, + 232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232, + 1,232,1,232,1,232,1,232,3,232,2115,8,232,1,233,1,233,1,233,1,233,1,233, + 1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233, + 1,233,3,233,2135,8,233,1,234,1,234,1,234,1,234,1,235,4,235,2142,8,235, + 11,235,12,235,2143,1,235,1,235,4,235,2148,8,235,11,235,12,235,2149,5,235, + 2152,8,235,10,235,12,235,2155,9,235,1,236,1,236,1,236,1,236,5,236,2161, + 8,236,10,236,12,236,2164,9,236,1,236,3,236,2167,8,236,1,236,3,236,2170, + 8,236,1,236,1,236,1,236,1,236,5,236,2176,8,236,10,236,12,236,2179,9,236, + 1,236,1,236,3,236,2183,8,236,1,236,1,236,1,237,4,237,2188,8,237,11,237, + 12,237,2189,1,237,1,237,1,2177,0,238,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15, + 8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39, + 20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63, + 32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87, + 44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109, + 55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129, + 65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149, + 75,151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169, + 85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189, + 95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207,104, + 209,105,211,106,213,107,215,108,217,109,219,110,221,111,223,112,225,113, + 227,114,229,115,231,116,233,117,235,118,237,119,239,120,241,121,243,122, + 245,123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131, + 263,132,265,133,267,134,269,135,271,136,273,137,275,138,277,139,279,140, + 281,141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297,149, + 299,150,301,151,303,152,305,153,307,154,309,155,311,156,313,157,315,158, + 317,159,319,160,321,161,323,162,325,163,327,164,329,165,331,166,333,167, + 335,168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351,176, + 353,177,355,178,357,179,359,180,361,181,363,182,365,183,367,184,369,185, + 371,186,373,187,375,188,377,189,379,190,381,191,383,192,385,193,387,194, + 389,195,391,196,393,197,395,198,397,199,399,200,401,201,403,202,405,203, + 407,204,409,205,411,206,413,207,415,208,417,209,419,210,421,211,423,212, + 425,213,427,214,429,215,431,216,433,217,435,218,437,219,439,220,441,221, + 443,222,445,223,447,224,449,225,451,226,453,227,455,228,457,229,459,230, + 461,0,463,231,465,232,467,233,469,234,471,235,473,236,475,237,1,0,6,2, + 0,69,69,101,101,2,0,43,43,45,45,5,0,65,90,97,122,880,1279,7936,8191,8495, + 8495,5,0,48,57,65,90,97,122,880,1279,7936,8191,2,0,10,10,13,13,2,0,9,9, + 32,32,2224,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0, + 0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21, + 1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0, + 0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43, + 1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0, + 0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65, + 1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0, + 0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87, + 1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0, + 0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0, + 0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0, + 0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0, + 0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0, + 0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0, + 0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0, + 0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0, + 0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0, + 0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0, + 0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0, + 0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0, + 0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0, + 0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0, + 0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0, + 0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0, + 0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0, + 0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0, + 0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0, + 0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0, + 0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0, + 0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0, + 0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0, + 0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0, + 0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0, + 0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0, + 0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0, + 0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0, + 0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0, + 0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0, + 0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0, + 0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0, + 0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0, + 0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0, + 0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0, + 0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0, + 0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0,455,1,0,0,0,0,457,1,0,0,0, + 0,459,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0, + 0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,1,477,1,0,0,0,3,479,1,0,0,0, + 5,482,1,0,0,0,7,486,1,0,0,0,9,488,1,0,0,0,11,490,1,0,0,0,13,492,1,0,0, + 0,15,494,1,0,0,0,17,498,1,0,0,0,19,500,1,0,0,0,21,502,1,0,0,0,23,506,1, + 0,0,0,25,516,1,0,0,0,27,519,1,0,0,0,29,525,1,0,0,0,31,528,1,0,0,0,33,540, + 1,0,0,0,35,542,1,0,0,0,37,545,1,0,0,0,39,552,1,0,0,0,41,554,1,0,0,0,43, + 563,1,0,0,0,45,565,1,0,0,0,47,573,1,0,0,0,49,575,1,0,0,0,51,578,1,0,0, + 0,53,581,1,0,0,0,55,583,1,0,0,0,57,585,1,0,0,0,59,587,1,0,0,0,61,590,1, + 0,0,0,63,592,1,0,0,0,65,594,1,0,0,0,67,596,1,0,0,0,69,600,1,0,0,0,71,604, + 1,0,0,0,73,606,1,0,0,0,75,610,1,0,0,0,77,613,1,0,0,0,79,621,1,0,0,0,81, + 624,1,0,0,0,83,633,1,0,0,0,85,636,1,0,0,0,87,638,1,0,0,0,89,645,1,0,0, + 0,91,647,1,0,0,0,93,655,1,0,0,0,95,658,1,0,0,0,97,665,1,0,0,0,99,667,1, + 0,0,0,101,669,1,0,0,0,103,671,1,0,0,0,105,675,1,0,0,0,107,679,1,0,0,0, + 109,682,1,0,0,0,111,685,1,0,0,0,113,687,1,0,0,0,115,689,1,0,0,0,117,692, + 1,0,0,0,119,694,1,0,0,0,121,696,1,0,0,0,123,698,1,0,0,0,125,703,1,0,0, + 0,127,710,1,0,0,0,129,716,1,0,0,0,131,721,1,0,0,0,133,727,1,0,0,0,135, + 733,1,0,0,0,137,738,1,0,0,0,139,742,1,0,0,0,141,747,1,0,0,0,143,752,1, + 0,0,0,145,757,1,0,0,0,147,762,1,0,0,0,149,769,1,0,0,0,151,774,1,0,0,0, + 153,779,1,0,0,0,155,786,1,0,0,0,157,791,1,0,0,0,159,799,1,0,0,0,161,807, + 1,0,0,0,163,815,1,0,0,0,165,825,1,0,0,0,167,833,1,0,0,0,169,843,1,0,0, + 0,171,851,1,0,0,0,173,857,1,0,0,0,175,863,1,0,0,0,177,869,1,0,0,0,179, + 875,1,0,0,0,181,883,1,0,0,0,183,889,1,0,0,0,185,897,1,0,0,0,187,903,1, + 0,0,0,189,911,1,0,0,0,191,917,1,0,0,0,193,921,1,0,0,0,195,927,1,0,0,0, + 197,931,1,0,0,0,199,937,1,0,0,0,201,941,1,0,0,0,203,949,1,0,0,0,205,955, + 1,0,0,0,207,960,1,0,0,0,209,966,1,0,0,0,211,971,1,0,0,0,213,979,1,0,0, + 0,215,985,1,0,0,0,217,992,1,0,0,0,219,1000,1,0,0,0,221,1006,1,0,0,0,223, + 1015,1,0,0,0,225,1022,1,0,0,0,227,1030,1,0,0,0,229,1036,1,0,0,0,231,1045, + 1,0,0,0,233,1052,1,0,0,0,235,1060,1,0,0,0,237,1066,1,0,0,0,239,1075,1, + 0,0,0,241,1082,1,0,0,0,243,1090,1,0,0,0,245,1099,1,0,0,0,247,1109,1,0, + 0,0,249,1116,1,0,0,0,251,1127,1,0,0,0,253,1134,1,0,0,0,255,1142,1,0,0, + 0,257,1149,1,0,0,0,259,1158,1,0,0,0,261,1167,1,0,0,0,263,1177,1,0,0,0, + 265,1185,1,0,0,0,267,1196,1,0,0,0,269,1203,1,0,0,0,271,1214,1,0,0,0,273, + 1221,1,0,0,0,275,1233,1,0,0,0,277,1243,1,0,0,0,279,1250,1,0,0,0,281,1261, + 1,0,0,0,283,1273,1,0,0,0,285,1278,1,0,0,0,287,1287,1,0,0,0,289,1295,1, + 0,0,0,291,1300,1,0,0,0,293,1306,1,0,0,0,295,1311,1,0,0,0,297,1316,1,0, + 0,0,299,1323,1,0,0,0,301,1334,1,0,0,0,303,1340,1,0,0,0,305,1350,1,0,0, + 0,307,1357,1,0,0,0,309,1371,1,0,0,0,311,1383,1,0,0,0,313,1390,1,0,0,0, + 315,1400,1,0,0,0,317,1407,1,0,0,0,319,1413,1,0,0,0,321,1422,1,0,0,0,323, + 1429,1,0,0,0,325,1434,1,0,0,0,327,1439,1,0,0,0,329,1447,1,0,0,0,331,1455, + 1,0,0,0,333,1460,1,0,0,0,335,1465,1,0,0,0,337,1475,1,0,0,0,339,1484,1, + 0,0,0,341,1491,1,0,0,0,343,1496,1,0,0,0,345,1502,1,0,0,0,347,1508,1,0, + 0,0,349,1512,1,0,0,0,351,1516,1,0,0,0,353,1527,1,0,0,0,355,1536,1,0,0, + 0,357,1540,1,0,0,0,359,1544,1,0,0,0,361,1549,1,0,0,0,363,1554,1,0,0,0, + 365,1559,1,0,0,0,367,1570,1,0,0,0,369,1575,1,0,0,0,371,1582,1,0,0,0,373, + 1593,1,0,0,0,375,1604,1,0,0,0,377,1610,1,0,0,0,379,1615,1,0,0,0,381,1619, + 1,0,0,0,383,1623,1,0,0,0,385,1627,1,0,0,0,387,1633,1,0,0,0,389,1637,1, + 0,0,0,391,1643,1,0,0,0,393,1650,1,0,0,0,395,1656,1,0,0,0,397,1669,1,0, + 0,0,399,1682,1,0,0,0,401,1692,1,0,0,0,403,1704,1,0,0,0,405,1712,1,0,0, + 0,407,1723,1,0,0,0,409,1737,1,0,0,0,411,1746,1,0,0,0,413,1758,1,0,0,0, + 415,1767,1,0,0,0,417,1783,1,0,0,0,419,1798,1,0,0,0,421,1811,1,0,0,0,423, + 1829,1,0,0,0,425,1845,1,0,0,0,427,1862,1,0,0,0,429,1881,1,0,0,0,431,1892, + 1,0,0,0,433,1902,1,0,0,0,435,1911,1,0,0,0,437,1922,1,0,0,0,439,1932,1, + 0,0,0,441,1941,1,0,0,0,443,1953,1,0,0,0,445,1970,1,0,0,0,447,1982,1,0, + 0,0,449,1998,1,0,0,0,451,2008,1,0,0,0,453,2016,1,0,0,0,455,2027,1,0,0, + 0,457,2034,1,0,0,0,459,2046,1,0,0,0,461,2052,1,0,0,0,463,2094,1,0,0,0, + 465,2114,1,0,0,0,467,2134,1,0,0,0,469,2136,1,0,0,0,471,2141,1,0,0,0,473, + 2182,1,0,0,0,475,2187,1,0,0,0,477,478,5,33,0,0,478,2,1,0,0,0,479,480,5, + 33,0,0,480,481,5,33,0,0,481,4,1,0,0,0,482,483,5,33,0,0,483,484,5,33,0, + 0,484,485,5,33,0,0,485,6,1,0,0,0,486,487,5,94,0,0,487,8,1,0,0,0,488,489, + 5,45,0,0,489,10,1,0,0,0,490,491,5,43,0,0,491,12,1,0,0,0,492,493,5,42,0, + 0,493,14,1,0,0,0,494,495,5,46,0,0,495,496,5,46,0,0,496,497,5,46,0,0,497, + 16,1,0,0,0,498,499,5,8230,0,0,499,18,1,0,0,0,500,501,5,47,0,0,501,20,1, + 0,0,0,502,503,5,109,0,0,503,504,5,111,0,0,504,505,5,100,0,0,505,22,1,0, + 0,0,506,507,5,105,0,0,507,508,5,110,0,0,508,509,5,116,0,0,509,510,5,101, + 0,0,510,511,5,114,0,0,511,512,5,115,0,0,512,513,5,101,0,0,513,514,5,99, + 0,0,514,515,5,116,0,0,515,24,1,0,0,0,516,517,5,47,0,0,517,518,5,92,0,0, + 518,26,1,0,0,0,519,520,5,117,0,0,520,521,5,110,0,0,521,522,5,105,0,0,522, + 523,5,116,0,0,523,524,5,101,0,0,524,28,1,0,0,0,525,526,5,92,0,0,526,527, + 5,47,0,0,527,30,1,0,0,0,528,529,5,115,0,0,529,530,5,101,0,0,530,531,5, + 116,0,0,531,532,5,115,0,0,532,533,5,117,0,0,533,534,5,98,0,0,534,535,5, + 116,0,0,535,536,5,114,0,0,536,537,5,97,0,0,537,538,5,99,0,0,538,539,5, + 116,0,0,539,32,1,0,0,0,540,541,5,92,0,0,541,34,1,0,0,0,542,543,5,105,0, + 0,543,544,5,110,0,0,544,36,1,0,0,0,545,546,5,115,0,0,546,547,5,117,0,0, + 547,548,5,98,0,0,548,549,5,115,0,0,549,550,5,101,0,0,550,551,5,116,0,0, + 551,38,1,0,0,0,552,553,5,8838,0,0,553,40,1,0,0,0,554,555,5,115,0,0,555, + 556,5,117,0,0,556,557,5,112,0,0,557,558,5,101,0,0,558,559,5,114,0,0,559, + 560,5,115,0,0,560,561,5,101,0,0,561,562,5,116,0,0,562,42,1,0,0,0,563,564, + 5,8839,0,0,564,44,1,0,0,0,565,566,5,100,0,0,566,567,5,105,0,0,567,568, + 5,118,0,0,568,569,5,105,0,0,569,570,5,100,0,0,570,571,5,101,0,0,571,572, + 5,115,0,0,572,46,1,0,0,0,573,574,5,124,0,0,574,48,1,0,0,0,575,576,5,62, + 0,0,576,577,5,61,0,0,577,50,1,0,0,0,578,579,5,60,0,0,579,580,5,61,0,0, + 580,52,1,0,0,0,581,582,5,62,0,0,582,54,1,0,0,0,583,584,5,60,0,0,584,56, + 1,0,0,0,585,586,5,61,0,0,586,58,1,0,0,0,587,588,5,60,0,0,588,589,5,62, + 0,0,589,60,1,0,0,0,590,591,5,8801,0,0,591,62,1,0,0,0,592,593,5,40,0,0, + 593,64,1,0,0,0,594,595,5,41,0,0,595,66,1,0,0,0,596,597,5,110,0,0,597,598, + 5,111,0,0,598,599,5,116,0,0,599,68,1,0,0,0,600,601,5,97,0,0,601,602,5, + 110,0,0,602,603,5,100,0,0,603,70,1,0,0,0,604,605,5,38,0,0,605,72,1,0,0, + 0,606,607,5,120,0,0,607,608,5,111,0,0,608,609,5,114,0,0,609,74,1,0,0,0, + 610,611,5,111,0,0,611,612,5,114,0,0,612,76,1,0,0,0,613,614,5,105,0,0,614, + 615,5,109,0,0,615,616,5,112,0,0,616,617,5,108,0,0,617,618,5,105,0,0,618, + 619,5,101,0,0,619,620,5,115,0,0,620,78,1,0,0,0,621,622,5,45,0,0,622,623, + 5,62,0,0,623,80,1,0,0,0,624,625,5,112,0,0,625,626,5,114,0,0,626,627,5, + 111,0,0,627,628,5,118,0,0,628,629,5,105,0,0,629,630,5,100,0,0,630,631, + 5,101,0,0,631,632,5,100,0,0,632,82,1,0,0,0,633,634,5,61,0,0,634,635,5, + 62,0,0,635,84,1,0,0,0,636,637,5,58,0,0,637,86,1,0,0,0,638,639,5,102,0, + 0,639,640,5,111,0,0,640,641,5,114,0,0,641,642,5,97,0,0,642,643,5,108,0, + 0,643,644,5,108,0,0,644,88,1,0,0,0,645,646,5,8704,0,0,646,90,1,0,0,0,647, + 648,5,101,0,0,648,649,5,120,0,0,649,650,5,105,0,0,650,651,5,115,0,0,651, + 652,5,116,0,0,652,653,5,115,0,0,653,654,5,33,0,0,654,92,1,0,0,0,655,656, + 5,8707,0,0,656,657,5,33,0,0,657,94,1,0,0,0,658,659,5,101,0,0,659,660,5, + 120,0,0,660,661,5,105,0,0,661,662,5,115,0,0,662,663,5,116,0,0,663,664, + 5,115,0,0,664,96,1,0,0,0,665,666,5,8707,0,0,666,98,1,0,0,0,667,668,5,44, + 0,0,668,100,1,0,0,0,669,670,5,59,0,0,670,102,1,0,0,0,671,672,5,43,0,0, + 672,673,5,111,0,0,673,674,5,111,0,0,674,104,1,0,0,0,675,676,5,45,0,0,676, + 677,5,111,0,0,677,678,5,111,0,0,678,106,1,0,0,0,679,680,5,40,0,0,680,681, + 5,124,0,0,681,108,1,0,0,0,682,683,5,124,0,0,683,684,5,41,0,0,684,110,1, + 0,0,0,685,686,5,35,0,0,686,112,1,0,0,0,687,688,5,91,0,0,688,114,1,0,0, + 0,689,690,5,93,0,0,690,691,5,84,0,0,691,116,1,0,0,0,692,693,5,93,0,0,693, + 118,1,0,0,0,694,695,5,123,0,0,695,120,1,0,0,0,696,697,5,125,0,0,697,122, + 1,0,0,0,698,699,5,108,0,0,699,700,5,111,0,0,700,701,5,103,0,0,701,702, + 5,40,0,0,702,124,1,0,0,0,703,704,5,108,0,0,704,705,5,111,0,0,705,706,5, + 103,0,0,706,707,5,49,0,0,707,708,5,48,0,0,708,709,5,40,0,0,709,126,1,0, + 0,0,710,711,5,108,0,0,711,712,5,111,0,0,712,713,5,103,0,0,713,714,5,50, + 0,0,714,715,5,40,0,0,715,128,1,0,0,0,716,717,5,112,0,0,717,718,5,111,0, + 0,718,719,5,119,0,0,719,720,5,40,0,0,720,130,1,0,0,0,721,722,5,115,0,0, + 722,723,5,113,0,0,723,724,5,114,0,0,724,725,5,116,0,0,725,726,5,40,0,0, + 726,132,1,0,0,0,727,728,5,99,0,0,728,729,5,98,0,0,729,730,5,114,0,0,730, + 731,5,116,0,0,731,732,5,40,0,0,732,134,1,0,0,0,733,734,5,115,0,0,734,735, + 5,113,0,0,735,736,5,114,0,0,736,737,5,40,0,0,737,136,1,0,0,0,738,739,5, + 108,0,0,739,740,5,110,0,0,740,741,5,40,0,0,741,138,1,0,0,0,742,743,5,101, + 0,0,743,744,5,120,0,0,744,745,5,112,0,0,745,746,5,40,0,0,746,140,1,0,0, + 0,747,748,5,115,0,0,748,749,5,105,0,0,749,750,5,110,0,0,750,751,5,40,0, + 0,751,142,1,0,0,0,752,753,5,99,0,0,753,754,5,111,0,0,754,755,5,115,0,0, + 755,756,5,40,0,0,756,144,1,0,0,0,757,758,5,116,0,0,758,759,5,97,0,0,759, + 760,5,110,0,0,760,761,5,40,0,0,761,146,1,0,0,0,762,763,5,99,0,0,763,764, + 5,111,0,0,764,765,5,116,0,0,765,766,5,97,0,0,766,767,5,110,0,0,767,768, + 5,40,0,0,768,148,1,0,0,0,769,770,5,99,0,0,770,771,5,111,0,0,771,772,5, + 116,0,0,772,773,5,40,0,0,773,150,1,0,0,0,774,775,5,115,0,0,775,776,5,101, + 0,0,776,777,5,99,0,0,777,778,5,40,0,0,778,152,1,0,0,0,779,780,5,99,0,0, + 780,781,5,111,0,0,781,782,5,115,0,0,782,783,5,101,0,0,783,784,5,99,0,0, + 784,785,5,40,0,0,785,154,1,0,0,0,786,787,5,99,0,0,787,788,5,115,0,0,788, + 789,5,99,0,0,789,790,5,40,0,0,790,156,1,0,0,0,791,792,5,97,0,0,792,793, + 5,114,0,0,793,794,5,99,0,0,794,795,5,115,0,0,795,796,5,105,0,0,796,797, + 5,110,0,0,797,798,5,40,0,0,798,158,1,0,0,0,799,800,5,97,0,0,800,801,5, + 114,0,0,801,802,5,99,0,0,802,803,5,99,0,0,803,804,5,111,0,0,804,805,5, + 115,0,0,805,806,5,40,0,0,806,160,1,0,0,0,807,808,5,97,0,0,808,809,5,114, + 0,0,809,810,5,99,0,0,810,811,5,116,0,0,811,812,5,97,0,0,812,813,5,110, + 0,0,813,814,5,40,0,0,814,162,1,0,0,0,815,816,5,97,0,0,816,817,5,114,0, + 0,817,818,5,99,0,0,818,819,5,99,0,0,819,820,5,111,0,0,820,821,5,116,0, + 0,821,822,5,97,0,0,822,823,5,110,0,0,823,824,5,40,0,0,824,164,1,0,0,0, + 825,826,5,97,0,0,826,827,5,114,0,0,827,828,5,99,0,0,828,829,5,115,0,0, + 829,830,5,101,0,0,830,831,5,99,0,0,831,832,5,40,0,0,832,166,1,0,0,0,833, + 834,5,97,0,0,834,835,5,114,0,0,835,836,5,99,0,0,836,837,5,99,0,0,837,838, + 5,111,0,0,838,839,5,115,0,0,839,840,5,101,0,0,840,841,5,99,0,0,841,842, + 5,40,0,0,842,168,1,0,0,0,843,844,5,97,0,0,844,845,5,114,0,0,845,846,5, + 99,0,0,846,847,5,99,0,0,847,848,5,115,0,0,848,849,5,99,0,0,849,850,5,40, + 0,0,850,170,1,0,0,0,851,852,5,97,0,0,852,853,5,99,0,0,853,854,5,115,0, + 0,854,855,5,99,0,0,855,856,5,40,0,0,856,172,1,0,0,0,857,858,5,97,0,0,858, + 859,5,115,0,0,859,860,5,105,0,0,860,861,5,110,0,0,861,862,5,40,0,0,862, + 174,1,0,0,0,863,864,5,97,0,0,864,865,5,99,0,0,865,866,5,111,0,0,866,867, + 5,115,0,0,867,868,5,40,0,0,868,176,1,0,0,0,869,870,5,97,0,0,870,871,5, + 116,0,0,871,872,5,97,0,0,872,873,5,110,0,0,873,874,5,40,0,0,874,178,1, + 0,0,0,875,876,5,97,0,0,876,877,5,99,0,0,877,878,5,111,0,0,878,879,5,116, + 0,0,879,880,5,97,0,0,880,881,5,110,0,0,881,882,5,40,0,0,882,180,1,0,0, + 0,883,884,5,97,0,0,884,885,5,115,0,0,885,886,5,101,0,0,886,887,5,99,0, + 0,887,888,5,40,0,0,888,182,1,0,0,0,889,890,5,97,0,0,890,891,5,99,0,0,891, + 892,5,111,0,0,892,893,5,115,0,0,893,894,5,101,0,0,894,895,5,99,0,0,895, + 896,5,40,0,0,896,184,1,0,0,0,897,898,5,97,0,0,898,899,5,99,0,0,899,900, + 5,111,0,0,900,901,5,116,0,0,901,902,5,40,0,0,902,186,1,0,0,0,903,904,5, + 97,0,0,904,905,5,114,0,0,905,906,5,99,0,0,906,907,5,99,0,0,907,908,5,111, + 0,0,908,909,5,116,0,0,909,910,5,40,0,0,910,188,1,0,0,0,911,912,5,115,0, + 0,912,913,5,105,0,0,913,914,5,110,0,0,914,915,5,104,0,0,915,916,5,40,0, + 0,916,190,1,0,0,0,917,918,5,115,0,0,918,919,5,104,0,0,919,920,5,40,0,0, + 920,192,1,0,0,0,921,922,5,99,0,0,922,923,5,111,0,0,923,924,5,115,0,0,924, + 925,5,104,0,0,925,926,5,40,0,0,926,194,1,0,0,0,927,928,5,99,0,0,928,929, + 5,104,0,0,929,930,5,40,0,0,930,196,1,0,0,0,931,932,5,116,0,0,932,933,5, + 97,0,0,933,934,5,110,0,0,934,935,5,104,0,0,935,936,5,40,0,0,936,198,1, + 0,0,0,937,938,5,116,0,0,938,939,5,104,0,0,939,940,5,40,0,0,940,200,1,0, + 0,0,941,942,5,99,0,0,942,943,5,111,0,0,943,944,5,116,0,0,944,945,5,97, + 0,0,945,946,5,110,0,0,946,947,5,104,0,0,947,948,5,40,0,0,948,202,1,0,0, + 0,949,950,5,99,0,0,950,951,5,111,0,0,951,952,5,116,0,0,952,953,5,104,0, + 0,953,954,5,40,0,0,954,204,1,0,0,0,955,956,5,99,0,0,956,957,5,116,0,0, + 957,958,5,104,0,0,958,959,5,40,0,0,959,206,1,0,0,0,960,961,5,115,0,0,961, + 962,5,101,0,0,962,963,5,99,0,0,963,964,5,104,0,0,964,965,5,40,0,0,965, + 208,1,0,0,0,966,967,5,115,0,0,967,968,5,99,0,0,968,969,5,104,0,0,969,970, + 5,40,0,0,970,210,1,0,0,0,971,972,5,99,0,0,972,973,5,111,0,0,973,974,5, + 115,0,0,974,975,5,101,0,0,975,976,5,99,0,0,976,977,5,104,0,0,977,978,5, + 40,0,0,978,212,1,0,0,0,979,980,5,99,0,0,980,981,5,115,0,0,981,982,5,99, + 0,0,982,983,5,104,0,0,983,984,5,40,0,0,984,214,1,0,0,0,985,986,5,97,0, + 0,986,987,5,115,0,0,987,988,5,105,0,0,988,989,5,110,0,0,989,990,5,104, + 0,0,990,991,5,40,0,0,991,216,1,0,0,0,992,993,5,97,0,0,993,994,5,114,0, + 0,994,995,5,115,0,0,995,996,5,105,0,0,996,997,5,110,0,0,997,998,5,104, + 0,0,998,999,5,40,0,0,999,218,1,0,0,0,1000,1001,5,97,0,0,1001,1002,5,114, + 0,0,1002,1003,5,115,0,0,1003,1004,5,104,0,0,1004,1005,5,40,0,0,1005,220, + 1,0,0,0,1006,1007,5,97,0,0,1007,1008,5,114,0,0,1008,1009,5,99,0,0,1009, + 1010,5,115,0,0,1010,1011,5,105,0,0,1011,1012,5,110,0,0,1012,1013,5,104, + 0,0,1013,1014,5,40,0,0,1014,222,1,0,0,0,1015,1016,5,97,0,0,1016,1017,5, + 99,0,0,1017,1018,5,111,0,0,1018,1019,5,115,0,0,1019,1020,5,104,0,0,1020, + 1021,5,40,0,0,1021,224,1,0,0,0,1022,1023,5,97,0,0,1023,1024,5,114,0,0, + 1024,1025,5,99,0,0,1025,1026,5,111,0,0,1026,1027,5,115,0,0,1027,1028,5, + 104,0,0,1028,1029,5,40,0,0,1029,226,1,0,0,0,1030,1031,5,97,0,0,1031,1032, + 5,114,0,0,1032,1033,5,99,0,0,1033,1034,5,104,0,0,1034,1035,5,40,0,0,1035, + 228,1,0,0,0,1036,1037,5,97,0,0,1037,1038,5,114,0,0,1038,1039,5,99,0,0, + 1039,1040,5,99,0,0,1040,1041,5,111,0,0,1041,1042,5,115,0,0,1042,1043,5, + 104,0,0,1043,1044,5,40,0,0,1044,230,1,0,0,0,1045,1046,5,97,0,0,1046,1047, + 5,116,0,0,1047,1048,5,97,0,0,1048,1049,5,110,0,0,1049,1050,5,104,0,0,1050, + 1051,5,40,0,0,1051,232,1,0,0,0,1052,1053,5,97,0,0,1053,1054,5,114,0,0, + 1054,1055,5,116,0,0,1055,1056,5,97,0,0,1056,1057,5,110,0,0,1057,1058,5, + 104,0,0,1058,1059,5,40,0,0,1059,234,1,0,0,0,1060,1061,5,97,0,0,1061,1062, + 5,114,0,0,1062,1063,5,116,0,0,1063,1064,5,104,0,0,1064,1065,5,40,0,0,1065, + 236,1,0,0,0,1066,1067,5,97,0,0,1067,1068,5,114,0,0,1068,1069,5,99,0,0, + 1069,1070,5,116,0,0,1070,1071,5,97,0,0,1071,1072,5,110,0,0,1072,1073,5, + 104,0,0,1073,1074,5,40,0,0,1074,238,1,0,0,0,1075,1076,5,97,0,0,1076,1077, + 5,99,0,0,1077,1078,5,111,0,0,1078,1079,5,116,0,0,1079,1080,5,104,0,0,1080, + 1081,5,40,0,0,1081,240,1,0,0,0,1082,1083,5,97,0,0,1083,1084,5,114,0,0, + 1084,1085,5,99,0,0,1085,1086,5,111,0,0,1086,1087,5,116,0,0,1087,1088,5, + 104,0,0,1088,1089,5,40,0,0,1089,242,1,0,0,0,1090,1091,5,97,0,0,1091,1092, + 5,99,0,0,1092,1093,5,111,0,0,1093,1094,5,116,0,0,1094,1095,5,97,0,0,1095, + 1096,5,110,0,0,1096,1097,5,104,0,0,1097,1098,5,40,0,0,1098,244,1,0,0,0, + 1099,1100,5,97,0,0,1100,1101,5,114,0,0,1101,1102,5,99,0,0,1102,1103,5, + 111,0,0,1103,1104,5,116,0,0,1104,1105,5,97,0,0,1105,1106,5,110,0,0,1106, + 1107,5,104,0,0,1107,1108,5,40,0,0,1108,246,1,0,0,0,1109,1110,5,97,0,0, + 1110,1111,5,114,0,0,1111,1112,5,99,0,0,1112,1113,5,116,0,0,1113,1114,5, + 104,0,0,1114,1115,5,40,0,0,1115,248,1,0,0,0,1116,1117,5,97,0,0,1117,1118, + 5,114,0,0,1118,1119,5,99,0,0,1119,1120,5,99,0,0,1120,1121,5,111,0,0,1121, + 1122,5,116,0,0,1122,1123,5,97,0,0,1123,1124,5,110,0,0,1124,1125,5,104, + 0,0,1125,1126,5,40,0,0,1126,250,1,0,0,0,1127,1128,5,97,0,0,1128,1129,5, + 115,0,0,1129,1130,5,101,0,0,1130,1131,5,99,0,0,1131,1132,5,104,0,0,1132, + 1133,5,40,0,0,1133,252,1,0,0,0,1134,1135,5,97,0,0,1135,1136,5,114,0,0, + 1136,1137,5,115,0,0,1137,1138,5,101,0,0,1138,1139,5,99,0,0,1139,1140,5, + 104,0,0,1140,1141,5,40,0,0,1141,254,1,0,0,0,1142,1143,5,97,0,0,1143,1144, + 5,114,0,0,1144,1145,5,115,0,0,1145,1146,5,99,0,0,1146,1147,5,104,0,0,1147, + 1148,5,40,0,0,1148,256,1,0,0,0,1149,1150,5,97,0,0,1150,1151,5,114,0,0, + 1151,1152,5,99,0,0,1152,1153,5,115,0,0,1153,1154,5,101,0,0,1154,1155,5, + 99,0,0,1155,1156,5,104,0,0,1156,1157,5,40,0,0,1157,258,1,0,0,0,1158,1159, + 5,97,0,0,1159,1160,5,99,0,0,1160,1161,5,111,0,0,1161,1162,5,115,0,0,1162, + 1163,5,101,0,0,1163,1164,5,99,0,0,1164,1165,5,104,0,0,1165,1166,5,40,0, + 0,1166,260,1,0,0,0,1167,1168,5,97,0,0,1168,1169,5,114,0,0,1169,1170,5, + 99,0,0,1170,1171,5,111,0,0,1171,1172,5,115,0,0,1172,1173,5,101,0,0,1173, + 1174,5,99,0,0,1174,1175,5,104,0,0,1175,1176,5,40,0,0,1176,262,1,0,0,0, + 1177,1178,5,97,0,0,1178,1179,5,114,0,0,1179,1180,5,99,0,0,1180,1181,5, + 115,0,0,1181,1182,5,99,0,0,1182,1183,5,104,0,0,1183,1184,5,40,0,0,1184, + 264,1,0,0,0,1185,1186,5,97,0,0,1186,1187,5,114,0,0,1187,1188,5,99,0,0, + 1188,1189,5,99,0,0,1189,1190,5,111,0,0,1190,1191,5,115,0,0,1191,1192,5, + 101,0,0,1192,1193,5,99,0,0,1193,1194,5,104,0,0,1194,1195,5,40,0,0,1195, + 266,1,0,0,0,1196,1197,5,97,0,0,1197,1198,5,99,0,0,1198,1199,5,115,0,0, + 1199,1200,5,99,0,0,1200,1201,5,104,0,0,1201,1202,5,40,0,0,1202,268,1,0, + 0,0,1203,1204,5,102,0,0,1204,1205,5,97,0,0,1205,1206,5,99,0,0,1206,1207, + 5,116,0,0,1207,1208,5,111,0,0,1208,1209,5,114,0,0,1209,1210,5,105,0,0, + 1210,1211,5,97,0,0,1211,1212,5,108,0,0,1212,1213,5,40,0,0,1213,270,1,0, + 0,0,1214,1215,5,103,0,0,1215,1216,5,97,0,0,1216,1217,5,109,0,0,1217,1218, + 5,109,0,0,1218,1219,5,97,0,0,1219,1220,5,40,0,0,1220,272,1,0,0,0,1221, + 1222,5,100,0,0,1222,1223,5,101,0,0,1223,1224,5,114,0,0,1224,1225,5,105, + 0,0,1225,1226,5,118,0,0,1226,1227,5,97,0,0,1227,1228,5,116,0,0,1228,1229, + 5,105,0,0,1229,1230,5,118,0,0,1230,1231,5,101,0,0,1231,1232,5,40,0,0,1232, + 274,1,0,0,0,1233,1234,5,105,0,0,1234,1235,5,110,0,0,1235,1236,5,116,0, + 0,1236,1237,5,101,0,0,1237,1238,5,103,0,0,1238,1239,5,114,0,0,1239,1240, + 5,97,0,0,1240,1241,5,108,0,0,1241,1242,5,40,0,0,1242,276,1,0,0,0,1243, + 1244,5,108,0,0,1244,1245,5,105,0,0,1245,1246,5,109,0,0,1246,1247,5,105, + 0,0,1247,1248,5,116,0,0,1248,1249,5,40,0,0,1249,278,1,0,0,0,1250,1251, + 5,108,0,0,1251,1252,5,105,0,0,1252,1253,5,109,0,0,1253,1254,5,105,0,0, + 1254,1255,5,116,0,0,1255,1256,5,108,0,0,1256,1257,5,101,0,0,1257,1258, + 5,102,0,0,1258,1259,5,116,0,0,1259,1260,5,40,0,0,1260,280,1,0,0,0,1261, + 1262,5,108,0,0,1262,1263,5,105,0,0,1263,1264,5,109,0,0,1264,1265,5,105, + 0,0,1265,1266,5,116,0,0,1266,1267,5,114,0,0,1267,1268,5,105,0,0,1268,1269, + 5,103,0,0,1269,1270,5,104,0,0,1270,1271,5,116,0,0,1271,1272,5,40,0,0,1272, + 282,1,0,0,0,1273,1274,5,115,0,0,1274,1275,5,117,0,0,1275,1276,5,109,0, + 0,1276,1277,5,40,0,0,1277,284,1,0,0,0,1278,1279,5,112,0,0,1279,1280,5, + 114,0,0,1280,1281,5,111,0,0,1281,1282,5,100,0,0,1282,1283,5,117,0,0,1283, + 1284,5,99,0,0,1284,1285,5,116,0,0,1285,1286,5,40,0,0,1286,286,1,0,0,0, + 1287,1288,5,115,0,0,1288,1289,5,105,0,0,1289,1290,5,103,0,0,1290,1291, + 5,110,0,0,1291,1292,5,117,0,0,1292,1293,5,109,0,0,1293,1294,5,40,0,0,1294, + 288,1,0,0,0,1295,1296,5,115,0,0,1296,1297,5,103,0,0,1297,1298,5,110,0, + 0,1298,1299,5,40,0,0,1299,290,1,0,0,0,1300,1301,5,115,0,0,1301,1302,5, + 105,0,0,1302,1303,5,103,0,0,1303,1304,5,110,0,0,1304,1305,5,40,0,0,1305, + 292,1,0,0,0,1306,1307,5,97,0,0,1307,1308,5,98,0,0,1308,1309,5,115,0,0, + 1309,1310,5,40,0,0,1310,294,1,0,0,0,1311,1312,5,112,0,0,1312,1313,5,104, + 0,0,1313,1314,5,105,0,0,1314,1315,5,40,0,0,1315,296,1,0,0,0,1316,1317, + 5,112,0,0,1317,1318,5,114,0,0,1318,1319,5,105,0,0,1319,1320,5,109,0,0, + 1320,1321,5,101,0,0,1321,1322,5,40,0,0,1322,298,1,0,0,0,1323,1324,5,118, + 0,0,1324,1325,5,97,0,0,1325,1326,5,108,0,0,1326,1327,5,117,0,0,1327,1328, + 5,97,0,0,1328,1329,5,116,0,0,1329,1330,5,105,0,0,1330,1331,5,111,0,0,1331, + 1332,5,110,0,0,1332,1333,5,40,0,0,1333,300,1,0,0,0,1334,1335,5,99,0,0, + 1335,1336,5,97,0,0,1336,1337,5,114,0,0,1337,1338,5,100,0,0,1338,1339,5, + 40,0,0,1339,302,1,0,0,0,1340,1341,5,112,0,0,1341,1342,5,111,0,0,1342,1343, + 5,119,0,0,1343,1344,5,101,0,0,1344,1345,5,114,0,0,1345,1346,5,115,0,0, + 1346,1347,5,101,0,0,1347,1348,5,116,0,0,1348,1349,5,40,0,0,1349,304,1, + 0,0,0,1350,1351,5,117,0,0,1351,1352,5,110,0,0,1352,1353,5,105,0,0,1353, + 1354,5,111,0,0,1354,1355,5,110,0,0,1355,1356,5,40,0,0,1356,306,1,0,0,0, + 1357,1358,5,105,0,0,1358,1359,5,110,0,0,1359,1360,5,116,0,0,1360,1361, + 5,101,0,0,1361,1362,5,114,0,0,1362,1363,5,115,0,0,1363,1364,5,101,0,0, + 1364,1365,5,99,0,0,1365,1366,5,116,0,0,1366,1367,5,105,0,0,1367,1368,5, + 111,0,0,1368,1369,5,110,0,0,1369,1370,5,40,0,0,1370,308,1,0,0,0,1371,1372, + 5,99,0,0,1372,1373,5,111,0,0,1373,1374,5,109,0,0,1374,1375,5,112,0,0,1375, + 1376,5,108,0,0,1376,1377,5,101,0,0,1377,1378,5,109,0,0,1378,1379,5,101, + 0,0,1379,1380,5,110,0,0,1380,1381,5,116,0,0,1381,1382,5,40,0,0,1382,310, + 1,0,0,0,1383,1384,5,105,0,0,1384,1385,5,109,0,0,1385,1386,5,97,0,0,1386, + 1387,5,103,0,0,1387,1388,5,101,0,0,1388,1389,5,40,0,0,1389,312,1,0,0,0, + 1390,1391,5,112,0,0,1391,1392,5,114,0,0,1392,1393,5,101,0,0,1393,1394, + 5,105,0,0,1394,1395,5,109,0,0,1395,1396,5,97,0,0,1396,1397,5,103,0,0,1397, + 1398,5,101,0,0,1398,1399,5,40,0,0,1399,314,1,0,0,0,1400,1401,5,102,0,0, + 1401,1402,5,108,0,0,1402,1403,5,111,0,0,1403,1404,5,111,0,0,1404,1405, + 5,114,0,0,1405,1406,5,40,0,0,1406,316,1,0,0,0,1407,1408,5,99,0,0,1408, + 1409,5,101,0,0,1409,1410,5,105,0,0,1410,1411,5,108,0,0,1411,1412,5,40, + 0,0,1412,318,1,0,0,0,1413,1414,5,99,0,0,1414,1415,5,101,0,0,1415,1416, + 5,105,0,0,1416,1417,5,108,0,0,1417,1418,5,105,0,0,1418,1419,5,110,0,0, + 1419,1420,5,103,0,0,1420,1421,5,40,0,0,1421,320,1,0,0,0,1422,1423,5,114, + 0,0,1423,1424,5,111,0,0,1424,1425,5,117,0,0,1425,1426,5,110,0,0,1426,1427, + 5,100,0,0,1427,1428,5,40,0,0,1428,322,1,0,0,0,1429,1430,5,109,0,0,1430, + 1431,5,105,0,0,1431,1432,5,110,0,0,1432,1433,5,40,0,0,1433,324,1,0,0,0, + 1434,1435,5,109,0,0,1435,1436,5,97,0,0,1436,1437,5,120,0,0,1437,1438,5, + 40,0,0,1438,326,1,0,0,0,1439,1440,5,97,0,0,1440,1441,5,114,0,0,1441,1442, + 5,103,0,0,1442,1443,5,109,0,0,1443,1444,5,97,0,0,1444,1445,5,120,0,0,1445, + 1446,5,40,0,0,1446,328,1,0,0,0,1447,1448,5,97,0,0,1448,1449,5,114,0,0, + 1449,1450,5,103,0,0,1450,1451,5,109,0,0,1451,1452,5,105,0,0,1452,1453, + 5,110,0,0,1453,1454,5,40,0,0,1454,330,1,0,0,0,1455,1456,5,103,0,0,1456, + 1457,5,99,0,0,1457,1458,5,100,0,0,1458,1459,5,40,0,0,1459,332,1,0,0,0, + 1460,1461,5,108,0,0,1461,1462,5,99,0,0,1462,1463,5,109,0,0,1463,1464,5, + 40,0,0,1464,334,1,0,0,0,1465,1466,5,98,0,0,1466,1467,5,105,0,0,1467,1468, + 5,110,0,0,1468,1469,5,111,0,0,1469,1470,5,109,0,0,1470,1471,5,105,0,0, + 1471,1472,5,97,0,0,1472,1473,5,108,0,0,1473,1474,5,40,0,0,1474,336,1,0, + 0,0,1475,1476,5,105,0,0,1476,1477,5,118,0,0,1477,1478,5,101,0,0,1478,1479, + 5,114,0,0,1479,1480,5,115,0,0,1480,1481,5,111,0,0,1481,1482,5,110,0,0, + 1482,1483,5,40,0,0,1483,338,1,0,0,0,1484,1485,5,97,0,0,1485,1486,5,108, + 0,0,1486,1487,5,101,0,0,1487,1488,5,112,0,0,1488,1489,5,104,0,0,1489,1490, + 5,40,0,0,1490,340,1,0,0,0,1491,1492,5,101,0,0,1492,1493,5,114,0,0,1493, + 1494,5,102,0,0,1494,1495,5,40,0,0,1495,342,1,0,0,0,1496,1497,5,101,0,0, + 1497,1498,5,114,0,0,1498,1499,5,102,0,0,1499,1500,5,99,0,0,1500,1501,5, + 40,0,0,1501,344,1,0,0,0,1502,1503,5,101,0,0,1503,1504,5,114,0,0,1504,1505, + 5,102,0,0,1505,1506,5,105,0,0,1506,1507,5,40,0,0,1507,346,1,0,0,0,1508, + 1509,5,69,0,0,1509,1510,5,105,0,0,1510,1511,5,40,0,0,1511,348,1,0,0,0, + 1512,1513,5,108,0,0,1513,1514,5,105,0,0,1514,1515,5,40,0,0,1515,350,1, + 0,0,0,1516,1517,5,112,0,0,1517,1518,5,111,0,0,1518,1519,5,108,0,0,1519, + 1520,5,121,0,0,1520,1521,5,103,0,0,1521,1522,5,97,0,0,1522,1523,5,109, + 0,0,1523,1524,5,109,0,0,1524,1525,5,97,0,0,1525,1526,5,40,0,0,1526,352, + 1,0,0,0,1527,1528,5,100,0,0,1528,1529,5,105,0,0,1529,1530,5,103,0,0,1530, + 1531,5,97,0,0,1531,1532,5,109,0,0,1532,1533,5,109,0,0,1533,1534,5,97,0, + 0,1534,1535,5,40,0,0,1535,354,1,0,0,0,1536,1537,5,83,0,0,1537,1538,5,105, + 0,0,1538,1539,5,40,0,0,1539,356,1,0,0,0,1540,1541,5,67,0,0,1541,1542,5, + 105,0,0,1542,1543,5,40,0,0,1543,358,1,0,0,0,1544,1545,5,83,0,0,1545,1546, + 5,104,0,0,1546,1547,5,105,0,0,1547,1548,5,40,0,0,1548,360,1,0,0,0,1549, + 1550,5,67,0,0,1550,1551,5,104,0,0,1551,1552,5,105,0,0,1552,1553,5,40,0, + 0,1553,362,1,0,0,0,1554,1555,5,100,0,0,1555,1556,5,101,0,0,1556,1557,5, + 116,0,0,1557,1558,5,40,0,0,1558,364,1,0,0,0,1559,1560,5,116,0,0,1560,1561, + 5,114,0,0,1561,1562,5,97,0,0,1562,1563,5,110,0,0,1563,1564,5,115,0,0,1564, + 1565,5,112,0,0,1565,1566,5,111,0,0,1566,1567,5,115,0,0,1567,1568,5,101, + 0,0,1568,1569,5,40,0,0,1569,366,1,0,0,0,1570,1571,5,100,0,0,1571,1572, + 5,111,0,0,1572,1573,5,116,0,0,1573,1574,5,40,0,0,1574,368,1,0,0,0,1575, + 1576,5,99,0,0,1576,1577,5,114,0,0,1577,1578,5,111,0,0,1578,1579,5,115, + 0,0,1579,1580,5,115,0,0,1580,1581,5,40,0,0,1581,370,1,0,0,0,1582,1583, + 5,114,0,0,1583,1584,5,101,0,0,1584,1585,5,115,0,0,1585,1586,5,117,0,0, + 1586,1587,5,108,0,0,1587,1588,5,116,0,0,1588,1589,5,97,0,0,1589,1590,5, + 110,0,0,1590,1591,5,116,0,0,1591,1592,5,40,0,0,1592,372,1,0,0,0,1593,1594, + 5,99,0,0,1594,1595,5,111,0,0,1595,1596,5,110,0,0,1596,1597,5,106,0,0,1597, + 1598,5,117,0,0,1598,1599,5,103,0,0,1599,1600,5,97,0,0,1600,1601,5,116, + 0,0,1601,1602,5,101,0,0,1602,1603,5,40,0,0,1603,374,1,0,0,0,1604,1605, + 5,99,0,0,1605,1606,5,111,0,0,1606,1607,5,110,0,0,1607,1608,5,106,0,0,1608, + 1609,5,40,0,0,1609,376,1,0,0,0,1610,1611,5,97,0,0,1611,1612,5,114,0,0, + 1612,1613,5,103,0,0,1613,1614,5,40,0,0,1614,378,1,0,0,0,1615,1616,5,82, + 0,0,1616,1617,5,101,0,0,1617,1618,5,40,0,0,1618,380,1,0,0,0,1619,1620, + 5,73,0,0,1620,1621,5,109,0,0,1621,1622,5,40,0,0,1622,382,1,0,0,0,1623, + 1624,5,114,0,0,1624,1625,5,101,0,0,1625,1626,5,40,0,0,1626,384,1,0,0,0, + 1627,1628,5,114,0,0,1628,1629,5,101,0,0,1629,1630,5,97,0,0,1630,1631,5, + 108,0,0,1631,1632,5,40,0,0,1632,386,1,0,0,0,1633,1634,5,105,0,0,1634,1635, + 5,109,0,0,1635,1636,5,40,0,0,1636,388,1,0,0,0,1637,1638,5,105,0,0,1638, + 1639,5,109,0,0,1639,1640,5,97,0,0,1640,1641,5,103,0,0,1641,1642,5,40,0, + 0,1642,390,1,0,0,0,1643,1644,5,116,0,0,1644,1645,5,114,0,0,1645,1646,5, + 117,0,0,1646,1647,5,110,0,0,1647,1648,5,99,0,0,1648,1649,5,40,0,0,1649, + 392,1,0,0,0,1650,1651,5,122,0,0,1651,1652,5,101,0,0,1652,1653,5,116,0, + 0,1653,1654,5,97,0,0,1654,1655,5,40,0,0,1655,394,1,0,0,0,1656,1657,5,114, + 0,0,1657,1658,5,105,0,0,1658,1659,5,101,0,0,1659,1660,5,109,0,0,1660,1661, + 5,97,0,0,1661,1662,5,110,0,0,1662,1663,5,110,0,0,1663,1664,5,122,0,0,1664, + 1665,5,101,0,0,1665,1666,5,116,0,0,1666,1667,5,97,0,0,1667,1668,5,40,0, + 0,1668,396,1,0,0,0,1669,1670,5,104,0,0,1670,1671,5,117,0,0,1671,1672,5, + 114,0,0,1672,1673,5,119,0,0,1673,1674,5,105,0,0,1674,1675,5,116,0,0,1675, + 1676,5,122,0,0,1676,1677,5,122,0,0,1677,1678,5,101,0,0,1678,1679,5,116, + 0,0,1679,1680,5,97,0,0,1680,1681,5,40,0,0,1681,398,1,0,0,0,1682,1683,5, + 108,0,0,1683,1684,5,97,0,0,1684,1685,5,109,0,0,1685,1686,5,98,0,0,1686, + 1687,5,101,0,0,1687,1688,5,114,0,0,1688,1689,5,116,0,0,1689,1690,5,119, + 0,0,1690,1691,5,40,0,0,1691,400,1,0,0,0,1692,1693,5,112,0,0,1693,1694, + 5,114,0,0,1694,1695,5,111,0,0,1695,1696,5,100,0,0,1696,1697,5,117,0,0, + 1697,1698,5,99,0,0,1698,1699,5,116,0,0,1699,1700,5,108,0,0,1700,1701,5, + 111,0,0,1701,1702,5,103,0,0,1702,1703,5,40,0,0,1703,402,1,0,0,0,1704,1705, + 5,109,0,0,1705,1706,5,111,0,0,1706,1707,5,98,0,0,1707,1708,5,105,0,0,1708, + 1709,5,117,0,0,1709,1710,5,115,0,0,1710,1711,5,40,0,0,1711,404,1,0,0,0, + 1712,1713,5,109,0,0,1713,1714,5,111,0,0,1714,1715,5,101,0,0,1715,1716, + 5,98,0,0,1716,1717,5,105,0,0,1717,1718,5,117,0,0,1718,1719,5,115,0,0,1719, + 1720,5,109,0,0,1720,1721,5,117,0,0,1721,1722,5,40,0,0,1722,406,1,0,0,0, + 1723,1724,5,100,0,0,1724,1725,5,105,0,0,1725,1726,5,118,0,0,1726,1727, + 5,105,0,0,1727,1728,5,115,0,0,1728,1729,5,111,0,0,1729,1730,5,114,0,0, + 1730,1731,5,115,0,0,1731,1732,5,105,0,0,1732,1733,5,103,0,0,1733,1734, + 5,109,0,0,1734,1735,5,97,0,0,1735,1736,5,40,0,0,1736,408,1,0,0,0,1737, + 1738,5,112,0,0,1738,1739,5,114,0,0,1739,1740,5,105,0,0,1740,1741,5,109, + 0,0,1741,1742,5,101,0,0,1742,1743,5,110,0,0,1743,1744,5,117,0,0,1744,1745, + 5,40,0,0,1745,410,1,0,0,0,1746,1747,5,112,0,0,1747,1748,5,114,0,0,1748, + 1749,5,105,0,0,1749,1750,5,109,0,0,1750,1751,5,101,0,0,1751,1752,5,111, + 0,0,1752,1753,5,109,0,0,1753,1754,5,101,0,0,1754,1755,5,103,0,0,1755,1756, + 5,97,0,0,1756,1757,5,40,0,0,1757,412,1,0,0,0,1758,1759,5,112,0,0,1759, + 1760,5,114,0,0,1760,1761,5,105,0,0,1761,1762,5,109,0,0,1762,1763,5,101, + 0,0,1763,1764,5,112,0,0,1764,1765,5,105,0,0,1765,1766,5,40,0,0,1766,414, + 1,0,0,0,1767,1768,5,104,0,0,1768,1769,5,97,0,0,1769,1770,5,114,0,0,1770, + 1771,5,109,0,0,1771,1772,5,111,0,0,1772,1773,5,110,0,0,1773,1774,5,105, + 0,0,1774,1775,5,99,0,0,1775,1776,5,110,0,0,1776,1777,5,117,0,0,1777,1778, + 5,109,0,0,1778,1779,5,98,0,0,1779,1780,5,101,0,0,1780,1781,5,114,0,0,1781, + 1782,5,40,0,0,1782,416,1,0,0,0,1783,1784,5,99,0,0,1784,1785,5,97,0,0,1785, + 1786,5,116,0,0,1786,1787,5,97,0,0,1787,1788,5,108,0,0,1788,1789,5,97,0, + 0,1789,1790,5,110,0,0,1790,1791,5,110,0,0,1791,1792,5,117,0,0,1792,1793, + 5,109,0,0,1793,1794,5,98,0,0,1794,1795,5,101,0,0,1795,1796,5,114,0,0,1796, + 1797,5,40,0,0,1797,418,1,0,0,0,1798,1799,5,109,0,0,1799,1800,5,117,0,0, + 1800,1801,5,108,0,0,1801,1802,5,116,0,0,1802,1803,5,105,0,0,1803,1804, + 5,110,0,0,1804,1805,5,111,0,0,1805,1806,5,109,0,0,1806,1807,5,105,0,0, + 1807,1808,5,97,0,0,1808,1809,5,108,0,0,1809,1810,5,40,0,0,1810,420,1,0, + 0,0,1811,1812,5,102,0,0,1812,1813,5,97,0,0,1813,1814,5,108,0,0,1814,1815, + 5,108,0,0,1815,1816,5,105,0,0,1816,1817,5,110,0,0,1817,1818,5,103,0,0, + 1818,1819,5,102,0,0,1819,1820,5,97,0,0,1820,1821,5,99,0,0,1821,1822,5, + 116,0,0,1822,1823,5,111,0,0,1823,1824,5,114,0,0,1824,1825,5,105,0,0,1825, + 1826,5,97,0,0,1826,1827,5,108,0,0,1827,1828,5,40,0,0,1828,422,1,0,0,0, + 1829,1830,5,102,0,0,1830,1831,5,97,0,0,1831,1832,5,99,0,0,1832,1833,5, + 116,0,0,1833,1834,5,111,0,0,1834,1835,5,114,0,0,1835,1836,5,105,0,0,1836, + 1837,5,97,0,0,1837,1838,5,108,0,0,1838,1839,5,112,0,0,1839,1840,5,111, + 0,0,1840,1841,5,119,0,0,1841,1842,5,101,0,0,1842,1843,5,114,0,0,1843,1844, + 5,40,0,0,1844,424,1,0,0,0,1845,1846,5,114,0,0,1846,1847,5,105,0,0,1847, + 1848,5,115,0,0,1848,1849,5,105,0,0,1849,1850,5,110,0,0,1850,1851,5,103, + 0,0,1851,1852,5,102,0,0,1852,1853,5,97,0,0,1853,1854,5,99,0,0,1854,1855, + 5,116,0,0,1855,1856,5,111,0,0,1856,1857,5,114,0,0,1857,1858,5,105,0,0, + 1858,1859,5,97,0,0,1859,1860,5,108,0,0,1860,1861,5,40,0,0,1861,426,1,0, + 0,0,1862,1863,5,102,0,0,1863,1864,5,111,0,0,1864,1865,5,114,0,0,1865,1866, + 5,119,0,0,1866,1867,5,97,0,0,1867,1868,5,114,0,0,1868,1869,5,100,0,0,1869, + 1870,5,100,0,0,1870,1871,5,105,0,0,1871,1872,5,102,0,0,1872,1873,5,102, + 0,0,1873,1874,5,101,0,0,1874,1875,5,114,0,0,1875,1876,5,101,0,0,1876,1877, + 5,110,0,0,1877,1878,5,99,0,0,1878,1879,5,101,0,0,1879,1880,5,40,0,0,1880, + 428,1,0,0,0,1881,1882,5,108,0,0,1882,1883,5,97,0,0,1883,1884,5,112,0,0, + 1884,1885,5,108,0,0,1885,1886,5,97,0,0,1886,1887,5,99,0,0,1887,1888,5, + 105,0,0,1888,1889,5,97,0,0,1889,1890,5,110,0,0,1890,1891,5,40,0,0,1891, + 430,1,0,0,0,1892,1893,5,106,0,0,1893,1894,5,97,0,0,1894,1895,5,99,0,0, + 1895,1896,5,111,0,0,1896,1897,5,98,0,0,1897,1898,5,105,0,0,1898,1899,5, + 97,0,0,1899,1900,5,110,0,0,1900,1901,5,40,0,0,1901,432,1,0,0,0,1902,1903, + 5,104,0,0,1903,1904,5,101,0,0,1904,1905,5,115,0,0,1905,1906,5,115,0,0, + 1906,1907,5,105,0,0,1907,1908,5,97,0,0,1908,1909,5,110,0,0,1909,1910,5, + 40,0,0,1910,434,1,0,0,0,1911,1912,5,104,0,0,1912,1913,5,101,0,0,1913,1914, + 5,97,0,0,1914,1915,5,118,0,0,1915,1916,5,105,0,0,1916,1917,5,115,0,0,1917, + 1918,5,105,0,0,1918,1919,5,100,0,0,1919,1920,5,101,0,0,1920,1921,5,40, + 0,0,1921,436,1,0,0,0,1922,1923,5,117,0,0,1923,1924,5,110,0,0,1924,1925, + 5,105,0,0,1925,1926,5,116,0,0,1926,1927,5,115,0,0,1927,1928,5,116,0,0, + 1928,1929,5,101,0,0,1929,1930,5,112,0,0,1930,1931,5,40,0,0,1931,438,1, + 0,0,0,1932,1933,5,105,0,0,1933,1934,5,115,0,0,1934,1935,5,112,0,0,1935, + 1936,5,114,0,0,1936,1937,5,105,0,0,1937,1938,5,109,0,0,1938,1939,5,101, + 0,0,1939,1940,5,40,0,0,1940,440,1,0,0,0,1941,1942,5,112,0,0,1942,1943, + 5,111,0,0,1943,1944,5,99,0,0,1944,1945,5,104,0,0,1945,1946,5,104,0,0,1946, + 1947,5,97,0,0,1947,1948,5,109,0,0,1948,1949,5,109,0,0,1949,1950,5,101, + 0,0,1950,1951,5,114,0,0,1951,1952,5,40,0,0,1952,442,1,0,0,0,1953,1954, + 5,100,0,0,1954,1955,5,111,0,0,1955,1956,5,117,0,0,1956,1957,5,98,0,0,1957, + 1958,5,108,0,0,1958,1959,5,101,0,0,1959,1960,5,102,0,0,1960,1961,5,97, + 0,0,1961,1962,5,99,0,0,1962,1963,5,116,0,0,1963,1964,5,111,0,0,1964,1965, + 5,114,0,0,1965,1966,5,105,0,0,1966,1967,5,97,0,0,1967,1968,5,108,0,0,1968, + 1969,5,40,0,0,1969,444,1,0,0,0,1970,1971,5,102,0,0,1971,1972,5,97,0,0, + 1972,1973,5,99,0,0,1973,1974,5,116,0,0,1974,1975,5,111,0,0,1975,1976,5, + 114,0,0,1976,1977,5,105,0,0,1977,1978,5,97,0,0,1978,1979,5,108,0,0,1979, + 1980,5,50,0,0,1980,1981,5,40,0,0,1981,446,1,0,0,0,1982,1983,5,102,0,0, + 1983,1984,5,114,0,0,1984,1985,5,97,0,0,1985,1986,5,99,0,0,1986,1987,5, + 116,0,0,1987,1988,5,105,0,0,1988,1989,5,111,0,0,1989,1990,5,110,0,0,1990, + 1991,5,97,0,0,1991,1992,5,108,0,0,1992,1993,5,112,0,0,1993,1994,5,97,0, + 0,1994,1995,5,114,0,0,1995,1996,5,116,0,0,1996,1997,5,40,0,0,1997,448, + 1,0,0,0,1998,1999,5,113,0,0,1999,2000,5,117,0,0,2000,2001,5,111,0,0,2001, + 2002,5,116,0,0,2002,2003,5,105,0,0,2003,2004,5,101,0,0,2004,2005,5,110, + 0,0,2005,2006,5,116,0,0,2006,2007,5,40,0,0,2007,450,1,0,0,0,2008,2009, + 5,100,0,0,2009,2010,5,111,0,0,2010,2011,5,109,0,0,2011,2012,5,97,0,0,2012, + 2013,5,105,0,0,2013,2014,5,110,0,0,2014,2015,5,40,0,0,2015,452,1,0,0,0, + 2016,2017,5,112,0,0,2017,2018,5,105,0,0,2018,2019,5,101,0,0,2019,2020, + 5,99,0,0,2020,2021,5,101,0,0,2021,2022,5,119,0,0,2022,2023,5,105,0,0,2023, + 2024,5,115,0,0,2024,2025,5,101,0,0,2025,2026,5,40,0,0,2026,454,1,0,0,0, + 2027,2028,5,97,0,0,2028,2029,5,112,0,0,2029,2030,5,112,0,0,2030,2031,5, + 108,0,0,2031,2032,5,121,0,0,2032,2033,5,40,0,0,2033,456,1,0,0,0,2034,2035, + 5,108,0,0,2035,2036,5,97,0,0,2036,2037,5,109,0,0,2037,2038,5,98,0,0,2038, + 2039,5,100,0,0,2039,2040,5,97,0,0,2040,2041,5,40,0,0,2041,458,1,0,0,0, + 2042,2044,5,13,0,0,2043,2042,1,0,0,0,2043,2044,1,0,0,0,2044,2045,1,0,0, + 0,2045,2047,5,10,0,0,2046,2043,1,0,0,0,2047,2048,1,0,0,0,2048,2046,1,0, + 0,0,2048,2049,1,0,0,0,2049,2050,1,0,0,0,2050,2051,6,229,0,0,2051,460,1, + 0,0,0,2052,2054,7,0,0,0,2053,2055,7,1,0,0,2054,2053,1,0,0,0,2054,2055, + 1,0,0,0,2055,2057,1,0,0,0,2056,2058,2,48,57,0,2057,2056,1,0,0,0,2058,2059, + 1,0,0,0,2059,2057,1,0,0,0,2059,2060,1,0,0,0,2060,462,1,0,0,0,2061,2063, + 2,48,57,0,2062,2061,1,0,0,0,2063,2064,1,0,0,0,2064,2062,1,0,0,0,2064,2065, + 1,0,0,0,2065,2066,1,0,0,0,2066,2070,5,46,0,0,2067,2069,2,48,57,0,2068, + 2067,1,0,0,0,2069,2072,1,0,0,0,2070,2068,1,0,0,0,2070,2071,1,0,0,0,2071, + 2074,1,0,0,0,2072,2070,1,0,0,0,2073,2075,3,461,230,0,2074,2073,1,0,0,0, + 2074,2075,1,0,0,0,2075,2077,1,0,0,0,2076,2078,5,105,0,0,2077,2076,1,0, + 0,0,2077,2078,1,0,0,0,2078,2095,1,0,0,0,2079,2081,5,46,0,0,2080,2079,1, + 0,0,0,2080,2081,1,0,0,0,2081,2083,1,0,0,0,2082,2084,2,48,57,0,2083,2082, + 1,0,0,0,2084,2085,1,0,0,0,2085,2083,1,0,0,0,2085,2086,1,0,0,0,2086,2088, + 1,0,0,0,2087,2089,3,461,230,0,2088,2087,1,0,0,0,2088,2089,1,0,0,0,2089, + 2091,1,0,0,0,2090,2092,5,105,0,0,2091,2090,1,0,0,0,2091,2092,1,0,0,0,2092, + 2095,1,0,0,0,2093,2095,5,105,0,0,2094,2062,1,0,0,0,2094,2080,1,0,0,0,2094, + 2093,1,0,0,0,2095,464,1,0,0,0,2096,2097,5,67,0,0,2097,2115,5,67,0,0,2098, + 2099,5,82,0,0,2099,2115,5,82,0,0,2100,2101,5,81,0,0,2101,2115,5,81,0,0, + 2102,2103,5,90,0,0,2103,2115,5,90,0,0,2104,2105,5,66,0,0,2105,2115,5,66, + 0,0,2106,2107,5,90,0,0,2107,2108,5,90,0,0,2108,2115,5,42,0,0,2109,2110, + 5,90,0,0,2110,2111,5,90,0,0,2111,2115,5,43,0,0,2112,2113,5,80,0,0,2113, + 2115,5,80,0,0,2114,2096,1,0,0,0,2114,2098,1,0,0,0,2114,2100,1,0,0,0,2114, + 2102,1,0,0,0,2114,2104,1,0,0,0,2114,2106,1,0,0,0,2114,2109,1,0,0,0,2114, + 2112,1,0,0,0,2115,466,1,0,0,0,2116,2117,5,116,0,0,2117,2118,5,114,0,0, + 2118,2119,5,117,0,0,2119,2135,5,101,0,0,2120,2121,5,84,0,0,2121,2122,5, + 114,0,0,2122,2123,5,117,0,0,2123,2135,5,101,0,0,2124,2125,5,102,0,0,2125, + 2126,5,97,0,0,2126,2127,5,108,0,0,2127,2128,5,115,0,0,2128,2135,5,101, + 0,0,2129,2130,5,70,0,0,2130,2131,5,97,0,0,2131,2132,5,108,0,0,2132,2133, + 5,115,0,0,2133,2135,5,101,0,0,2134,2116,1,0,0,0,2134,2120,1,0,0,0,2134, + 2124,1,0,0,0,2134,2129,1,0,0,0,2135,468,1,0,0,0,2136,2137,5,78,0,0,2137, + 2138,5,97,0,0,2138,2139,5,78,0,0,2139,470,1,0,0,0,2140,2142,7,2,0,0,2141, + 2140,1,0,0,0,2142,2143,1,0,0,0,2143,2141,1,0,0,0,2143,2144,1,0,0,0,2144, + 2153,1,0,0,0,2145,2147,5,95,0,0,2146,2148,7,3,0,0,2147,2146,1,0,0,0,2148, + 2149,1,0,0,0,2149,2147,1,0,0,0,2149,2150,1,0,0,0,2150,2152,1,0,0,0,2151, + 2145,1,0,0,0,2152,2155,1,0,0,0,2153,2151,1,0,0,0,2153,2154,1,0,0,0,2154, + 472,1,0,0,0,2155,2153,1,0,0,0,2156,2157,5,47,0,0,2157,2158,5,47,0,0,2158, + 2162,1,0,0,0,2159,2161,8,4,0,0,2160,2159,1,0,0,0,2161,2164,1,0,0,0,2162, + 2160,1,0,0,0,2162,2163,1,0,0,0,2163,2169,1,0,0,0,2164,2162,1,0,0,0,2165, + 2167,5,13,0,0,2166,2165,1,0,0,0,2166,2167,1,0,0,0,2167,2168,1,0,0,0,2168, + 2170,5,10,0,0,2169,2166,1,0,0,0,2169,2170,1,0,0,0,2170,2183,1,0,0,0,2171, + 2172,5,47,0,0,2172,2173,5,42,0,0,2173,2177,1,0,0,0,2174,2176,9,0,0,0,2175, + 2174,1,0,0,0,2176,2179,1,0,0,0,2177,2178,1,0,0,0,2177,2175,1,0,0,0,2178, + 2180,1,0,0,0,2179,2177,1,0,0,0,2180,2181,5,42,0,0,2181,2183,5,47,0,0,2182, + 2156,1,0,0,0,2182,2171,1,0,0,0,2183,2184,1,0,0,0,2184,2185,6,236,0,0,2185, + 474,1,0,0,0,2186,2188,7,5,0,0,2187,2186,1,0,0,0,2188,2189,1,0,0,0,2189, + 2187,1,0,0,0,2189,2190,1,0,0,0,2190,2191,1,0,0,0,2191,2192,6,237,0,0,2192, + 476,1,0,0,0,25,0,2043,2048,2054,2059,2064,2070,2074,2077,2080,2085,2088, + 2091,2094,2114,2134,2143,2149,2153,2162,2166,2169,2177,2182,2189,1,6,0, + 0 }; public static readonly ATN _ATN = diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.interp b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.interp index 5d2215c1d..09f453712 100644 --- a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.interp +++ b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.interp @@ -1,6 +1,8 @@ token literal names: null '!' +'!!' +'!!!' '^' '-' '+' @@ -465,6 +467,8 @@ null null null null +null +null NEWLINE NUMBER SPECIALSET @@ -702,6 +706,8 @@ T__223 T__224 T__225 T__226 +T__227 +T__228 NEWLINE EXPONENT NUMBER @@ -720,4 +726,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 235, 2182, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 3, 227, 2033, 8, 227, 1, 227, 4, 227, 2036, 8, 227, 11, 227, 12, 227, 2037, 1, 227, 1, 227, 1, 228, 1, 228, 3, 228, 2044, 8, 228, 1, 228, 4, 228, 2047, 8, 228, 11, 228, 12, 228, 2048, 1, 229, 4, 229, 2052, 8, 229, 11, 229, 12, 229, 2053, 1, 229, 1, 229, 5, 229, 2058, 8, 229, 10, 229, 12, 229, 2061, 9, 229, 1, 229, 3, 229, 2064, 8, 229, 1, 229, 3, 229, 2067, 8, 229, 1, 229, 3, 229, 2070, 8, 229, 1, 229, 4, 229, 2073, 8, 229, 11, 229, 12, 229, 2074, 1, 229, 3, 229, 2078, 8, 229, 1, 229, 3, 229, 2081, 8, 229, 1, 229, 3, 229, 2084, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 2104, 8, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 3, 231, 2124, 8, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 4, 233, 2131, 8, 233, 11, 233, 12, 233, 2132, 1, 233, 1, 233, 4, 233, 2137, 8, 233, 11, 233, 12, 233, 2138, 5, 233, 2141, 8, 233, 10, 233, 12, 233, 2144, 9, 233, 1, 234, 1, 234, 1, 234, 1, 234, 5, 234, 2150, 8, 234, 10, 234, 12, 234, 2153, 9, 234, 1, 234, 3, 234, 2156, 8, 234, 1, 234, 3, 234, 2159, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 5, 234, 2165, 8, 234, 10, 234, 12, 234, 2168, 9, 234, 1, 234, 1, 234, 3, 234, 2172, 8, 234, 1, 234, 1, 234, 1, 235, 4, 235, 2177, 8, 235, 11, 235, 12, 235, 2178, 1, 235, 1, 235, 1, 2166, 0, 236, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 0, 459, 229, 461, 230, 463, 231, 465, 232, 467, 233, 469, 234, 471, 235, 1, 0, 6, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 5, 0, 65, 90, 97, 122, 880, 1279, 7936, 8191, 8495, 8495, 5, 0, 48, 57, 65, 90, 97, 122, 880, 1279, 7936, 8191, 2, 0, 10, 10, 13, 13, 2, 0, 9, 9, 32, 32, 2213, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 1, 473, 1, 0, 0, 0, 3, 475, 1, 0, 0, 0, 5, 477, 1, 0, 0, 0, 7, 479, 1, 0, 0, 0, 9, 481, 1, 0, 0, 0, 11, 483, 1, 0, 0, 0, 13, 487, 1, 0, 0, 0, 15, 489, 1, 0, 0, 0, 17, 491, 1, 0, 0, 0, 19, 495, 1, 0, 0, 0, 21, 505, 1, 0, 0, 0, 23, 508, 1, 0, 0, 0, 25, 514, 1, 0, 0, 0, 27, 517, 1, 0, 0, 0, 29, 529, 1, 0, 0, 0, 31, 531, 1, 0, 0, 0, 33, 534, 1, 0, 0, 0, 35, 541, 1, 0, 0, 0, 37, 543, 1, 0, 0, 0, 39, 552, 1, 0, 0, 0, 41, 554, 1, 0, 0, 0, 43, 562, 1, 0, 0, 0, 45, 564, 1, 0, 0, 0, 47, 567, 1, 0, 0, 0, 49, 570, 1, 0, 0, 0, 51, 572, 1, 0, 0, 0, 53, 574, 1, 0, 0, 0, 55, 576, 1, 0, 0, 0, 57, 579, 1, 0, 0, 0, 59, 581, 1, 0, 0, 0, 61, 583, 1, 0, 0, 0, 63, 585, 1, 0, 0, 0, 65, 589, 1, 0, 0, 0, 67, 593, 1, 0, 0, 0, 69, 595, 1, 0, 0, 0, 71, 599, 1, 0, 0, 0, 73, 602, 1, 0, 0, 0, 75, 610, 1, 0, 0, 0, 77, 613, 1, 0, 0, 0, 79, 622, 1, 0, 0, 0, 81, 625, 1, 0, 0, 0, 83, 627, 1, 0, 0, 0, 85, 634, 1, 0, 0, 0, 87, 636, 1, 0, 0, 0, 89, 644, 1, 0, 0, 0, 91, 647, 1, 0, 0, 0, 93, 654, 1, 0, 0, 0, 95, 656, 1, 0, 0, 0, 97, 658, 1, 0, 0, 0, 99, 660, 1, 0, 0, 0, 101, 664, 1, 0, 0, 0, 103, 668, 1, 0, 0, 0, 105, 671, 1, 0, 0, 0, 107, 674, 1, 0, 0, 0, 109, 676, 1, 0, 0, 0, 111, 678, 1, 0, 0, 0, 113, 681, 1, 0, 0, 0, 115, 683, 1, 0, 0, 0, 117, 685, 1, 0, 0, 0, 119, 687, 1, 0, 0, 0, 121, 692, 1, 0, 0, 0, 123, 699, 1, 0, 0, 0, 125, 705, 1, 0, 0, 0, 127, 710, 1, 0, 0, 0, 129, 716, 1, 0, 0, 0, 131, 722, 1, 0, 0, 0, 133, 727, 1, 0, 0, 0, 135, 731, 1, 0, 0, 0, 137, 736, 1, 0, 0, 0, 139, 741, 1, 0, 0, 0, 141, 746, 1, 0, 0, 0, 143, 751, 1, 0, 0, 0, 145, 758, 1, 0, 0, 0, 147, 763, 1, 0, 0, 0, 149, 768, 1, 0, 0, 0, 151, 775, 1, 0, 0, 0, 153, 780, 1, 0, 0, 0, 155, 788, 1, 0, 0, 0, 157, 796, 1, 0, 0, 0, 159, 804, 1, 0, 0, 0, 161, 814, 1, 0, 0, 0, 163, 822, 1, 0, 0, 0, 165, 832, 1, 0, 0, 0, 167, 840, 1, 0, 0, 0, 169, 846, 1, 0, 0, 0, 171, 852, 1, 0, 0, 0, 173, 858, 1, 0, 0, 0, 175, 864, 1, 0, 0, 0, 177, 872, 1, 0, 0, 0, 179, 878, 1, 0, 0, 0, 181, 886, 1, 0, 0, 0, 183, 892, 1, 0, 0, 0, 185, 900, 1, 0, 0, 0, 187, 906, 1, 0, 0, 0, 189, 910, 1, 0, 0, 0, 191, 916, 1, 0, 0, 0, 193, 920, 1, 0, 0, 0, 195, 926, 1, 0, 0, 0, 197, 930, 1, 0, 0, 0, 199, 938, 1, 0, 0, 0, 201, 944, 1, 0, 0, 0, 203, 949, 1, 0, 0, 0, 205, 955, 1, 0, 0, 0, 207, 960, 1, 0, 0, 0, 209, 968, 1, 0, 0, 0, 211, 974, 1, 0, 0, 0, 213, 981, 1, 0, 0, 0, 215, 989, 1, 0, 0, 0, 217, 995, 1, 0, 0, 0, 219, 1004, 1, 0, 0, 0, 221, 1011, 1, 0, 0, 0, 223, 1019, 1, 0, 0, 0, 225, 1025, 1, 0, 0, 0, 227, 1034, 1, 0, 0, 0, 229, 1041, 1, 0, 0, 0, 231, 1049, 1, 0, 0, 0, 233, 1055, 1, 0, 0, 0, 235, 1064, 1, 0, 0, 0, 237, 1071, 1, 0, 0, 0, 239, 1079, 1, 0, 0, 0, 241, 1088, 1, 0, 0, 0, 243, 1098, 1, 0, 0, 0, 245, 1105, 1, 0, 0, 0, 247, 1116, 1, 0, 0, 0, 249, 1123, 1, 0, 0, 0, 251, 1131, 1, 0, 0, 0, 253, 1138, 1, 0, 0, 0, 255, 1147, 1, 0, 0, 0, 257, 1156, 1, 0, 0, 0, 259, 1166, 1, 0, 0, 0, 261, 1174, 1, 0, 0, 0, 263, 1185, 1, 0, 0, 0, 265, 1192, 1, 0, 0, 0, 267, 1203, 1, 0, 0, 0, 269, 1210, 1, 0, 0, 0, 271, 1222, 1, 0, 0, 0, 273, 1232, 1, 0, 0, 0, 275, 1239, 1, 0, 0, 0, 277, 1250, 1, 0, 0, 0, 279, 1262, 1, 0, 0, 0, 281, 1267, 1, 0, 0, 0, 283, 1276, 1, 0, 0, 0, 285, 1284, 1, 0, 0, 0, 287, 1289, 1, 0, 0, 0, 289, 1295, 1, 0, 0, 0, 291, 1300, 1, 0, 0, 0, 293, 1305, 1, 0, 0, 0, 295, 1312, 1, 0, 0, 0, 297, 1323, 1, 0, 0, 0, 299, 1329, 1, 0, 0, 0, 301, 1339, 1, 0, 0, 0, 303, 1346, 1, 0, 0, 0, 305, 1360, 1, 0, 0, 0, 307, 1372, 1, 0, 0, 0, 309, 1379, 1, 0, 0, 0, 311, 1389, 1, 0, 0, 0, 313, 1396, 1, 0, 0, 0, 315, 1402, 1, 0, 0, 0, 317, 1411, 1, 0, 0, 0, 319, 1418, 1, 0, 0, 0, 321, 1423, 1, 0, 0, 0, 323, 1428, 1, 0, 0, 0, 325, 1436, 1, 0, 0, 0, 327, 1444, 1, 0, 0, 0, 329, 1449, 1, 0, 0, 0, 331, 1454, 1, 0, 0, 0, 333, 1464, 1, 0, 0, 0, 335, 1473, 1, 0, 0, 0, 337, 1480, 1, 0, 0, 0, 339, 1485, 1, 0, 0, 0, 341, 1491, 1, 0, 0, 0, 343, 1497, 1, 0, 0, 0, 345, 1501, 1, 0, 0, 0, 347, 1505, 1, 0, 0, 0, 349, 1516, 1, 0, 0, 0, 351, 1525, 1, 0, 0, 0, 353, 1529, 1, 0, 0, 0, 355, 1533, 1, 0, 0, 0, 357, 1538, 1, 0, 0, 0, 359, 1543, 1, 0, 0, 0, 361, 1548, 1, 0, 0, 0, 363, 1559, 1, 0, 0, 0, 365, 1564, 1, 0, 0, 0, 367, 1571, 1, 0, 0, 0, 369, 1582, 1, 0, 0, 0, 371, 1593, 1, 0, 0, 0, 373, 1599, 1, 0, 0, 0, 375, 1604, 1, 0, 0, 0, 377, 1608, 1, 0, 0, 0, 379, 1612, 1, 0, 0, 0, 381, 1616, 1, 0, 0, 0, 383, 1622, 1, 0, 0, 0, 385, 1626, 1, 0, 0, 0, 387, 1632, 1, 0, 0, 0, 389, 1639, 1, 0, 0, 0, 391, 1645, 1, 0, 0, 0, 393, 1658, 1, 0, 0, 0, 395, 1671, 1, 0, 0, 0, 397, 1681, 1, 0, 0, 0, 399, 1693, 1, 0, 0, 0, 401, 1701, 1, 0, 0, 0, 403, 1712, 1, 0, 0, 0, 405, 1726, 1, 0, 0, 0, 407, 1735, 1, 0, 0, 0, 409, 1747, 1, 0, 0, 0, 411, 1756, 1, 0, 0, 0, 413, 1772, 1, 0, 0, 0, 415, 1787, 1, 0, 0, 0, 417, 1800, 1, 0, 0, 0, 419, 1818, 1, 0, 0, 0, 421, 1834, 1, 0, 0, 0, 423, 1851, 1, 0, 0, 0, 425, 1870, 1, 0, 0, 0, 427, 1881, 1, 0, 0, 0, 429, 1891, 1, 0, 0, 0, 431, 1900, 1, 0, 0, 0, 433, 1911, 1, 0, 0, 0, 435, 1921, 1, 0, 0, 0, 437, 1930, 1, 0, 0, 0, 439, 1942, 1, 0, 0, 0, 441, 1959, 1, 0, 0, 0, 443, 1971, 1, 0, 0, 0, 445, 1987, 1, 0, 0, 0, 447, 1997, 1, 0, 0, 0, 449, 2005, 1, 0, 0, 0, 451, 2016, 1, 0, 0, 0, 453, 2023, 1, 0, 0, 0, 455, 2035, 1, 0, 0, 0, 457, 2041, 1, 0, 0, 0, 459, 2083, 1, 0, 0, 0, 461, 2103, 1, 0, 0, 0, 463, 2123, 1, 0, 0, 0, 465, 2125, 1, 0, 0, 0, 467, 2130, 1, 0, 0, 0, 469, 2171, 1, 0, 0, 0, 471, 2176, 1, 0, 0, 0, 473, 474, 5, 33, 0, 0, 474, 2, 1, 0, 0, 0, 475, 476, 5, 94, 0, 0, 476, 4, 1, 0, 0, 0, 477, 478, 5, 45, 0, 0, 478, 6, 1, 0, 0, 0, 479, 480, 5, 43, 0, 0, 480, 8, 1, 0, 0, 0, 481, 482, 5, 42, 0, 0, 482, 10, 1, 0, 0, 0, 483, 484, 5, 46, 0, 0, 484, 485, 5, 46, 0, 0, 485, 486, 5, 46, 0, 0, 486, 12, 1, 0, 0, 0, 487, 488, 5, 8230, 0, 0, 488, 14, 1, 0, 0, 0, 489, 490, 5, 47, 0, 0, 490, 16, 1, 0, 0, 0, 491, 492, 5, 109, 0, 0, 492, 493, 5, 111, 0, 0, 493, 494, 5, 100, 0, 0, 494, 18, 1, 0, 0, 0, 495, 496, 5, 105, 0, 0, 496, 497, 5, 110, 0, 0, 497, 498, 5, 116, 0, 0, 498, 499, 5, 101, 0, 0, 499, 500, 5, 114, 0, 0, 500, 501, 5, 115, 0, 0, 501, 502, 5, 101, 0, 0, 502, 503, 5, 99, 0, 0, 503, 504, 5, 116, 0, 0, 504, 20, 1, 0, 0, 0, 505, 506, 5, 47, 0, 0, 506, 507, 5, 92, 0, 0, 507, 22, 1, 0, 0, 0, 508, 509, 5, 117, 0, 0, 509, 510, 5, 110, 0, 0, 510, 511, 5, 105, 0, 0, 511, 512, 5, 116, 0, 0, 512, 513, 5, 101, 0, 0, 513, 24, 1, 0, 0, 0, 514, 515, 5, 92, 0, 0, 515, 516, 5, 47, 0, 0, 516, 26, 1, 0, 0, 0, 517, 518, 5, 115, 0, 0, 518, 519, 5, 101, 0, 0, 519, 520, 5, 116, 0, 0, 520, 521, 5, 115, 0, 0, 521, 522, 5, 117, 0, 0, 522, 523, 5, 98, 0, 0, 523, 524, 5, 116, 0, 0, 524, 525, 5, 114, 0, 0, 525, 526, 5, 97, 0, 0, 526, 527, 5, 99, 0, 0, 527, 528, 5, 116, 0, 0, 528, 28, 1, 0, 0, 0, 529, 530, 5, 92, 0, 0, 530, 30, 1, 0, 0, 0, 531, 532, 5, 105, 0, 0, 532, 533, 5, 110, 0, 0, 533, 32, 1, 0, 0, 0, 534, 535, 5, 115, 0, 0, 535, 536, 5, 117, 0, 0, 536, 537, 5, 98, 0, 0, 537, 538, 5, 115, 0, 0, 538, 539, 5, 101, 0, 0, 539, 540, 5, 116, 0, 0, 540, 34, 1, 0, 0, 0, 541, 542, 5, 8838, 0, 0, 542, 36, 1, 0, 0, 0, 543, 544, 5, 115, 0, 0, 544, 545, 5, 117, 0, 0, 545, 546, 5, 112, 0, 0, 546, 547, 5, 101, 0, 0, 547, 548, 5, 114, 0, 0, 548, 549, 5, 115, 0, 0, 549, 550, 5, 101, 0, 0, 550, 551, 5, 116, 0, 0, 551, 38, 1, 0, 0, 0, 552, 553, 5, 8839, 0, 0, 553, 40, 1, 0, 0, 0, 554, 555, 5, 100, 0, 0, 555, 556, 5, 105, 0, 0, 556, 557, 5, 118, 0, 0, 557, 558, 5, 105, 0, 0, 558, 559, 5, 100, 0, 0, 559, 560, 5, 101, 0, 0, 560, 561, 5, 115, 0, 0, 561, 42, 1, 0, 0, 0, 562, 563, 5, 124, 0, 0, 563, 44, 1, 0, 0, 0, 564, 565, 5, 62, 0, 0, 565, 566, 5, 61, 0, 0, 566, 46, 1, 0, 0, 0, 567, 568, 5, 60, 0, 0, 568, 569, 5, 61, 0, 0, 569, 48, 1, 0, 0, 0, 570, 571, 5, 62, 0, 0, 571, 50, 1, 0, 0, 0, 572, 573, 5, 60, 0, 0, 573, 52, 1, 0, 0, 0, 574, 575, 5, 61, 0, 0, 575, 54, 1, 0, 0, 0, 576, 577, 5, 60, 0, 0, 577, 578, 5, 62, 0, 0, 578, 56, 1, 0, 0, 0, 579, 580, 5, 8801, 0, 0, 580, 58, 1, 0, 0, 0, 581, 582, 5, 40, 0, 0, 582, 60, 1, 0, 0, 0, 583, 584, 5, 41, 0, 0, 584, 62, 1, 0, 0, 0, 585, 586, 5, 110, 0, 0, 586, 587, 5, 111, 0, 0, 587, 588, 5, 116, 0, 0, 588, 64, 1, 0, 0, 0, 589, 590, 5, 97, 0, 0, 590, 591, 5, 110, 0, 0, 591, 592, 5, 100, 0, 0, 592, 66, 1, 0, 0, 0, 593, 594, 5, 38, 0, 0, 594, 68, 1, 0, 0, 0, 595, 596, 5, 120, 0, 0, 596, 597, 5, 111, 0, 0, 597, 598, 5, 114, 0, 0, 598, 70, 1, 0, 0, 0, 599, 600, 5, 111, 0, 0, 600, 601, 5, 114, 0, 0, 601, 72, 1, 0, 0, 0, 602, 603, 5, 105, 0, 0, 603, 604, 5, 109, 0, 0, 604, 605, 5, 112, 0, 0, 605, 606, 5, 108, 0, 0, 606, 607, 5, 105, 0, 0, 607, 608, 5, 101, 0, 0, 608, 609, 5, 115, 0, 0, 609, 74, 1, 0, 0, 0, 610, 611, 5, 45, 0, 0, 611, 612, 5, 62, 0, 0, 612, 76, 1, 0, 0, 0, 613, 614, 5, 112, 0, 0, 614, 615, 5, 114, 0, 0, 615, 616, 5, 111, 0, 0, 616, 617, 5, 118, 0, 0, 617, 618, 5, 105, 0, 0, 618, 619, 5, 100, 0, 0, 619, 620, 5, 101, 0, 0, 620, 621, 5, 100, 0, 0, 621, 78, 1, 0, 0, 0, 622, 623, 5, 61, 0, 0, 623, 624, 5, 62, 0, 0, 624, 80, 1, 0, 0, 0, 625, 626, 5, 58, 0, 0, 626, 82, 1, 0, 0, 0, 627, 628, 5, 102, 0, 0, 628, 629, 5, 111, 0, 0, 629, 630, 5, 114, 0, 0, 630, 631, 5, 97, 0, 0, 631, 632, 5, 108, 0, 0, 632, 633, 5, 108, 0, 0, 633, 84, 1, 0, 0, 0, 634, 635, 5, 8704, 0, 0, 635, 86, 1, 0, 0, 0, 636, 637, 5, 101, 0, 0, 637, 638, 5, 120, 0, 0, 638, 639, 5, 105, 0, 0, 639, 640, 5, 115, 0, 0, 640, 641, 5, 116, 0, 0, 641, 642, 5, 115, 0, 0, 642, 643, 5, 33, 0, 0, 643, 88, 1, 0, 0, 0, 644, 645, 5, 8707, 0, 0, 645, 646, 5, 33, 0, 0, 646, 90, 1, 0, 0, 0, 647, 648, 5, 101, 0, 0, 648, 649, 5, 120, 0, 0, 649, 650, 5, 105, 0, 0, 650, 651, 5, 115, 0, 0, 651, 652, 5, 116, 0, 0, 652, 653, 5, 115, 0, 0, 653, 92, 1, 0, 0, 0, 654, 655, 5, 8707, 0, 0, 655, 94, 1, 0, 0, 0, 656, 657, 5, 44, 0, 0, 657, 96, 1, 0, 0, 0, 658, 659, 5, 59, 0, 0, 659, 98, 1, 0, 0, 0, 660, 661, 5, 43, 0, 0, 661, 662, 5, 111, 0, 0, 662, 663, 5, 111, 0, 0, 663, 100, 1, 0, 0, 0, 664, 665, 5, 45, 0, 0, 665, 666, 5, 111, 0, 0, 666, 667, 5, 111, 0, 0, 667, 102, 1, 0, 0, 0, 668, 669, 5, 40, 0, 0, 669, 670, 5, 124, 0, 0, 670, 104, 1, 0, 0, 0, 671, 672, 5, 124, 0, 0, 672, 673, 5, 41, 0, 0, 673, 106, 1, 0, 0, 0, 674, 675, 5, 35, 0, 0, 675, 108, 1, 0, 0, 0, 676, 677, 5, 91, 0, 0, 677, 110, 1, 0, 0, 0, 678, 679, 5, 93, 0, 0, 679, 680, 5, 84, 0, 0, 680, 112, 1, 0, 0, 0, 681, 682, 5, 93, 0, 0, 682, 114, 1, 0, 0, 0, 683, 684, 5, 123, 0, 0, 684, 116, 1, 0, 0, 0, 685, 686, 5, 125, 0, 0, 686, 118, 1, 0, 0, 0, 687, 688, 5, 108, 0, 0, 688, 689, 5, 111, 0, 0, 689, 690, 5, 103, 0, 0, 690, 691, 5, 40, 0, 0, 691, 120, 1, 0, 0, 0, 692, 693, 5, 108, 0, 0, 693, 694, 5, 111, 0, 0, 694, 695, 5, 103, 0, 0, 695, 696, 5, 49, 0, 0, 696, 697, 5, 48, 0, 0, 697, 698, 5, 40, 0, 0, 698, 122, 1, 0, 0, 0, 699, 700, 5, 108, 0, 0, 700, 701, 5, 111, 0, 0, 701, 702, 5, 103, 0, 0, 702, 703, 5, 50, 0, 0, 703, 704, 5, 40, 0, 0, 704, 124, 1, 0, 0, 0, 705, 706, 5, 112, 0, 0, 706, 707, 5, 111, 0, 0, 707, 708, 5, 119, 0, 0, 708, 709, 5, 40, 0, 0, 709, 126, 1, 0, 0, 0, 710, 711, 5, 115, 0, 0, 711, 712, 5, 113, 0, 0, 712, 713, 5, 114, 0, 0, 713, 714, 5, 116, 0, 0, 714, 715, 5, 40, 0, 0, 715, 128, 1, 0, 0, 0, 716, 717, 5, 99, 0, 0, 717, 718, 5, 98, 0, 0, 718, 719, 5, 114, 0, 0, 719, 720, 5, 116, 0, 0, 720, 721, 5, 40, 0, 0, 721, 130, 1, 0, 0, 0, 722, 723, 5, 115, 0, 0, 723, 724, 5, 113, 0, 0, 724, 725, 5, 114, 0, 0, 725, 726, 5, 40, 0, 0, 726, 132, 1, 0, 0, 0, 727, 728, 5, 108, 0, 0, 728, 729, 5, 110, 0, 0, 729, 730, 5, 40, 0, 0, 730, 134, 1, 0, 0, 0, 731, 732, 5, 101, 0, 0, 732, 733, 5, 120, 0, 0, 733, 734, 5, 112, 0, 0, 734, 735, 5, 40, 0, 0, 735, 136, 1, 0, 0, 0, 736, 737, 5, 115, 0, 0, 737, 738, 5, 105, 0, 0, 738, 739, 5, 110, 0, 0, 739, 740, 5, 40, 0, 0, 740, 138, 1, 0, 0, 0, 741, 742, 5, 99, 0, 0, 742, 743, 5, 111, 0, 0, 743, 744, 5, 115, 0, 0, 744, 745, 5, 40, 0, 0, 745, 140, 1, 0, 0, 0, 746, 747, 5, 116, 0, 0, 747, 748, 5, 97, 0, 0, 748, 749, 5, 110, 0, 0, 749, 750, 5, 40, 0, 0, 750, 142, 1, 0, 0, 0, 751, 752, 5, 99, 0, 0, 752, 753, 5, 111, 0, 0, 753, 754, 5, 116, 0, 0, 754, 755, 5, 97, 0, 0, 755, 756, 5, 110, 0, 0, 756, 757, 5, 40, 0, 0, 757, 144, 1, 0, 0, 0, 758, 759, 5, 99, 0, 0, 759, 760, 5, 111, 0, 0, 760, 761, 5, 116, 0, 0, 761, 762, 5, 40, 0, 0, 762, 146, 1, 0, 0, 0, 763, 764, 5, 115, 0, 0, 764, 765, 5, 101, 0, 0, 765, 766, 5, 99, 0, 0, 766, 767, 5, 40, 0, 0, 767, 148, 1, 0, 0, 0, 768, 769, 5, 99, 0, 0, 769, 770, 5, 111, 0, 0, 770, 771, 5, 115, 0, 0, 771, 772, 5, 101, 0, 0, 772, 773, 5, 99, 0, 0, 773, 774, 5, 40, 0, 0, 774, 150, 1, 0, 0, 0, 775, 776, 5, 99, 0, 0, 776, 777, 5, 115, 0, 0, 777, 778, 5, 99, 0, 0, 778, 779, 5, 40, 0, 0, 779, 152, 1, 0, 0, 0, 780, 781, 5, 97, 0, 0, 781, 782, 5, 114, 0, 0, 782, 783, 5, 99, 0, 0, 783, 784, 5, 115, 0, 0, 784, 785, 5, 105, 0, 0, 785, 786, 5, 110, 0, 0, 786, 787, 5, 40, 0, 0, 787, 154, 1, 0, 0, 0, 788, 789, 5, 97, 0, 0, 789, 790, 5, 114, 0, 0, 790, 791, 5, 99, 0, 0, 791, 792, 5, 99, 0, 0, 792, 793, 5, 111, 0, 0, 793, 794, 5, 115, 0, 0, 794, 795, 5, 40, 0, 0, 795, 156, 1, 0, 0, 0, 796, 797, 5, 97, 0, 0, 797, 798, 5, 114, 0, 0, 798, 799, 5, 99, 0, 0, 799, 800, 5, 116, 0, 0, 800, 801, 5, 97, 0, 0, 801, 802, 5, 110, 0, 0, 802, 803, 5, 40, 0, 0, 803, 158, 1, 0, 0, 0, 804, 805, 5, 97, 0, 0, 805, 806, 5, 114, 0, 0, 806, 807, 5, 99, 0, 0, 807, 808, 5, 99, 0, 0, 808, 809, 5, 111, 0, 0, 809, 810, 5, 116, 0, 0, 810, 811, 5, 97, 0, 0, 811, 812, 5, 110, 0, 0, 812, 813, 5, 40, 0, 0, 813, 160, 1, 0, 0, 0, 814, 815, 5, 97, 0, 0, 815, 816, 5, 114, 0, 0, 816, 817, 5, 99, 0, 0, 817, 818, 5, 115, 0, 0, 818, 819, 5, 101, 0, 0, 819, 820, 5, 99, 0, 0, 820, 821, 5, 40, 0, 0, 821, 162, 1, 0, 0, 0, 822, 823, 5, 97, 0, 0, 823, 824, 5, 114, 0, 0, 824, 825, 5, 99, 0, 0, 825, 826, 5, 99, 0, 0, 826, 827, 5, 111, 0, 0, 827, 828, 5, 115, 0, 0, 828, 829, 5, 101, 0, 0, 829, 830, 5, 99, 0, 0, 830, 831, 5, 40, 0, 0, 831, 164, 1, 0, 0, 0, 832, 833, 5, 97, 0, 0, 833, 834, 5, 114, 0, 0, 834, 835, 5, 99, 0, 0, 835, 836, 5, 99, 0, 0, 836, 837, 5, 115, 0, 0, 837, 838, 5, 99, 0, 0, 838, 839, 5, 40, 0, 0, 839, 166, 1, 0, 0, 0, 840, 841, 5, 97, 0, 0, 841, 842, 5, 99, 0, 0, 842, 843, 5, 115, 0, 0, 843, 844, 5, 99, 0, 0, 844, 845, 5, 40, 0, 0, 845, 168, 1, 0, 0, 0, 846, 847, 5, 97, 0, 0, 847, 848, 5, 115, 0, 0, 848, 849, 5, 105, 0, 0, 849, 850, 5, 110, 0, 0, 850, 851, 5, 40, 0, 0, 851, 170, 1, 0, 0, 0, 852, 853, 5, 97, 0, 0, 853, 854, 5, 99, 0, 0, 854, 855, 5, 111, 0, 0, 855, 856, 5, 115, 0, 0, 856, 857, 5, 40, 0, 0, 857, 172, 1, 0, 0, 0, 858, 859, 5, 97, 0, 0, 859, 860, 5, 116, 0, 0, 860, 861, 5, 97, 0, 0, 861, 862, 5, 110, 0, 0, 862, 863, 5, 40, 0, 0, 863, 174, 1, 0, 0, 0, 864, 865, 5, 97, 0, 0, 865, 866, 5, 99, 0, 0, 866, 867, 5, 111, 0, 0, 867, 868, 5, 116, 0, 0, 868, 869, 5, 97, 0, 0, 869, 870, 5, 110, 0, 0, 870, 871, 5, 40, 0, 0, 871, 176, 1, 0, 0, 0, 872, 873, 5, 97, 0, 0, 873, 874, 5, 115, 0, 0, 874, 875, 5, 101, 0, 0, 875, 876, 5, 99, 0, 0, 876, 877, 5, 40, 0, 0, 877, 178, 1, 0, 0, 0, 878, 879, 5, 97, 0, 0, 879, 880, 5, 99, 0, 0, 880, 881, 5, 111, 0, 0, 881, 882, 5, 115, 0, 0, 882, 883, 5, 101, 0, 0, 883, 884, 5, 99, 0, 0, 884, 885, 5, 40, 0, 0, 885, 180, 1, 0, 0, 0, 886, 887, 5, 97, 0, 0, 887, 888, 5, 99, 0, 0, 888, 889, 5, 111, 0, 0, 889, 890, 5, 116, 0, 0, 890, 891, 5, 40, 0, 0, 891, 182, 1, 0, 0, 0, 892, 893, 5, 97, 0, 0, 893, 894, 5, 114, 0, 0, 894, 895, 5, 99, 0, 0, 895, 896, 5, 99, 0, 0, 896, 897, 5, 111, 0, 0, 897, 898, 5, 116, 0, 0, 898, 899, 5, 40, 0, 0, 899, 184, 1, 0, 0, 0, 900, 901, 5, 115, 0, 0, 901, 902, 5, 105, 0, 0, 902, 903, 5, 110, 0, 0, 903, 904, 5, 104, 0, 0, 904, 905, 5, 40, 0, 0, 905, 186, 1, 0, 0, 0, 906, 907, 5, 115, 0, 0, 907, 908, 5, 104, 0, 0, 908, 909, 5, 40, 0, 0, 909, 188, 1, 0, 0, 0, 910, 911, 5, 99, 0, 0, 911, 912, 5, 111, 0, 0, 912, 913, 5, 115, 0, 0, 913, 914, 5, 104, 0, 0, 914, 915, 5, 40, 0, 0, 915, 190, 1, 0, 0, 0, 916, 917, 5, 99, 0, 0, 917, 918, 5, 104, 0, 0, 918, 919, 5, 40, 0, 0, 919, 192, 1, 0, 0, 0, 920, 921, 5, 116, 0, 0, 921, 922, 5, 97, 0, 0, 922, 923, 5, 110, 0, 0, 923, 924, 5, 104, 0, 0, 924, 925, 5, 40, 0, 0, 925, 194, 1, 0, 0, 0, 926, 927, 5, 116, 0, 0, 927, 928, 5, 104, 0, 0, 928, 929, 5, 40, 0, 0, 929, 196, 1, 0, 0, 0, 930, 931, 5, 99, 0, 0, 931, 932, 5, 111, 0, 0, 932, 933, 5, 116, 0, 0, 933, 934, 5, 97, 0, 0, 934, 935, 5, 110, 0, 0, 935, 936, 5, 104, 0, 0, 936, 937, 5, 40, 0, 0, 937, 198, 1, 0, 0, 0, 938, 939, 5, 99, 0, 0, 939, 940, 5, 111, 0, 0, 940, 941, 5, 116, 0, 0, 941, 942, 5, 104, 0, 0, 942, 943, 5, 40, 0, 0, 943, 200, 1, 0, 0, 0, 944, 945, 5, 99, 0, 0, 945, 946, 5, 116, 0, 0, 946, 947, 5, 104, 0, 0, 947, 948, 5, 40, 0, 0, 948, 202, 1, 0, 0, 0, 949, 950, 5, 115, 0, 0, 950, 951, 5, 101, 0, 0, 951, 952, 5, 99, 0, 0, 952, 953, 5, 104, 0, 0, 953, 954, 5, 40, 0, 0, 954, 204, 1, 0, 0, 0, 955, 956, 5, 115, 0, 0, 956, 957, 5, 99, 0, 0, 957, 958, 5, 104, 0, 0, 958, 959, 5, 40, 0, 0, 959, 206, 1, 0, 0, 0, 960, 961, 5, 99, 0, 0, 961, 962, 5, 111, 0, 0, 962, 963, 5, 115, 0, 0, 963, 964, 5, 101, 0, 0, 964, 965, 5, 99, 0, 0, 965, 966, 5, 104, 0, 0, 966, 967, 5, 40, 0, 0, 967, 208, 1, 0, 0, 0, 968, 969, 5, 99, 0, 0, 969, 970, 5, 115, 0, 0, 970, 971, 5, 99, 0, 0, 971, 972, 5, 104, 0, 0, 972, 973, 5, 40, 0, 0, 973, 210, 1, 0, 0, 0, 974, 975, 5, 97, 0, 0, 975, 976, 5, 115, 0, 0, 976, 977, 5, 105, 0, 0, 977, 978, 5, 110, 0, 0, 978, 979, 5, 104, 0, 0, 979, 980, 5, 40, 0, 0, 980, 212, 1, 0, 0, 0, 981, 982, 5, 97, 0, 0, 982, 983, 5, 114, 0, 0, 983, 984, 5, 115, 0, 0, 984, 985, 5, 105, 0, 0, 985, 986, 5, 110, 0, 0, 986, 987, 5, 104, 0, 0, 987, 988, 5, 40, 0, 0, 988, 214, 1, 0, 0, 0, 989, 990, 5, 97, 0, 0, 990, 991, 5, 114, 0, 0, 991, 992, 5, 115, 0, 0, 992, 993, 5, 104, 0, 0, 993, 994, 5, 40, 0, 0, 994, 216, 1, 0, 0, 0, 995, 996, 5, 97, 0, 0, 996, 997, 5, 114, 0, 0, 997, 998, 5, 99, 0, 0, 998, 999, 5, 115, 0, 0, 999, 1000, 5, 105, 0, 0, 1000, 1001, 5, 110, 0, 0, 1001, 1002, 5, 104, 0, 0, 1002, 1003, 5, 40, 0, 0, 1003, 218, 1, 0, 0, 0, 1004, 1005, 5, 97, 0, 0, 1005, 1006, 5, 99, 0, 0, 1006, 1007, 5, 111, 0, 0, 1007, 1008, 5, 115, 0, 0, 1008, 1009, 5, 104, 0, 0, 1009, 1010, 5, 40, 0, 0, 1010, 220, 1, 0, 0, 0, 1011, 1012, 5, 97, 0, 0, 1012, 1013, 5, 114, 0, 0, 1013, 1014, 5, 99, 0, 0, 1014, 1015, 5, 111, 0, 0, 1015, 1016, 5, 115, 0, 0, 1016, 1017, 5, 104, 0, 0, 1017, 1018, 5, 40, 0, 0, 1018, 222, 1, 0, 0, 0, 1019, 1020, 5, 97, 0, 0, 1020, 1021, 5, 114, 0, 0, 1021, 1022, 5, 99, 0, 0, 1022, 1023, 5, 104, 0, 0, 1023, 1024, 5, 40, 0, 0, 1024, 224, 1, 0, 0, 0, 1025, 1026, 5, 97, 0, 0, 1026, 1027, 5, 114, 0, 0, 1027, 1028, 5, 99, 0, 0, 1028, 1029, 5, 99, 0, 0, 1029, 1030, 5, 111, 0, 0, 1030, 1031, 5, 115, 0, 0, 1031, 1032, 5, 104, 0, 0, 1032, 1033, 5, 40, 0, 0, 1033, 226, 1, 0, 0, 0, 1034, 1035, 5, 97, 0, 0, 1035, 1036, 5, 116, 0, 0, 1036, 1037, 5, 97, 0, 0, 1037, 1038, 5, 110, 0, 0, 1038, 1039, 5, 104, 0, 0, 1039, 1040, 5, 40, 0, 0, 1040, 228, 1, 0, 0, 0, 1041, 1042, 5, 97, 0, 0, 1042, 1043, 5, 114, 0, 0, 1043, 1044, 5, 116, 0, 0, 1044, 1045, 5, 97, 0, 0, 1045, 1046, 5, 110, 0, 0, 1046, 1047, 5, 104, 0, 0, 1047, 1048, 5, 40, 0, 0, 1048, 230, 1, 0, 0, 0, 1049, 1050, 5, 97, 0, 0, 1050, 1051, 5, 114, 0, 0, 1051, 1052, 5, 116, 0, 0, 1052, 1053, 5, 104, 0, 0, 1053, 1054, 5, 40, 0, 0, 1054, 232, 1, 0, 0, 0, 1055, 1056, 5, 97, 0, 0, 1056, 1057, 5, 114, 0, 0, 1057, 1058, 5, 99, 0, 0, 1058, 1059, 5, 116, 0, 0, 1059, 1060, 5, 97, 0, 0, 1060, 1061, 5, 110, 0, 0, 1061, 1062, 5, 104, 0, 0, 1062, 1063, 5, 40, 0, 0, 1063, 234, 1, 0, 0, 0, 1064, 1065, 5, 97, 0, 0, 1065, 1066, 5, 99, 0, 0, 1066, 1067, 5, 111, 0, 0, 1067, 1068, 5, 116, 0, 0, 1068, 1069, 5, 104, 0, 0, 1069, 1070, 5, 40, 0, 0, 1070, 236, 1, 0, 0, 0, 1071, 1072, 5, 97, 0, 0, 1072, 1073, 5, 114, 0, 0, 1073, 1074, 5, 99, 0, 0, 1074, 1075, 5, 111, 0, 0, 1075, 1076, 5, 116, 0, 0, 1076, 1077, 5, 104, 0, 0, 1077, 1078, 5, 40, 0, 0, 1078, 238, 1, 0, 0, 0, 1079, 1080, 5, 97, 0, 0, 1080, 1081, 5, 99, 0, 0, 1081, 1082, 5, 111, 0, 0, 1082, 1083, 5, 116, 0, 0, 1083, 1084, 5, 97, 0, 0, 1084, 1085, 5, 110, 0, 0, 1085, 1086, 5, 104, 0, 0, 1086, 1087, 5, 40, 0, 0, 1087, 240, 1, 0, 0, 0, 1088, 1089, 5, 97, 0, 0, 1089, 1090, 5, 114, 0, 0, 1090, 1091, 5, 99, 0, 0, 1091, 1092, 5, 111, 0, 0, 1092, 1093, 5, 116, 0, 0, 1093, 1094, 5, 97, 0, 0, 1094, 1095, 5, 110, 0, 0, 1095, 1096, 5, 104, 0, 0, 1096, 1097, 5, 40, 0, 0, 1097, 242, 1, 0, 0, 0, 1098, 1099, 5, 97, 0, 0, 1099, 1100, 5, 114, 0, 0, 1100, 1101, 5, 99, 0, 0, 1101, 1102, 5, 116, 0, 0, 1102, 1103, 5, 104, 0, 0, 1103, 1104, 5, 40, 0, 0, 1104, 244, 1, 0, 0, 0, 1105, 1106, 5, 97, 0, 0, 1106, 1107, 5, 114, 0, 0, 1107, 1108, 5, 99, 0, 0, 1108, 1109, 5, 99, 0, 0, 1109, 1110, 5, 111, 0, 0, 1110, 1111, 5, 116, 0, 0, 1111, 1112, 5, 97, 0, 0, 1112, 1113, 5, 110, 0, 0, 1113, 1114, 5, 104, 0, 0, 1114, 1115, 5, 40, 0, 0, 1115, 246, 1, 0, 0, 0, 1116, 1117, 5, 97, 0, 0, 1117, 1118, 5, 115, 0, 0, 1118, 1119, 5, 101, 0, 0, 1119, 1120, 5, 99, 0, 0, 1120, 1121, 5, 104, 0, 0, 1121, 1122, 5, 40, 0, 0, 1122, 248, 1, 0, 0, 0, 1123, 1124, 5, 97, 0, 0, 1124, 1125, 5, 114, 0, 0, 1125, 1126, 5, 115, 0, 0, 1126, 1127, 5, 101, 0, 0, 1127, 1128, 5, 99, 0, 0, 1128, 1129, 5, 104, 0, 0, 1129, 1130, 5, 40, 0, 0, 1130, 250, 1, 0, 0, 0, 1131, 1132, 5, 97, 0, 0, 1132, 1133, 5, 114, 0, 0, 1133, 1134, 5, 115, 0, 0, 1134, 1135, 5, 99, 0, 0, 1135, 1136, 5, 104, 0, 0, 1136, 1137, 5, 40, 0, 0, 1137, 252, 1, 0, 0, 0, 1138, 1139, 5, 97, 0, 0, 1139, 1140, 5, 114, 0, 0, 1140, 1141, 5, 99, 0, 0, 1141, 1142, 5, 115, 0, 0, 1142, 1143, 5, 101, 0, 0, 1143, 1144, 5, 99, 0, 0, 1144, 1145, 5, 104, 0, 0, 1145, 1146, 5, 40, 0, 0, 1146, 254, 1, 0, 0, 0, 1147, 1148, 5, 97, 0, 0, 1148, 1149, 5, 99, 0, 0, 1149, 1150, 5, 111, 0, 0, 1150, 1151, 5, 115, 0, 0, 1151, 1152, 5, 101, 0, 0, 1152, 1153, 5, 99, 0, 0, 1153, 1154, 5, 104, 0, 0, 1154, 1155, 5, 40, 0, 0, 1155, 256, 1, 0, 0, 0, 1156, 1157, 5, 97, 0, 0, 1157, 1158, 5, 114, 0, 0, 1158, 1159, 5, 99, 0, 0, 1159, 1160, 5, 111, 0, 0, 1160, 1161, 5, 115, 0, 0, 1161, 1162, 5, 101, 0, 0, 1162, 1163, 5, 99, 0, 0, 1163, 1164, 5, 104, 0, 0, 1164, 1165, 5, 40, 0, 0, 1165, 258, 1, 0, 0, 0, 1166, 1167, 5, 97, 0, 0, 1167, 1168, 5, 114, 0, 0, 1168, 1169, 5, 99, 0, 0, 1169, 1170, 5, 115, 0, 0, 1170, 1171, 5, 99, 0, 0, 1171, 1172, 5, 104, 0, 0, 1172, 1173, 5, 40, 0, 0, 1173, 260, 1, 0, 0, 0, 1174, 1175, 5, 97, 0, 0, 1175, 1176, 5, 114, 0, 0, 1176, 1177, 5, 99, 0, 0, 1177, 1178, 5, 99, 0, 0, 1178, 1179, 5, 111, 0, 0, 1179, 1180, 5, 115, 0, 0, 1180, 1181, 5, 101, 0, 0, 1181, 1182, 5, 99, 0, 0, 1182, 1183, 5, 104, 0, 0, 1183, 1184, 5, 40, 0, 0, 1184, 262, 1, 0, 0, 0, 1185, 1186, 5, 97, 0, 0, 1186, 1187, 5, 99, 0, 0, 1187, 1188, 5, 115, 0, 0, 1188, 1189, 5, 99, 0, 0, 1189, 1190, 5, 104, 0, 0, 1190, 1191, 5, 40, 0, 0, 1191, 264, 1, 0, 0, 0, 1192, 1193, 5, 102, 0, 0, 1193, 1194, 5, 97, 0, 0, 1194, 1195, 5, 99, 0, 0, 1195, 1196, 5, 116, 0, 0, 1196, 1197, 5, 111, 0, 0, 1197, 1198, 5, 114, 0, 0, 1198, 1199, 5, 105, 0, 0, 1199, 1200, 5, 97, 0, 0, 1200, 1201, 5, 108, 0, 0, 1201, 1202, 5, 40, 0, 0, 1202, 266, 1, 0, 0, 0, 1203, 1204, 5, 103, 0, 0, 1204, 1205, 5, 97, 0, 0, 1205, 1206, 5, 109, 0, 0, 1206, 1207, 5, 109, 0, 0, 1207, 1208, 5, 97, 0, 0, 1208, 1209, 5, 40, 0, 0, 1209, 268, 1, 0, 0, 0, 1210, 1211, 5, 100, 0, 0, 1211, 1212, 5, 101, 0, 0, 1212, 1213, 5, 114, 0, 0, 1213, 1214, 5, 105, 0, 0, 1214, 1215, 5, 118, 0, 0, 1215, 1216, 5, 97, 0, 0, 1216, 1217, 5, 116, 0, 0, 1217, 1218, 5, 105, 0, 0, 1218, 1219, 5, 118, 0, 0, 1219, 1220, 5, 101, 0, 0, 1220, 1221, 5, 40, 0, 0, 1221, 270, 1, 0, 0, 0, 1222, 1223, 5, 105, 0, 0, 1223, 1224, 5, 110, 0, 0, 1224, 1225, 5, 116, 0, 0, 1225, 1226, 5, 101, 0, 0, 1226, 1227, 5, 103, 0, 0, 1227, 1228, 5, 114, 0, 0, 1228, 1229, 5, 97, 0, 0, 1229, 1230, 5, 108, 0, 0, 1230, 1231, 5, 40, 0, 0, 1231, 272, 1, 0, 0, 0, 1232, 1233, 5, 108, 0, 0, 1233, 1234, 5, 105, 0, 0, 1234, 1235, 5, 109, 0, 0, 1235, 1236, 5, 105, 0, 0, 1236, 1237, 5, 116, 0, 0, 1237, 1238, 5, 40, 0, 0, 1238, 274, 1, 0, 0, 0, 1239, 1240, 5, 108, 0, 0, 1240, 1241, 5, 105, 0, 0, 1241, 1242, 5, 109, 0, 0, 1242, 1243, 5, 105, 0, 0, 1243, 1244, 5, 116, 0, 0, 1244, 1245, 5, 108, 0, 0, 1245, 1246, 5, 101, 0, 0, 1246, 1247, 5, 102, 0, 0, 1247, 1248, 5, 116, 0, 0, 1248, 1249, 5, 40, 0, 0, 1249, 276, 1, 0, 0, 0, 1250, 1251, 5, 108, 0, 0, 1251, 1252, 5, 105, 0, 0, 1252, 1253, 5, 109, 0, 0, 1253, 1254, 5, 105, 0, 0, 1254, 1255, 5, 116, 0, 0, 1255, 1256, 5, 114, 0, 0, 1256, 1257, 5, 105, 0, 0, 1257, 1258, 5, 103, 0, 0, 1258, 1259, 5, 104, 0, 0, 1259, 1260, 5, 116, 0, 0, 1260, 1261, 5, 40, 0, 0, 1261, 278, 1, 0, 0, 0, 1262, 1263, 5, 115, 0, 0, 1263, 1264, 5, 117, 0, 0, 1264, 1265, 5, 109, 0, 0, 1265, 1266, 5, 40, 0, 0, 1266, 280, 1, 0, 0, 0, 1267, 1268, 5, 112, 0, 0, 1268, 1269, 5, 114, 0, 0, 1269, 1270, 5, 111, 0, 0, 1270, 1271, 5, 100, 0, 0, 1271, 1272, 5, 117, 0, 0, 1272, 1273, 5, 99, 0, 0, 1273, 1274, 5, 116, 0, 0, 1274, 1275, 5, 40, 0, 0, 1275, 282, 1, 0, 0, 0, 1276, 1277, 5, 115, 0, 0, 1277, 1278, 5, 105, 0, 0, 1278, 1279, 5, 103, 0, 0, 1279, 1280, 5, 110, 0, 0, 1280, 1281, 5, 117, 0, 0, 1281, 1282, 5, 109, 0, 0, 1282, 1283, 5, 40, 0, 0, 1283, 284, 1, 0, 0, 0, 1284, 1285, 5, 115, 0, 0, 1285, 1286, 5, 103, 0, 0, 1286, 1287, 5, 110, 0, 0, 1287, 1288, 5, 40, 0, 0, 1288, 286, 1, 0, 0, 0, 1289, 1290, 5, 115, 0, 0, 1290, 1291, 5, 105, 0, 0, 1291, 1292, 5, 103, 0, 0, 1292, 1293, 5, 110, 0, 0, 1293, 1294, 5, 40, 0, 0, 1294, 288, 1, 0, 0, 0, 1295, 1296, 5, 97, 0, 0, 1296, 1297, 5, 98, 0, 0, 1297, 1298, 5, 115, 0, 0, 1298, 1299, 5, 40, 0, 0, 1299, 290, 1, 0, 0, 0, 1300, 1301, 5, 112, 0, 0, 1301, 1302, 5, 104, 0, 0, 1302, 1303, 5, 105, 0, 0, 1303, 1304, 5, 40, 0, 0, 1304, 292, 1, 0, 0, 0, 1305, 1306, 5, 112, 0, 0, 1306, 1307, 5, 114, 0, 0, 1307, 1308, 5, 105, 0, 0, 1308, 1309, 5, 109, 0, 0, 1309, 1310, 5, 101, 0, 0, 1310, 1311, 5, 40, 0, 0, 1311, 294, 1, 0, 0, 0, 1312, 1313, 5, 118, 0, 0, 1313, 1314, 5, 97, 0, 0, 1314, 1315, 5, 108, 0, 0, 1315, 1316, 5, 117, 0, 0, 1316, 1317, 5, 97, 0, 0, 1317, 1318, 5, 116, 0, 0, 1318, 1319, 5, 105, 0, 0, 1319, 1320, 5, 111, 0, 0, 1320, 1321, 5, 110, 0, 0, 1321, 1322, 5, 40, 0, 0, 1322, 296, 1, 0, 0, 0, 1323, 1324, 5, 99, 0, 0, 1324, 1325, 5, 97, 0, 0, 1325, 1326, 5, 114, 0, 0, 1326, 1327, 5, 100, 0, 0, 1327, 1328, 5, 40, 0, 0, 1328, 298, 1, 0, 0, 0, 1329, 1330, 5, 112, 0, 0, 1330, 1331, 5, 111, 0, 0, 1331, 1332, 5, 119, 0, 0, 1332, 1333, 5, 101, 0, 0, 1333, 1334, 5, 114, 0, 0, 1334, 1335, 5, 115, 0, 0, 1335, 1336, 5, 101, 0, 0, 1336, 1337, 5, 116, 0, 0, 1337, 1338, 5, 40, 0, 0, 1338, 300, 1, 0, 0, 0, 1339, 1340, 5, 117, 0, 0, 1340, 1341, 5, 110, 0, 0, 1341, 1342, 5, 105, 0, 0, 1342, 1343, 5, 111, 0, 0, 1343, 1344, 5, 110, 0, 0, 1344, 1345, 5, 40, 0, 0, 1345, 302, 1, 0, 0, 0, 1346, 1347, 5, 105, 0, 0, 1347, 1348, 5, 110, 0, 0, 1348, 1349, 5, 116, 0, 0, 1349, 1350, 5, 101, 0, 0, 1350, 1351, 5, 114, 0, 0, 1351, 1352, 5, 115, 0, 0, 1352, 1353, 5, 101, 0, 0, 1353, 1354, 5, 99, 0, 0, 1354, 1355, 5, 116, 0, 0, 1355, 1356, 5, 105, 0, 0, 1356, 1357, 5, 111, 0, 0, 1357, 1358, 5, 110, 0, 0, 1358, 1359, 5, 40, 0, 0, 1359, 304, 1, 0, 0, 0, 1360, 1361, 5, 99, 0, 0, 1361, 1362, 5, 111, 0, 0, 1362, 1363, 5, 109, 0, 0, 1363, 1364, 5, 112, 0, 0, 1364, 1365, 5, 108, 0, 0, 1365, 1366, 5, 101, 0, 0, 1366, 1367, 5, 109, 0, 0, 1367, 1368, 5, 101, 0, 0, 1368, 1369, 5, 110, 0, 0, 1369, 1370, 5, 116, 0, 0, 1370, 1371, 5, 40, 0, 0, 1371, 306, 1, 0, 0, 0, 1372, 1373, 5, 105, 0, 0, 1373, 1374, 5, 109, 0, 0, 1374, 1375, 5, 97, 0, 0, 1375, 1376, 5, 103, 0, 0, 1376, 1377, 5, 101, 0, 0, 1377, 1378, 5, 40, 0, 0, 1378, 308, 1, 0, 0, 0, 1379, 1380, 5, 112, 0, 0, 1380, 1381, 5, 114, 0, 0, 1381, 1382, 5, 101, 0, 0, 1382, 1383, 5, 105, 0, 0, 1383, 1384, 5, 109, 0, 0, 1384, 1385, 5, 97, 0, 0, 1385, 1386, 5, 103, 0, 0, 1386, 1387, 5, 101, 0, 0, 1387, 1388, 5, 40, 0, 0, 1388, 310, 1, 0, 0, 0, 1389, 1390, 5, 102, 0, 0, 1390, 1391, 5, 108, 0, 0, 1391, 1392, 5, 111, 0, 0, 1392, 1393, 5, 111, 0, 0, 1393, 1394, 5, 114, 0, 0, 1394, 1395, 5, 40, 0, 0, 1395, 312, 1, 0, 0, 0, 1396, 1397, 5, 99, 0, 0, 1397, 1398, 5, 101, 0, 0, 1398, 1399, 5, 105, 0, 0, 1399, 1400, 5, 108, 0, 0, 1400, 1401, 5, 40, 0, 0, 1401, 314, 1, 0, 0, 0, 1402, 1403, 5, 99, 0, 0, 1403, 1404, 5, 101, 0, 0, 1404, 1405, 5, 105, 0, 0, 1405, 1406, 5, 108, 0, 0, 1406, 1407, 5, 105, 0, 0, 1407, 1408, 5, 110, 0, 0, 1408, 1409, 5, 103, 0, 0, 1409, 1410, 5, 40, 0, 0, 1410, 316, 1, 0, 0, 0, 1411, 1412, 5, 114, 0, 0, 1412, 1413, 5, 111, 0, 0, 1413, 1414, 5, 117, 0, 0, 1414, 1415, 5, 110, 0, 0, 1415, 1416, 5, 100, 0, 0, 1416, 1417, 5, 40, 0, 0, 1417, 318, 1, 0, 0, 0, 1418, 1419, 5, 109, 0, 0, 1419, 1420, 5, 105, 0, 0, 1420, 1421, 5, 110, 0, 0, 1421, 1422, 5, 40, 0, 0, 1422, 320, 1, 0, 0, 0, 1423, 1424, 5, 109, 0, 0, 1424, 1425, 5, 97, 0, 0, 1425, 1426, 5, 120, 0, 0, 1426, 1427, 5, 40, 0, 0, 1427, 322, 1, 0, 0, 0, 1428, 1429, 5, 97, 0, 0, 1429, 1430, 5, 114, 0, 0, 1430, 1431, 5, 103, 0, 0, 1431, 1432, 5, 109, 0, 0, 1432, 1433, 5, 97, 0, 0, 1433, 1434, 5, 120, 0, 0, 1434, 1435, 5, 40, 0, 0, 1435, 324, 1, 0, 0, 0, 1436, 1437, 5, 97, 0, 0, 1437, 1438, 5, 114, 0, 0, 1438, 1439, 5, 103, 0, 0, 1439, 1440, 5, 109, 0, 0, 1440, 1441, 5, 105, 0, 0, 1441, 1442, 5, 110, 0, 0, 1442, 1443, 5, 40, 0, 0, 1443, 326, 1, 0, 0, 0, 1444, 1445, 5, 103, 0, 0, 1445, 1446, 5, 99, 0, 0, 1446, 1447, 5, 100, 0, 0, 1447, 1448, 5, 40, 0, 0, 1448, 328, 1, 0, 0, 0, 1449, 1450, 5, 108, 0, 0, 1450, 1451, 5, 99, 0, 0, 1451, 1452, 5, 109, 0, 0, 1452, 1453, 5, 40, 0, 0, 1453, 330, 1, 0, 0, 0, 1454, 1455, 5, 98, 0, 0, 1455, 1456, 5, 105, 0, 0, 1456, 1457, 5, 110, 0, 0, 1457, 1458, 5, 111, 0, 0, 1458, 1459, 5, 109, 0, 0, 1459, 1460, 5, 105, 0, 0, 1460, 1461, 5, 97, 0, 0, 1461, 1462, 5, 108, 0, 0, 1462, 1463, 5, 40, 0, 0, 1463, 332, 1, 0, 0, 0, 1464, 1465, 5, 105, 0, 0, 1465, 1466, 5, 118, 0, 0, 1466, 1467, 5, 101, 0, 0, 1467, 1468, 5, 114, 0, 0, 1468, 1469, 5, 115, 0, 0, 1469, 1470, 5, 111, 0, 0, 1470, 1471, 5, 110, 0, 0, 1471, 1472, 5, 40, 0, 0, 1472, 334, 1, 0, 0, 0, 1473, 1474, 5, 97, 0, 0, 1474, 1475, 5, 108, 0, 0, 1475, 1476, 5, 101, 0, 0, 1476, 1477, 5, 112, 0, 0, 1477, 1478, 5, 104, 0, 0, 1478, 1479, 5, 40, 0, 0, 1479, 336, 1, 0, 0, 0, 1480, 1481, 5, 101, 0, 0, 1481, 1482, 5, 114, 0, 0, 1482, 1483, 5, 102, 0, 0, 1483, 1484, 5, 40, 0, 0, 1484, 338, 1, 0, 0, 0, 1485, 1486, 5, 101, 0, 0, 1486, 1487, 5, 114, 0, 0, 1487, 1488, 5, 102, 0, 0, 1488, 1489, 5, 99, 0, 0, 1489, 1490, 5, 40, 0, 0, 1490, 340, 1, 0, 0, 0, 1491, 1492, 5, 101, 0, 0, 1492, 1493, 5, 114, 0, 0, 1493, 1494, 5, 102, 0, 0, 1494, 1495, 5, 105, 0, 0, 1495, 1496, 5, 40, 0, 0, 1496, 342, 1, 0, 0, 0, 1497, 1498, 5, 69, 0, 0, 1498, 1499, 5, 105, 0, 0, 1499, 1500, 5, 40, 0, 0, 1500, 344, 1, 0, 0, 0, 1501, 1502, 5, 108, 0, 0, 1502, 1503, 5, 105, 0, 0, 1503, 1504, 5, 40, 0, 0, 1504, 346, 1, 0, 0, 0, 1505, 1506, 5, 112, 0, 0, 1506, 1507, 5, 111, 0, 0, 1507, 1508, 5, 108, 0, 0, 1508, 1509, 5, 121, 0, 0, 1509, 1510, 5, 103, 0, 0, 1510, 1511, 5, 97, 0, 0, 1511, 1512, 5, 109, 0, 0, 1512, 1513, 5, 109, 0, 0, 1513, 1514, 5, 97, 0, 0, 1514, 1515, 5, 40, 0, 0, 1515, 348, 1, 0, 0, 0, 1516, 1517, 5, 100, 0, 0, 1517, 1518, 5, 105, 0, 0, 1518, 1519, 5, 103, 0, 0, 1519, 1520, 5, 97, 0, 0, 1520, 1521, 5, 109, 0, 0, 1521, 1522, 5, 109, 0, 0, 1522, 1523, 5, 97, 0, 0, 1523, 1524, 5, 40, 0, 0, 1524, 350, 1, 0, 0, 0, 1525, 1526, 5, 83, 0, 0, 1526, 1527, 5, 105, 0, 0, 1527, 1528, 5, 40, 0, 0, 1528, 352, 1, 0, 0, 0, 1529, 1530, 5, 67, 0, 0, 1530, 1531, 5, 105, 0, 0, 1531, 1532, 5, 40, 0, 0, 1532, 354, 1, 0, 0, 0, 1533, 1534, 5, 83, 0, 0, 1534, 1535, 5, 104, 0, 0, 1535, 1536, 5, 105, 0, 0, 1536, 1537, 5, 40, 0, 0, 1537, 356, 1, 0, 0, 0, 1538, 1539, 5, 67, 0, 0, 1539, 1540, 5, 104, 0, 0, 1540, 1541, 5, 105, 0, 0, 1541, 1542, 5, 40, 0, 0, 1542, 358, 1, 0, 0, 0, 1543, 1544, 5, 100, 0, 0, 1544, 1545, 5, 101, 0, 0, 1545, 1546, 5, 116, 0, 0, 1546, 1547, 5, 40, 0, 0, 1547, 360, 1, 0, 0, 0, 1548, 1549, 5, 116, 0, 0, 1549, 1550, 5, 114, 0, 0, 1550, 1551, 5, 97, 0, 0, 1551, 1552, 5, 110, 0, 0, 1552, 1553, 5, 115, 0, 0, 1553, 1554, 5, 112, 0, 0, 1554, 1555, 5, 111, 0, 0, 1555, 1556, 5, 115, 0, 0, 1556, 1557, 5, 101, 0, 0, 1557, 1558, 5, 40, 0, 0, 1558, 362, 1, 0, 0, 0, 1559, 1560, 5, 100, 0, 0, 1560, 1561, 5, 111, 0, 0, 1561, 1562, 5, 116, 0, 0, 1562, 1563, 5, 40, 0, 0, 1563, 364, 1, 0, 0, 0, 1564, 1565, 5, 99, 0, 0, 1565, 1566, 5, 114, 0, 0, 1566, 1567, 5, 111, 0, 0, 1567, 1568, 5, 115, 0, 0, 1568, 1569, 5, 115, 0, 0, 1569, 1570, 5, 40, 0, 0, 1570, 366, 1, 0, 0, 0, 1571, 1572, 5, 114, 0, 0, 1572, 1573, 5, 101, 0, 0, 1573, 1574, 5, 115, 0, 0, 1574, 1575, 5, 117, 0, 0, 1575, 1576, 5, 108, 0, 0, 1576, 1577, 5, 116, 0, 0, 1577, 1578, 5, 97, 0, 0, 1578, 1579, 5, 110, 0, 0, 1579, 1580, 5, 116, 0, 0, 1580, 1581, 5, 40, 0, 0, 1581, 368, 1, 0, 0, 0, 1582, 1583, 5, 99, 0, 0, 1583, 1584, 5, 111, 0, 0, 1584, 1585, 5, 110, 0, 0, 1585, 1586, 5, 106, 0, 0, 1586, 1587, 5, 117, 0, 0, 1587, 1588, 5, 103, 0, 0, 1588, 1589, 5, 97, 0, 0, 1589, 1590, 5, 116, 0, 0, 1590, 1591, 5, 101, 0, 0, 1591, 1592, 5, 40, 0, 0, 1592, 370, 1, 0, 0, 0, 1593, 1594, 5, 99, 0, 0, 1594, 1595, 5, 111, 0, 0, 1595, 1596, 5, 110, 0, 0, 1596, 1597, 5, 106, 0, 0, 1597, 1598, 5, 40, 0, 0, 1598, 372, 1, 0, 0, 0, 1599, 1600, 5, 97, 0, 0, 1600, 1601, 5, 114, 0, 0, 1601, 1602, 5, 103, 0, 0, 1602, 1603, 5, 40, 0, 0, 1603, 374, 1, 0, 0, 0, 1604, 1605, 5, 82, 0, 0, 1605, 1606, 5, 101, 0, 0, 1606, 1607, 5, 40, 0, 0, 1607, 376, 1, 0, 0, 0, 1608, 1609, 5, 73, 0, 0, 1609, 1610, 5, 109, 0, 0, 1610, 1611, 5, 40, 0, 0, 1611, 378, 1, 0, 0, 0, 1612, 1613, 5, 114, 0, 0, 1613, 1614, 5, 101, 0, 0, 1614, 1615, 5, 40, 0, 0, 1615, 380, 1, 0, 0, 0, 1616, 1617, 5, 114, 0, 0, 1617, 1618, 5, 101, 0, 0, 1618, 1619, 5, 97, 0, 0, 1619, 1620, 5, 108, 0, 0, 1620, 1621, 5, 40, 0, 0, 1621, 382, 1, 0, 0, 0, 1622, 1623, 5, 105, 0, 0, 1623, 1624, 5, 109, 0, 0, 1624, 1625, 5, 40, 0, 0, 1625, 384, 1, 0, 0, 0, 1626, 1627, 5, 105, 0, 0, 1627, 1628, 5, 109, 0, 0, 1628, 1629, 5, 97, 0, 0, 1629, 1630, 5, 103, 0, 0, 1630, 1631, 5, 40, 0, 0, 1631, 386, 1, 0, 0, 0, 1632, 1633, 5, 116, 0, 0, 1633, 1634, 5, 114, 0, 0, 1634, 1635, 5, 117, 0, 0, 1635, 1636, 5, 110, 0, 0, 1636, 1637, 5, 99, 0, 0, 1637, 1638, 5, 40, 0, 0, 1638, 388, 1, 0, 0, 0, 1639, 1640, 5, 122, 0, 0, 1640, 1641, 5, 101, 0, 0, 1641, 1642, 5, 116, 0, 0, 1642, 1643, 5, 97, 0, 0, 1643, 1644, 5, 40, 0, 0, 1644, 390, 1, 0, 0, 0, 1645, 1646, 5, 114, 0, 0, 1646, 1647, 5, 105, 0, 0, 1647, 1648, 5, 101, 0, 0, 1648, 1649, 5, 109, 0, 0, 1649, 1650, 5, 97, 0, 0, 1650, 1651, 5, 110, 0, 0, 1651, 1652, 5, 110, 0, 0, 1652, 1653, 5, 122, 0, 0, 1653, 1654, 5, 101, 0, 0, 1654, 1655, 5, 116, 0, 0, 1655, 1656, 5, 97, 0, 0, 1656, 1657, 5, 40, 0, 0, 1657, 392, 1, 0, 0, 0, 1658, 1659, 5, 104, 0, 0, 1659, 1660, 5, 117, 0, 0, 1660, 1661, 5, 114, 0, 0, 1661, 1662, 5, 119, 0, 0, 1662, 1663, 5, 105, 0, 0, 1663, 1664, 5, 116, 0, 0, 1664, 1665, 5, 122, 0, 0, 1665, 1666, 5, 122, 0, 0, 1666, 1667, 5, 101, 0, 0, 1667, 1668, 5, 116, 0, 0, 1668, 1669, 5, 97, 0, 0, 1669, 1670, 5, 40, 0, 0, 1670, 394, 1, 0, 0, 0, 1671, 1672, 5, 108, 0, 0, 1672, 1673, 5, 97, 0, 0, 1673, 1674, 5, 109, 0, 0, 1674, 1675, 5, 98, 0, 0, 1675, 1676, 5, 101, 0, 0, 1676, 1677, 5, 114, 0, 0, 1677, 1678, 5, 116, 0, 0, 1678, 1679, 5, 119, 0, 0, 1679, 1680, 5, 40, 0, 0, 1680, 396, 1, 0, 0, 0, 1681, 1682, 5, 112, 0, 0, 1682, 1683, 5, 114, 0, 0, 1683, 1684, 5, 111, 0, 0, 1684, 1685, 5, 100, 0, 0, 1685, 1686, 5, 117, 0, 0, 1686, 1687, 5, 99, 0, 0, 1687, 1688, 5, 116, 0, 0, 1688, 1689, 5, 108, 0, 0, 1689, 1690, 5, 111, 0, 0, 1690, 1691, 5, 103, 0, 0, 1691, 1692, 5, 40, 0, 0, 1692, 398, 1, 0, 0, 0, 1693, 1694, 5, 109, 0, 0, 1694, 1695, 5, 111, 0, 0, 1695, 1696, 5, 98, 0, 0, 1696, 1697, 5, 105, 0, 0, 1697, 1698, 5, 117, 0, 0, 1698, 1699, 5, 115, 0, 0, 1699, 1700, 5, 40, 0, 0, 1700, 400, 1, 0, 0, 0, 1701, 1702, 5, 109, 0, 0, 1702, 1703, 5, 111, 0, 0, 1703, 1704, 5, 101, 0, 0, 1704, 1705, 5, 98, 0, 0, 1705, 1706, 5, 105, 0, 0, 1706, 1707, 5, 117, 0, 0, 1707, 1708, 5, 115, 0, 0, 1708, 1709, 5, 109, 0, 0, 1709, 1710, 5, 117, 0, 0, 1710, 1711, 5, 40, 0, 0, 1711, 402, 1, 0, 0, 0, 1712, 1713, 5, 100, 0, 0, 1713, 1714, 5, 105, 0, 0, 1714, 1715, 5, 118, 0, 0, 1715, 1716, 5, 105, 0, 0, 1716, 1717, 5, 115, 0, 0, 1717, 1718, 5, 111, 0, 0, 1718, 1719, 5, 114, 0, 0, 1719, 1720, 5, 115, 0, 0, 1720, 1721, 5, 105, 0, 0, 1721, 1722, 5, 103, 0, 0, 1722, 1723, 5, 109, 0, 0, 1723, 1724, 5, 97, 0, 0, 1724, 1725, 5, 40, 0, 0, 1725, 404, 1, 0, 0, 0, 1726, 1727, 5, 112, 0, 0, 1727, 1728, 5, 114, 0, 0, 1728, 1729, 5, 105, 0, 0, 1729, 1730, 5, 109, 0, 0, 1730, 1731, 5, 101, 0, 0, 1731, 1732, 5, 110, 0, 0, 1732, 1733, 5, 117, 0, 0, 1733, 1734, 5, 40, 0, 0, 1734, 406, 1, 0, 0, 0, 1735, 1736, 5, 112, 0, 0, 1736, 1737, 5, 114, 0, 0, 1737, 1738, 5, 105, 0, 0, 1738, 1739, 5, 109, 0, 0, 1739, 1740, 5, 101, 0, 0, 1740, 1741, 5, 111, 0, 0, 1741, 1742, 5, 109, 0, 0, 1742, 1743, 5, 101, 0, 0, 1743, 1744, 5, 103, 0, 0, 1744, 1745, 5, 97, 0, 0, 1745, 1746, 5, 40, 0, 0, 1746, 408, 1, 0, 0, 0, 1747, 1748, 5, 112, 0, 0, 1748, 1749, 5, 114, 0, 0, 1749, 1750, 5, 105, 0, 0, 1750, 1751, 5, 109, 0, 0, 1751, 1752, 5, 101, 0, 0, 1752, 1753, 5, 112, 0, 0, 1753, 1754, 5, 105, 0, 0, 1754, 1755, 5, 40, 0, 0, 1755, 410, 1, 0, 0, 0, 1756, 1757, 5, 104, 0, 0, 1757, 1758, 5, 97, 0, 0, 1758, 1759, 5, 114, 0, 0, 1759, 1760, 5, 109, 0, 0, 1760, 1761, 5, 111, 0, 0, 1761, 1762, 5, 110, 0, 0, 1762, 1763, 5, 105, 0, 0, 1763, 1764, 5, 99, 0, 0, 1764, 1765, 5, 110, 0, 0, 1765, 1766, 5, 117, 0, 0, 1766, 1767, 5, 109, 0, 0, 1767, 1768, 5, 98, 0, 0, 1768, 1769, 5, 101, 0, 0, 1769, 1770, 5, 114, 0, 0, 1770, 1771, 5, 40, 0, 0, 1771, 412, 1, 0, 0, 0, 1772, 1773, 5, 99, 0, 0, 1773, 1774, 5, 97, 0, 0, 1774, 1775, 5, 116, 0, 0, 1775, 1776, 5, 97, 0, 0, 1776, 1777, 5, 108, 0, 0, 1777, 1778, 5, 97, 0, 0, 1778, 1779, 5, 110, 0, 0, 1779, 1780, 5, 110, 0, 0, 1780, 1781, 5, 117, 0, 0, 1781, 1782, 5, 109, 0, 0, 1782, 1783, 5, 98, 0, 0, 1783, 1784, 5, 101, 0, 0, 1784, 1785, 5, 114, 0, 0, 1785, 1786, 5, 40, 0, 0, 1786, 414, 1, 0, 0, 0, 1787, 1788, 5, 109, 0, 0, 1788, 1789, 5, 117, 0, 0, 1789, 1790, 5, 108, 0, 0, 1790, 1791, 5, 116, 0, 0, 1791, 1792, 5, 105, 0, 0, 1792, 1793, 5, 110, 0, 0, 1793, 1794, 5, 111, 0, 0, 1794, 1795, 5, 109, 0, 0, 1795, 1796, 5, 105, 0, 0, 1796, 1797, 5, 97, 0, 0, 1797, 1798, 5, 108, 0, 0, 1798, 1799, 5, 40, 0, 0, 1799, 416, 1, 0, 0, 0, 1800, 1801, 5, 102, 0, 0, 1801, 1802, 5, 97, 0, 0, 1802, 1803, 5, 108, 0, 0, 1803, 1804, 5, 108, 0, 0, 1804, 1805, 5, 105, 0, 0, 1805, 1806, 5, 110, 0, 0, 1806, 1807, 5, 103, 0, 0, 1807, 1808, 5, 102, 0, 0, 1808, 1809, 5, 97, 0, 0, 1809, 1810, 5, 99, 0, 0, 1810, 1811, 5, 116, 0, 0, 1811, 1812, 5, 111, 0, 0, 1812, 1813, 5, 114, 0, 0, 1813, 1814, 5, 105, 0, 0, 1814, 1815, 5, 97, 0, 0, 1815, 1816, 5, 108, 0, 0, 1816, 1817, 5, 40, 0, 0, 1817, 418, 1, 0, 0, 0, 1818, 1819, 5, 102, 0, 0, 1819, 1820, 5, 97, 0, 0, 1820, 1821, 5, 99, 0, 0, 1821, 1822, 5, 116, 0, 0, 1822, 1823, 5, 111, 0, 0, 1823, 1824, 5, 114, 0, 0, 1824, 1825, 5, 105, 0, 0, 1825, 1826, 5, 97, 0, 0, 1826, 1827, 5, 108, 0, 0, 1827, 1828, 5, 112, 0, 0, 1828, 1829, 5, 111, 0, 0, 1829, 1830, 5, 119, 0, 0, 1830, 1831, 5, 101, 0, 0, 1831, 1832, 5, 114, 0, 0, 1832, 1833, 5, 40, 0, 0, 1833, 420, 1, 0, 0, 0, 1834, 1835, 5, 114, 0, 0, 1835, 1836, 5, 105, 0, 0, 1836, 1837, 5, 115, 0, 0, 1837, 1838, 5, 105, 0, 0, 1838, 1839, 5, 110, 0, 0, 1839, 1840, 5, 103, 0, 0, 1840, 1841, 5, 102, 0, 0, 1841, 1842, 5, 97, 0, 0, 1842, 1843, 5, 99, 0, 0, 1843, 1844, 5, 116, 0, 0, 1844, 1845, 5, 111, 0, 0, 1845, 1846, 5, 114, 0, 0, 1846, 1847, 5, 105, 0, 0, 1847, 1848, 5, 97, 0, 0, 1848, 1849, 5, 108, 0, 0, 1849, 1850, 5, 40, 0, 0, 1850, 422, 1, 0, 0, 0, 1851, 1852, 5, 102, 0, 0, 1852, 1853, 5, 111, 0, 0, 1853, 1854, 5, 114, 0, 0, 1854, 1855, 5, 119, 0, 0, 1855, 1856, 5, 97, 0, 0, 1856, 1857, 5, 114, 0, 0, 1857, 1858, 5, 100, 0, 0, 1858, 1859, 5, 100, 0, 0, 1859, 1860, 5, 105, 0, 0, 1860, 1861, 5, 102, 0, 0, 1861, 1862, 5, 102, 0, 0, 1862, 1863, 5, 101, 0, 0, 1863, 1864, 5, 114, 0, 0, 1864, 1865, 5, 101, 0, 0, 1865, 1866, 5, 110, 0, 0, 1866, 1867, 5, 99, 0, 0, 1867, 1868, 5, 101, 0, 0, 1868, 1869, 5, 40, 0, 0, 1869, 424, 1, 0, 0, 0, 1870, 1871, 5, 108, 0, 0, 1871, 1872, 5, 97, 0, 0, 1872, 1873, 5, 112, 0, 0, 1873, 1874, 5, 108, 0, 0, 1874, 1875, 5, 97, 0, 0, 1875, 1876, 5, 99, 0, 0, 1876, 1877, 5, 105, 0, 0, 1877, 1878, 5, 97, 0, 0, 1878, 1879, 5, 110, 0, 0, 1879, 1880, 5, 40, 0, 0, 1880, 426, 1, 0, 0, 0, 1881, 1882, 5, 106, 0, 0, 1882, 1883, 5, 97, 0, 0, 1883, 1884, 5, 99, 0, 0, 1884, 1885, 5, 111, 0, 0, 1885, 1886, 5, 98, 0, 0, 1886, 1887, 5, 105, 0, 0, 1887, 1888, 5, 97, 0, 0, 1888, 1889, 5, 110, 0, 0, 1889, 1890, 5, 40, 0, 0, 1890, 428, 1, 0, 0, 0, 1891, 1892, 5, 104, 0, 0, 1892, 1893, 5, 101, 0, 0, 1893, 1894, 5, 115, 0, 0, 1894, 1895, 5, 115, 0, 0, 1895, 1896, 5, 105, 0, 0, 1896, 1897, 5, 97, 0, 0, 1897, 1898, 5, 110, 0, 0, 1898, 1899, 5, 40, 0, 0, 1899, 430, 1, 0, 0, 0, 1900, 1901, 5, 104, 0, 0, 1901, 1902, 5, 101, 0, 0, 1902, 1903, 5, 97, 0, 0, 1903, 1904, 5, 118, 0, 0, 1904, 1905, 5, 105, 0, 0, 1905, 1906, 5, 115, 0, 0, 1906, 1907, 5, 105, 0, 0, 1907, 1908, 5, 100, 0, 0, 1908, 1909, 5, 101, 0, 0, 1909, 1910, 5, 40, 0, 0, 1910, 432, 1, 0, 0, 0, 1911, 1912, 5, 117, 0, 0, 1912, 1913, 5, 110, 0, 0, 1913, 1914, 5, 105, 0, 0, 1914, 1915, 5, 116, 0, 0, 1915, 1916, 5, 115, 0, 0, 1916, 1917, 5, 116, 0, 0, 1917, 1918, 5, 101, 0, 0, 1918, 1919, 5, 112, 0, 0, 1919, 1920, 5, 40, 0, 0, 1920, 434, 1, 0, 0, 0, 1921, 1922, 5, 105, 0, 0, 1922, 1923, 5, 115, 0, 0, 1923, 1924, 5, 112, 0, 0, 1924, 1925, 5, 114, 0, 0, 1925, 1926, 5, 105, 0, 0, 1926, 1927, 5, 109, 0, 0, 1927, 1928, 5, 101, 0, 0, 1928, 1929, 5, 40, 0, 0, 1929, 436, 1, 0, 0, 0, 1930, 1931, 5, 112, 0, 0, 1931, 1932, 5, 111, 0, 0, 1932, 1933, 5, 99, 0, 0, 1933, 1934, 5, 104, 0, 0, 1934, 1935, 5, 104, 0, 0, 1935, 1936, 5, 97, 0, 0, 1936, 1937, 5, 109, 0, 0, 1937, 1938, 5, 109, 0, 0, 1938, 1939, 5, 101, 0, 0, 1939, 1940, 5, 114, 0, 0, 1940, 1941, 5, 40, 0, 0, 1941, 438, 1, 0, 0, 0, 1942, 1943, 5, 100, 0, 0, 1943, 1944, 5, 111, 0, 0, 1944, 1945, 5, 117, 0, 0, 1945, 1946, 5, 98, 0, 0, 1946, 1947, 5, 108, 0, 0, 1947, 1948, 5, 101, 0, 0, 1948, 1949, 5, 102, 0, 0, 1949, 1950, 5, 97, 0, 0, 1950, 1951, 5, 99, 0, 0, 1951, 1952, 5, 116, 0, 0, 1952, 1953, 5, 111, 0, 0, 1953, 1954, 5, 114, 0, 0, 1954, 1955, 5, 105, 0, 0, 1955, 1956, 5, 97, 0, 0, 1956, 1957, 5, 108, 0, 0, 1957, 1958, 5, 40, 0, 0, 1958, 440, 1, 0, 0, 0, 1959, 1960, 5, 102, 0, 0, 1960, 1961, 5, 97, 0, 0, 1961, 1962, 5, 99, 0, 0, 1962, 1963, 5, 116, 0, 0, 1963, 1964, 5, 111, 0, 0, 1964, 1965, 5, 114, 0, 0, 1965, 1966, 5, 105, 0, 0, 1966, 1967, 5, 97, 0, 0, 1967, 1968, 5, 108, 0, 0, 1968, 1969, 5, 50, 0, 0, 1969, 1970, 5, 40, 0, 0, 1970, 442, 1, 0, 0, 0, 1971, 1972, 5, 102, 0, 0, 1972, 1973, 5, 114, 0, 0, 1973, 1974, 5, 97, 0, 0, 1974, 1975, 5, 99, 0, 0, 1975, 1976, 5, 116, 0, 0, 1976, 1977, 5, 105, 0, 0, 1977, 1978, 5, 111, 0, 0, 1978, 1979, 5, 110, 0, 0, 1979, 1980, 5, 97, 0, 0, 1980, 1981, 5, 108, 0, 0, 1981, 1982, 5, 112, 0, 0, 1982, 1983, 5, 97, 0, 0, 1983, 1984, 5, 114, 0, 0, 1984, 1985, 5, 116, 0, 0, 1985, 1986, 5, 40, 0, 0, 1986, 444, 1, 0, 0, 0, 1987, 1988, 5, 113, 0, 0, 1988, 1989, 5, 117, 0, 0, 1989, 1990, 5, 111, 0, 0, 1990, 1991, 5, 116, 0, 0, 1991, 1992, 5, 105, 0, 0, 1992, 1993, 5, 101, 0, 0, 1993, 1994, 5, 110, 0, 0, 1994, 1995, 5, 116, 0, 0, 1995, 1996, 5, 40, 0, 0, 1996, 446, 1, 0, 0, 0, 1997, 1998, 5, 100, 0, 0, 1998, 1999, 5, 111, 0, 0, 1999, 2000, 5, 109, 0, 0, 2000, 2001, 5, 97, 0, 0, 2001, 2002, 5, 105, 0, 0, 2002, 2003, 5, 110, 0, 0, 2003, 2004, 5, 40, 0, 0, 2004, 448, 1, 0, 0, 0, 2005, 2006, 5, 112, 0, 0, 2006, 2007, 5, 105, 0, 0, 2007, 2008, 5, 101, 0, 0, 2008, 2009, 5, 99, 0, 0, 2009, 2010, 5, 101, 0, 0, 2010, 2011, 5, 119, 0, 0, 2011, 2012, 5, 105, 0, 0, 2012, 2013, 5, 115, 0, 0, 2013, 2014, 5, 101, 0, 0, 2014, 2015, 5, 40, 0, 0, 2015, 450, 1, 0, 0, 0, 2016, 2017, 5, 97, 0, 0, 2017, 2018, 5, 112, 0, 0, 2018, 2019, 5, 112, 0, 0, 2019, 2020, 5, 108, 0, 0, 2020, 2021, 5, 121, 0, 0, 2021, 2022, 5, 40, 0, 0, 2022, 452, 1, 0, 0, 0, 2023, 2024, 5, 108, 0, 0, 2024, 2025, 5, 97, 0, 0, 2025, 2026, 5, 109, 0, 0, 2026, 2027, 5, 98, 0, 0, 2027, 2028, 5, 100, 0, 0, 2028, 2029, 5, 97, 0, 0, 2029, 2030, 5, 40, 0, 0, 2030, 454, 1, 0, 0, 0, 2031, 2033, 5, 13, 0, 0, 2032, 2031, 1, 0, 0, 0, 2032, 2033, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 2036, 5, 10, 0, 0, 2035, 2032, 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 2035, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2040, 6, 227, 0, 0, 2040, 456, 1, 0, 0, 0, 2041, 2043, 7, 0, 0, 0, 2042, 2044, 7, 1, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2046, 1, 0, 0, 0, 2045, 2047, 2, 48, 57, 0, 2046, 2045, 1, 0, 0, 0, 2047, 2048, 1, 0, 0, 0, 2048, 2046, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 458, 1, 0, 0, 0, 2050, 2052, 2, 48, 57, 0, 2051, 2050, 1, 0, 0, 0, 2052, 2053, 1, 0, 0, 0, 2053, 2051, 1, 0, 0, 0, 2053, 2054, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2059, 5, 46, 0, 0, 2056, 2058, 2, 48, 57, 0, 2057, 2056, 1, 0, 0, 0, 2058, 2061, 1, 0, 0, 0, 2059, 2057, 1, 0, 0, 0, 2059, 2060, 1, 0, 0, 0, 2060, 2063, 1, 0, 0, 0, 2061, 2059, 1, 0, 0, 0, 2062, 2064, 3, 457, 228, 0, 2063, 2062, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2066, 1, 0, 0, 0, 2065, 2067, 5, 105, 0, 0, 2066, 2065, 1, 0, 0, 0, 2066, 2067, 1, 0, 0, 0, 2067, 2084, 1, 0, 0, 0, 2068, 2070, 5, 46, 0, 0, 2069, 2068, 1, 0, 0, 0, 2069, 2070, 1, 0, 0, 0, 2070, 2072, 1, 0, 0, 0, 2071, 2073, 2, 48, 57, 0, 2072, 2071, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2072, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2077, 1, 0, 0, 0, 2076, 2078, 3, 457, 228, 0, 2077, 2076, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 2080, 1, 0, 0, 0, 2079, 2081, 5, 105, 0, 0, 2080, 2079, 1, 0, 0, 0, 2080, 2081, 1, 0, 0, 0, 2081, 2084, 1, 0, 0, 0, 2082, 2084, 5, 105, 0, 0, 2083, 2051, 1, 0, 0, 0, 2083, 2069, 1, 0, 0, 0, 2083, 2082, 1, 0, 0, 0, 2084, 460, 1, 0, 0, 0, 2085, 2086, 5, 67, 0, 0, 2086, 2104, 5, 67, 0, 0, 2087, 2088, 5, 82, 0, 0, 2088, 2104, 5, 82, 0, 0, 2089, 2090, 5, 81, 0, 0, 2090, 2104, 5, 81, 0, 0, 2091, 2092, 5, 90, 0, 0, 2092, 2104, 5, 90, 0, 0, 2093, 2094, 5, 66, 0, 0, 2094, 2104, 5, 66, 0, 0, 2095, 2096, 5, 90, 0, 0, 2096, 2097, 5, 90, 0, 0, 2097, 2104, 5, 42, 0, 0, 2098, 2099, 5, 90, 0, 0, 2099, 2100, 5, 90, 0, 0, 2100, 2104, 5, 43, 0, 0, 2101, 2102, 5, 80, 0, 0, 2102, 2104, 5, 80, 0, 0, 2103, 2085, 1, 0, 0, 0, 2103, 2087, 1, 0, 0, 0, 2103, 2089, 1, 0, 0, 0, 2103, 2091, 1, 0, 0, 0, 2103, 2093, 1, 0, 0, 0, 2103, 2095, 1, 0, 0, 0, 2103, 2098, 1, 0, 0, 0, 2103, 2101, 1, 0, 0, 0, 2104, 462, 1, 0, 0, 0, 2105, 2106, 5, 116, 0, 0, 2106, 2107, 5, 114, 0, 0, 2107, 2108, 5, 117, 0, 0, 2108, 2124, 5, 101, 0, 0, 2109, 2110, 5, 84, 0, 0, 2110, 2111, 5, 114, 0, 0, 2111, 2112, 5, 117, 0, 0, 2112, 2124, 5, 101, 0, 0, 2113, 2114, 5, 102, 0, 0, 2114, 2115, 5, 97, 0, 0, 2115, 2116, 5, 108, 0, 0, 2116, 2117, 5, 115, 0, 0, 2117, 2124, 5, 101, 0, 0, 2118, 2119, 5, 70, 0, 0, 2119, 2120, 5, 97, 0, 0, 2120, 2121, 5, 108, 0, 0, 2121, 2122, 5, 115, 0, 0, 2122, 2124, 5, 101, 0, 0, 2123, 2105, 1, 0, 0, 0, 2123, 2109, 1, 0, 0, 0, 2123, 2113, 1, 0, 0, 0, 2123, 2118, 1, 0, 0, 0, 2124, 464, 1, 0, 0, 0, 2125, 2126, 5, 78, 0, 0, 2126, 2127, 5, 97, 0, 0, 2127, 2128, 5, 78, 0, 0, 2128, 466, 1, 0, 0, 0, 2129, 2131, 7, 2, 0, 0, 2130, 2129, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2130, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2142, 1, 0, 0, 0, 2134, 2136, 5, 95, 0, 0, 2135, 2137, 7, 3, 0, 0, 2136, 2135, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2136, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 2141, 1, 0, 0, 0, 2140, 2134, 1, 0, 0, 0, 2141, 2144, 1, 0, 0, 0, 2142, 2140, 1, 0, 0, 0, 2142, 2143, 1, 0, 0, 0, 2143, 468, 1, 0, 0, 0, 2144, 2142, 1, 0, 0, 0, 2145, 2146, 5, 47, 0, 0, 2146, 2147, 5, 47, 0, 0, 2147, 2151, 1, 0, 0, 0, 2148, 2150, 8, 4, 0, 0, 2149, 2148, 1, 0, 0, 0, 2150, 2153, 1, 0, 0, 0, 2151, 2149, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2158, 1, 0, 0, 0, 2153, 2151, 1, 0, 0, 0, 2154, 2156, 5, 13, 0, 0, 2155, 2154, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2159, 5, 10, 0, 0, 2158, 2155, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, 0, 2159, 2172, 1, 0, 0, 0, 2160, 2161, 5, 47, 0, 0, 2161, 2162, 5, 42, 0, 0, 2162, 2166, 1, 0, 0, 0, 2163, 2165, 9, 0, 0, 0, 2164, 2163, 1, 0, 0, 0, 2165, 2168, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2166, 2164, 1, 0, 0, 0, 2167, 2169, 1, 0, 0, 0, 2168, 2166, 1, 0, 0, 0, 2169, 2170, 5, 42, 0, 0, 2170, 2172, 5, 47, 0, 0, 2171, 2145, 1, 0, 0, 0, 2171, 2160, 1, 0, 0, 0, 2172, 2173, 1, 0, 0, 0, 2173, 2174, 6, 234, 0, 0, 2174, 470, 1, 0, 0, 0, 2175, 2177, 7, 5, 0, 0, 2176, 2175, 1, 0, 0, 0, 2177, 2178, 1, 0, 0, 0, 2178, 2176, 1, 0, 0, 0, 2178, 2179, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2181, 6, 235, 0, 0, 2181, 472, 1, 0, 0, 0, 25, 0, 2032, 2037, 2043, 2048, 2053, 2059, 2063, 2066, 2069, 2074, 2077, 2080, 2083, 2103, 2123, 2132, 2138, 2142, 2151, 2155, 2158, 2166, 2171, 2178, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 237, 2193, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 3, 229, 2044, 8, 229, 1, 229, 4, 229, 2047, 8, 229, 11, 229, 12, 229, 2048, 1, 229, 1, 229, 1, 230, 1, 230, 3, 230, 2055, 8, 230, 1, 230, 4, 230, 2058, 8, 230, 11, 230, 12, 230, 2059, 1, 231, 4, 231, 2063, 8, 231, 11, 231, 12, 231, 2064, 1, 231, 1, 231, 5, 231, 2069, 8, 231, 10, 231, 12, 231, 2072, 9, 231, 1, 231, 3, 231, 2075, 8, 231, 1, 231, 3, 231, 2078, 8, 231, 1, 231, 3, 231, 2081, 8, 231, 1, 231, 4, 231, 2084, 8, 231, 11, 231, 12, 231, 2085, 1, 231, 3, 231, 2089, 8, 231, 1, 231, 3, 231, 2092, 8, 231, 1, 231, 3, 231, 2095, 8, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 3, 232, 2115, 8, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 2135, 8, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 4, 235, 2142, 8, 235, 11, 235, 12, 235, 2143, 1, 235, 1, 235, 4, 235, 2148, 8, 235, 11, 235, 12, 235, 2149, 5, 235, 2152, 8, 235, 10, 235, 12, 235, 2155, 9, 235, 1, 236, 1, 236, 1, 236, 1, 236, 5, 236, 2161, 8, 236, 10, 236, 12, 236, 2164, 9, 236, 1, 236, 3, 236, 2167, 8, 236, 1, 236, 3, 236, 2170, 8, 236, 1, 236, 1, 236, 1, 236, 1, 236, 5, 236, 2176, 8, 236, 10, 236, 12, 236, 2179, 9, 236, 1, 236, 1, 236, 3, 236, 2183, 8, 236, 1, 236, 1, 236, 1, 237, 4, 237, 2188, 8, 237, 11, 237, 12, 237, 2189, 1, 237, 1, 237, 1, 2177, 0, 238, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 0, 463, 231, 465, 232, 467, 233, 469, 234, 471, 235, 473, 236, 475, 237, 1, 0, 6, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 5, 0, 65, 90, 97, 122, 880, 1279, 7936, 8191, 8495, 8495, 5, 0, 48, 57, 65, 90, 97, 122, 880, 1279, 7936, 8191, 2, 0, 10, 10, 13, 13, 2, 0, 9, 9, 32, 32, 2224, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 1, 477, 1, 0, 0, 0, 3, 479, 1, 0, 0, 0, 5, 482, 1, 0, 0, 0, 7, 486, 1, 0, 0, 0, 9, 488, 1, 0, 0, 0, 11, 490, 1, 0, 0, 0, 13, 492, 1, 0, 0, 0, 15, 494, 1, 0, 0, 0, 17, 498, 1, 0, 0, 0, 19, 500, 1, 0, 0, 0, 21, 502, 1, 0, 0, 0, 23, 506, 1, 0, 0, 0, 25, 516, 1, 0, 0, 0, 27, 519, 1, 0, 0, 0, 29, 525, 1, 0, 0, 0, 31, 528, 1, 0, 0, 0, 33, 540, 1, 0, 0, 0, 35, 542, 1, 0, 0, 0, 37, 545, 1, 0, 0, 0, 39, 552, 1, 0, 0, 0, 41, 554, 1, 0, 0, 0, 43, 563, 1, 0, 0, 0, 45, 565, 1, 0, 0, 0, 47, 573, 1, 0, 0, 0, 49, 575, 1, 0, 0, 0, 51, 578, 1, 0, 0, 0, 53, 581, 1, 0, 0, 0, 55, 583, 1, 0, 0, 0, 57, 585, 1, 0, 0, 0, 59, 587, 1, 0, 0, 0, 61, 590, 1, 0, 0, 0, 63, 592, 1, 0, 0, 0, 65, 594, 1, 0, 0, 0, 67, 596, 1, 0, 0, 0, 69, 600, 1, 0, 0, 0, 71, 604, 1, 0, 0, 0, 73, 606, 1, 0, 0, 0, 75, 610, 1, 0, 0, 0, 77, 613, 1, 0, 0, 0, 79, 621, 1, 0, 0, 0, 81, 624, 1, 0, 0, 0, 83, 633, 1, 0, 0, 0, 85, 636, 1, 0, 0, 0, 87, 638, 1, 0, 0, 0, 89, 645, 1, 0, 0, 0, 91, 647, 1, 0, 0, 0, 93, 655, 1, 0, 0, 0, 95, 658, 1, 0, 0, 0, 97, 665, 1, 0, 0, 0, 99, 667, 1, 0, 0, 0, 101, 669, 1, 0, 0, 0, 103, 671, 1, 0, 0, 0, 105, 675, 1, 0, 0, 0, 107, 679, 1, 0, 0, 0, 109, 682, 1, 0, 0, 0, 111, 685, 1, 0, 0, 0, 113, 687, 1, 0, 0, 0, 115, 689, 1, 0, 0, 0, 117, 692, 1, 0, 0, 0, 119, 694, 1, 0, 0, 0, 121, 696, 1, 0, 0, 0, 123, 698, 1, 0, 0, 0, 125, 703, 1, 0, 0, 0, 127, 710, 1, 0, 0, 0, 129, 716, 1, 0, 0, 0, 131, 721, 1, 0, 0, 0, 133, 727, 1, 0, 0, 0, 135, 733, 1, 0, 0, 0, 137, 738, 1, 0, 0, 0, 139, 742, 1, 0, 0, 0, 141, 747, 1, 0, 0, 0, 143, 752, 1, 0, 0, 0, 145, 757, 1, 0, 0, 0, 147, 762, 1, 0, 0, 0, 149, 769, 1, 0, 0, 0, 151, 774, 1, 0, 0, 0, 153, 779, 1, 0, 0, 0, 155, 786, 1, 0, 0, 0, 157, 791, 1, 0, 0, 0, 159, 799, 1, 0, 0, 0, 161, 807, 1, 0, 0, 0, 163, 815, 1, 0, 0, 0, 165, 825, 1, 0, 0, 0, 167, 833, 1, 0, 0, 0, 169, 843, 1, 0, 0, 0, 171, 851, 1, 0, 0, 0, 173, 857, 1, 0, 0, 0, 175, 863, 1, 0, 0, 0, 177, 869, 1, 0, 0, 0, 179, 875, 1, 0, 0, 0, 181, 883, 1, 0, 0, 0, 183, 889, 1, 0, 0, 0, 185, 897, 1, 0, 0, 0, 187, 903, 1, 0, 0, 0, 189, 911, 1, 0, 0, 0, 191, 917, 1, 0, 0, 0, 193, 921, 1, 0, 0, 0, 195, 927, 1, 0, 0, 0, 197, 931, 1, 0, 0, 0, 199, 937, 1, 0, 0, 0, 201, 941, 1, 0, 0, 0, 203, 949, 1, 0, 0, 0, 205, 955, 1, 0, 0, 0, 207, 960, 1, 0, 0, 0, 209, 966, 1, 0, 0, 0, 211, 971, 1, 0, 0, 0, 213, 979, 1, 0, 0, 0, 215, 985, 1, 0, 0, 0, 217, 992, 1, 0, 0, 0, 219, 1000, 1, 0, 0, 0, 221, 1006, 1, 0, 0, 0, 223, 1015, 1, 0, 0, 0, 225, 1022, 1, 0, 0, 0, 227, 1030, 1, 0, 0, 0, 229, 1036, 1, 0, 0, 0, 231, 1045, 1, 0, 0, 0, 233, 1052, 1, 0, 0, 0, 235, 1060, 1, 0, 0, 0, 237, 1066, 1, 0, 0, 0, 239, 1075, 1, 0, 0, 0, 241, 1082, 1, 0, 0, 0, 243, 1090, 1, 0, 0, 0, 245, 1099, 1, 0, 0, 0, 247, 1109, 1, 0, 0, 0, 249, 1116, 1, 0, 0, 0, 251, 1127, 1, 0, 0, 0, 253, 1134, 1, 0, 0, 0, 255, 1142, 1, 0, 0, 0, 257, 1149, 1, 0, 0, 0, 259, 1158, 1, 0, 0, 0, 261, 1167, 1, 0, 0, 0, 263, 1177, 1, 0, 0, 0, 265, 1185, 1, 0, 0, 0, 267, 1196, 1, 0, 0, 0, 269, 1203, 1, 0, 0, 0, 271, 1214, 1, 0, 0, 0, 273, 1221, 1, 0, 0, 0, 275, 1233, 1, 0, 0, 0, 277, 1243, 1, 0, 0, 0, 279, 1250, 1, 0, 0, 0, 281, 1261, 1, 0, 0, 0, 283, 1273, 1, 0, 0, 0, 285, 1278, 1, 0, 0, 0, 287, 1287, 1, 0, 0, 0, 289, 1295, 1, 0, 0, 0, 291, 1300, 1, 0, 0, 0, 293, 1306, 1, 0, 0, 0, 295, 1311, 1, 0, 0, 0, 297, 1316, 1, 0, 0, 0, 299, 1323, 1, 0, 0, 0, 301, 1334, 1, 0, 0, 0, 303, 1340, 1, 0, 0, 0, 305, 1350, 1, 0, 0, 0, 307, 1357, 1, 0, 0, 0, 309, 1371, 1, 0, 0, 0, 311, 1383, 1, 0, 0, 0, 313, 1390, 1, 0, 0, 0, 315, 1400, 1, 0, 0, 0, 317, 1407, 1, 0, 0, 0, 319, 1413, 1, 0, 0, 0, 321, 1422, 1, 0, 0, 0, 323, 1429, 1, 0, 0, 0, 325, 1434, 1, 0, 0, 0, 327, 1439, 1, 0, 0, 0, 329, 1447, 1, 0, 0, 0, 331, 1455, 1, 0, 0, 0, 333, 1460, 1, 0, 0, 0, 335, 1465, 1, 0, 0, 0, 337, 1475, 1, 0, 0, 0, 339, 1484, 1, 0, 0, 0, 341, 1491, 1, 0, 0, 0, 343, 1496, 1, 0, 0, 0, 345, 1502, 1, 0, 0, 0, 347, 1508, 1, 0, 0, 0, 349, 1512, 1, 0, 0, 0, 351, 1516, 1, 0, 0, 0, 353, 1527, 1, 0, 0, 0, 355, 1536, 1, 0, 0, 0, 357, 1540, 1, 0, 0, 0, 359, 1544, 1, 0, 0, 0, 361, 1549, 1, 0, 0, 0, 363, 1554, 1, 0, 0, 0, 365, 1559, 1, 0, 0, 0, 367, 1570, 1, 0, 0, 0, 369, 1575, 1, 0, 0, 0, 371, 1582, 1, 0, 0, 0, 373, 1593, 1, 0, 0, 0, 375, 1604, 1, 0, 0, 0, 377, 1610, 1, 0, 0, 0, 379, 1615, 1, 0, 0, 0, 381, 1619, 1, 0, 0, 0, 383, 1623, 1, 0, 0, 0, 385, 1627, 1, 0, 0, 0, 387, 1633, 1, 0, 0, 0, 389, 1637, 1, 0, 0, 0, 391, 1643, 1, 0, 0, 0, 393, 1650, 1, 0, 0, 0, 395, 1656, 1, 0, 0, 0, 397, 1669, 1, 0, 0, 0, 399, 1682, 1, 0, 0, 0, 401, 1692, 1, 0, 0, 0, 403, 1704, 1, 0, 0, 0, 405, 1712, 1, 0, 0, 0, 407, 1723, 1, 0, 0, 0, 409, 1737, 1, 0, 0, 0, 411, 1746, 1, 0, 0, 0, 413, 1758, 1, 0, 0, 0, 415, 1767, 1, 0, 0, 0, 417, 1783, 1, 0, 0, 0, 419, 1798, 1, 0, 0, 0, 421, 1811, 1, 0, 0, 0, 423, 1829, 1, 0, 0, 0, 425, 1845, 1, 0, 0, 0, 427, 1862, 1, 0, 0, 0, 429, 1881, 1, 0, 0, 0, 431, 1892, 1, 0, 0, 0, 433, 1902, 1, 0, 0, 0, 435, 1911, 1, 0, 0, 0, 437, 1922, 1, 0, 0, 0, 439, 1932, 1, 0, 0, 0, 441, 1941, 1, 0, 0, 0, 443, 1953, 1, 0, 0, 0, 445, 1970, 1, 0, 0, 0, 447, 1982, 1, 0, 0, 0, 449, 1998, 1, 0, 0, 0, 451, 2008, 1, 0, 0, 0, 453, 2016, 1, 0, 0, 0, 455, 2027, 1, 0, 0, 0, 457, 2034, 1, 0, 0, 0, 459, 2046, 1, 0, 0, 0, 461, 2052, 1, 0, 0, 0, 463, 2094, 1, 0, 0, 0, 465, 2114, 1, 0, 0, 0, 467, 2134, 1, 0, 0, 0, 469, 2136, 1, 0, 0, 0, 471, 2141, 1, 0, 0, 0, 473, 2182, 1, 0, 0, 0, 475, 2187, 1, 0, 0, 0, 477, 478, 5, 33, 0, 0, 478, 2, 1, 0, 0, 0, 479, 480, 5, 33, 0, 0, 480, 481, 5, 33, 0, 0, 481, 4, 1, 0, 0, 0, 482, 483, 5, 33, 0, 0, 483, 484, 5, 33, 0, 0, 484, 485, 5, 33, 0, 0, 485, 6, 1, 0, 0, 0, 486, 487, 5, 94, 0, 0, 487, 8, 1, 0, 0, 0, 488, 489, 5, 45, 0, 0, 489, 10, 1, 0, 0, 0, 490, 491, 5, 43, 0, 0, 491, 12, 1, 0, 0, 0, 492, 493, 5, 42, 0, 0, 493, 14, 1, 0, 0, 0, 494, 495, 5, 46, 0, 0, 495, 496, 5, 46, 0, 0, 496, 497, 5, 46, 0, 0, 497, 16, 1, 0, 0, 0, 498, 499, 5, 8230, 0, 0, 499, 18, 1, 0, 0, 0, 500, 501, 5, 47, 0, 0, 501, 20, 1, 0, 0, 0, 502, 503, 5, 109, 0, 0, 503, 504, 5, 111, 0, 0, 504, 505, 5, 100, 0, 0, 505, 22, 1, 0, 0, 0, 506, 507, 5, 105, 0, 0, 507, 508, 5, 110, 0, 0, 508, 509, 5, 116, 0, 0, 509, 510, 5, 101, 0, 0, 510, 511, 5, 114, 0, 0, 511, 512, 5, 115, 0, 0, 512, 513, 5, 101, 0, 0, 513, 514, 5, 99, 0, 0, 514, 515, 5, 116, 0, 0, 515, 24, 1, 0, 0, 0, 516, 517, 5, 47, 0, 0, 517, 518, 5, 92, 0, 0, 518, 26, 1, 0, 0, 0, 519, 520, 5, 117, 0, 0, 520, 521, 5, 110, 0, 0, 521, 522, 5, 105, 0, 0, 522, 523, 5, 116, 0, 0, 523, 524, 5, 101, 0, 0, 524, 28, 1, 0, 0, 0, 525, 526, 5, 92, 0, 0, 526, 527, 5, 47, 0, 0, 527, 30, 1, 0, 0, 0, 528, 529, 5, 115, 0, 0, 529, 530, 5, 101, 0, 0, 530, 531, 5, 116, 0, 0, 531, 532, 5, 115, 0, 0, 532, 533, 5, 117, 0, 0, 533, 534, 5, 98, 0, 0, 534, 535, 5, 116, 0, 0, 535, 536, 5, 114, 0, 0, 536, 537, 5, 97, 0, 0, 537, 538, 5, 99, 0, 0, 538, 539, 5, 116, 0, 0, 539, 32, 1, 0, 0, 0, 540, 541, 5, 92, 0, 0, 541, 34, 1, 0, 0, 0, 542, 543, 5, 105, 0, 0, 543, 544, 5, 110, 0, 0, 544, 36, 1, 0, 0, 0, 545, 546, 5, 115, 0, 0, 546, 547, 5, 117, 0, 0, 547, 548, 5, 98, 0, 0, 548, 549, 5, 115, 0, 0, 549, 550, 5, 101, 0, 0, 550, 551, 5, 116, 0, 0, 551, 38, 1, 0, 0, 0, 552, 553, 5, 8838, 0, 0, 553, 40, 1, 0, 0, 0, 554, 555, 5, 115, 0, 0, 555, 556, 5, 117, 0, 0, 556, 557, 5, 112, 0, 0, 557, 558, 5, 101, 0, 0, 558, 559, 5, 114, 0, 0, 559, 560, 5, 115, 0, 0, 560, 561, 5, 101, 0, 0, 561, 562, 5, 116, 0, 0, 562, 42, 1, 0, 0, 0, 563, 564, 5, 8839, 0, 0, 564, 44, 1, 0, 0, 0, 565, 566, 5, 100, 0, 0, 566, 567, 5, 105, 0, 0, 567, 568, 5, 118, 0, 0, 568, 569, 5, 105, 0, 0, 569, 570, 5, 100, 0, 0, 570, 571, 5, 101, 0, 0, 571, 572, 5, 115, 0, 0, 572, 46, 1, 0, 0, 0, 573, 574, 5, 124, 0, 0, 574, 48, 1, 0, 0, 0, 575, 576, 5, 62, 0, 0, 576, 577, 5, 61, 0, 0, 577, 50, 1, 0, 0, 0, 578, 579, 5, 60, 0, 0, 579, 580, 5, 61, 0, 0, 580, 52, 1, 0, 0, 0, 581, 582, 5, 62, 0, 0, 582, 54, 1, 0, 0, 0, 583, 584, 5, 60, 0, 0, 584, 56, 1, 0, 0, 0, 585, 586, 5, 61, 0, 0, 586, 58, 1, 0, 0, 0, 587, 588, 5, 60, 0, 0, 588, 589, 5, 62, 0, 0, 589, 60, 1, 0, 0, 0, 590, 591, 5, 8801, 0, 0, 591, 62, 1, 0, 0, 0, 592, 593, 5, 40, 0, 0, 593, 64, 1, 0, 0, 0, 594, 595, 5, 41, 0, 0, 595, 66, 1, 0, 0, 0, 596, 597, 5, 110, 0, 0, 597, 598, 5, 111, 0, 0, 598, 599, 5, 116, 0, 0, 599, 68, 1, 0, 0, 0, 600, 601, 5, 97, 0, 0, 601, 602, 5, 110, 0, 0, 602, 603, 5, 100, 0, 0, 603, 70, 1, 0, 0, 0, 604, 605, 5, 38, 0, 0, 605, 72, 1, 0, 0, 0, 606, 607, 5, 120, 0, 0, 607, 608, 5, 111, 0, 0, 608, 609, 5, 114, 0, 0, 609, 74, 1, 0, 0, 0, 610, 611, 5, 111, 0, 0, 611, 612, 5, 114, 0, 0, 612, 76, 1, 0, 0, 0, 613, 614, 5, 105, 0, 0, 614, 615, 5, 109, 0, 0, 615, 616, 5, 112, 0, 0, 616, 617, 5, 108, 0, 0, 617, 618, 5, 105, 0, 0, 618, 619, 5, 101, 0, 0, 619, 620, 5, 115, 0, 0, 620, 78, 1, 0, 0, 0, 621, 622, 5, 45, 0, 0, 622, 623, 5, 62, 0, 0, 623, 80, 1, 0, 0, 0, 624, 625, 5, 112, 0, 0, 625, 626, 5, 114, 0, 0, 626, 627, 5, 111, 0, 0, 627, 628, 5, 118, 0, 0, 628, 629, 5, 105, 0, 0, 629, 630, 5, 100, 0, 0, 630, 631, 5, 101, 0, 0, 631, 632, 5, 100, 0, 0, 632, 82, 1, 0, 0, 0, 633, 634, 5, 61, 0, 0, 634, 635, 5, 62, 0, 0, 635, 84, 1, 0, 0, 0, 636, 637, 5, 58, 0, 0, 637, 86, 1, 0, 0, 0, 638, 639, 5, 102, 0, 0, 639, 640, 5, 111, 0, 0, 640, 641, 5, 114, 0, 0, 641, 642, 5, 97, 0, 0, 642, 643, 5, 108, 0, 0, 643, 644, 5, 108, 0, 0, 644, 88, 1, 0, 0, 0, 645, 646, 5, 8704, 0, 0, 646, 90, 1, 0, 0, 0, 647, 648, 5, 101, 0, 0, 648, 649, 5, 120, 0, 0, 649, 650, 5, 105, 0, 0, 650, 651, 5, 115, 0, 0, 651, 652, 5, 116, 0, 0, 652, 653, 5, 115, 0, 0, 653, 654, 5, 33, 0, 0, 654, 92, 1, 0, 0, 0, 655, 656, 5, 8707, 0, 0, 656, 657, 5, 33, 0, 0, 657, 94, 1, 0, 0, 0, 658, 659, 5, 101, 0, 0, 659, 660, 5, 120, 0, 0, 660, 661, 5, 105, 0, 0, 661, 662, 5, 115, 0, 0, 662, 663, 5, 116, 0, 0, 663, 664, 5, 115, 0, 0, 664, 96, 1, 0, 0, 0, 665, 666, 5, 8707, 0, 0, 666, 98, 1, 0, 0, 0, 667, 668, 5, 44, 0, 0, 668, 100, 1, 0, 0, 0, 669, 670, 5, 59, 0, 0, 670, 102, 1, 0, 0, 0, 671, 672, 5, 43, 0, 0, 672, 673, 5, 111, 0, 0, 673, 674, 5, 111, 0, 0, 674, 104, 1, 0, 0, 0, 675, 676, 5, 45, 0, 0, 676, 677, 5, 111, 0, 0, 677, 678, 5, 111, 0, 0, 678, 106, 1, 0, 0, 0, 679, 680, 5, 40, 0, 0, 680, 681, 5, 124, 0, 0, 681, 108, 1, 0, 0, 0, 682, 683, 5, 124, 0, 0, 683, 684, 5, 41, 0, 0, 684, 110, 1, 0, 0, 0, 685, 686, 5, 35, 0, 0, 686, 112, 1, 0, 0, 0, 687, 688, 5, 91, 0, 0, 688, 114, 1, 0, 0, 0, 689, 690, 5, 93, 0, 0, 690, 691, 5, 84, 0, 0, 691, 116, 1, 0, 0, 0, 692, 693, 5, 93, 0, 0, 693, 118, 1, 0, 0, 0, 694, 695, 5, 123, 0, 0, 695, 120, 1, 0, 0, 0, 696, 697, 5, 125, 0, 0, 697, 122, 1, 0, 0, 0, 698, 699, 5, 108, 0, 0, 699, 700, 5, 111, 0, 0, 700, 701, 5, 103, 0, 0, 701, 702, 5, 40, 0, 0, 702, 124, 1, 0, 0, 0, 703, 704, 5, 108, 0, 0, 704, 705, 5, 111, 0, 0, 705, 706, 5, 103, 0, 0, 706, 707, 5, 49, 0, 0, 707, 708, 5, 48, 0, 0, 708, 709, 5, 40, 0, 0, 709, 126, 1, 0, 0, 0, 710, 711, 5, 108, 0, 0, 711, 712, 5, 111, 0, 0, 712, 713, 5, 103, 0, 0, 713, 714, 5, 50, 0, 0, 714, 715, 5, 40, 0, 0, 715, 128, 1, 0, 0, 0, 716, 717, 5, 112, 0, 0, 717, 718, 5, 111, 0, 0, 718, 719, 5, 119, 0, 0, 719, 720, 5, 40, 0, 0, 720, 130, 1, 0, 0, 0, 721, 722, 5, 115, 0, 0, 722, 723, 5, 113, 0, 0, 723, 724, 5, 114, 0, 0, 724, 725, 5, 116, 0, 0, 725, 726, 5, 40, 0, 0, 726, 132, 1, 0, 0, 0, 727, 728, 5, 99, 0, 0, 728, 729, 5, 98, 0, 0, 729, 730, 5, 114, 0, 0, 730, 731, 5, 116, 0, 0, 731, 732, 5, 40, 0, 0, 732, 134, 1, 0, 0, 0, 733, 734, 5, 115, 0, 0, 734, 735, 5, 113, 0, 0, 735, 736, 5, 114, 0, 0, 736, 737, 5, 40, 0, 0, 737, 136, 1, 0, 0, 0, 738, 739, 5, 108, 0, 0, 739, 740, 5, 110, 0, 0, 740, 741, 5, 40, 0, 0, 741, 138, 1, 0, 0, 0, 742, 743, 5, 101, 0, 0, 743, 744, 5, 120, 0, 0, 744, 745, 5, 112, 0, 0, 745, 746, 5, 40, 0, 0, 746, 140, 1, 0, 0, 0, 747, 748, 5, 115, 0, 0, 748, 749, 5, 105, 0, 0, 749, 750, 5, 110, 0, 0, 750, 751, 5, 40, 0, 0, 751, 142, 1, 0, 0, 0, 752, 753, 5, 99, 0, 0, 753, 754, 5, 111, 0, 0, 754, 755, 5, 115, 0, 0, 755, 756, 5, 40, 0, 0, 756, 144, 1, 0, 0, 0, 757, 758, 5, 116, 0, 0, 758, 759, 5, 97, 0, 0, 759, 760, 5, 110, 0, 0, 760, 761, 5, 40, 0, 0, 761, 146, 1, 0, 0, 0, 762, 763, 5, 99, 0, 0, 763, 764, 5, 111, 0, 0, 764, 765, 5, 116, 0, 0, 765, 766, 5, 97, 0, 0, 766, 767, 5, 110, 0, 0, 767, 768, 5, 40, 0, 0, 768, 148, 1, 0, 0, 0, 769, 770, 5, 99, 0, 0, 770, 771, 5, 111, 0, 0, 771, 772, 5, 116, 0, 0, 772, 773, 5, 40, 0, 0, 773, 150, 1, 0, 0, 0, 774, 775, 5, 115, 0, 0, 775, 776, 5, 101, 0, 0, 776, 777, 5, 99, 0, 0, 777, 778, 5, 40, 0, 0, 778, 152, 1, 0, 0, 0, 779, 780, 5, 99, 0, 0, 780, 781, 5, 111, 0, 0, 781, 782, 5, 115, 0, 0, 782, 783, 5, 101, 0, 0, 783, 784, 5, 99, 0, 0, 784, 785, 5, 40, 0, 0, 785, 154, 1, 0, 0, 0, 786, 787, 5, 99, 0, 0, 787, 788, 5, 115, 0, 0, 788, 789, 5, 99, 0, 0, 789, 790, 5, 40, 0, 0, 790, 156, 1, 0, 0, 0, 791, 792, 5, 97, 0, 0, 792, 793, 5, 114, 0, 0, 793, 794, 5, 99, 0, 0, 794, 795, 5, 115, 0, 0, 795, 796, 5, 105, 0, 0, 796, 797, 5, 110, 0, 0, 797, 798, 5, 40, 0, 0, 798, 158, 1, 0, 0, 0, 799, 800, 5, 97, 0, 0, 800, 801, 5, 114, 0, 0, 801, 802, 5, 99, 0, 0, 802, 803, 5, 99, 0, 0, 803, 804, 5, 111, 0, 0, 804, 805, 5, 115, 0, 0, 805, 806, 5, 40, 0, 0, 806, 160, 1, 0, 0, 0, 807, 808, 5, 97, 0, 0, 808, 809, 5, 114, 0, 0, 809, 810, 5, 99, 0, 0, 810, 811, 5, 116, 0, 0, 811, 812, 5, 97, 0, 0, 812, 813, 5, 110, 0, 0, 813, 814, 5, 40, 0, 0, 814, 162, 1, 0, 0, 0, 815, 816, 5, 97, 0, 0, 816, 817, 5, 114, 0, 0, 817, 818, 5, 99, 0, 0, 818, 819, 5, 99, 0, 0, 819, 820, 5, 111, 0, 0, 820, 821, 5, 116, 0, 0, 821, 822, 5, 97, 0, 0, 822, 823, 5, 110, 0, 0, 823, 824, 5, 40, 0, 0, 824, 164, 1, 0, 0, 0, 825, 826, 5, 97, 0, 0, 826, 827, 5, 114, 0, 0, 827, 828, 5, 99, 0, 0, 828, 829, 5, 115, 0, 0, 829, 830, 5, 101, 0, 0, 830, 831, 5, 99, 0, 0, 831, 832, 5, 40, 0, 0, 832, 166, 1, 0, 0, 0, 833, 834, 5, 97, 0, 0, 834, 835, 5, 114, 0, 0, 835, 836, 5, 99, 0, 0, 836, 837, 5, 99, 0, 0, 837, 838, 5, 111, 0, 0, 838, 839, 5, 115, 0, 0, 839, 840, 5, 101, 0, 0, 840, 841, 5, 99, 0, 0, 841, 842, 5, 40, 0, 0, 842, 168, 1, 0, 0, 0, 843, 844, 5, 97, 0, 0, 844, 845, 5, 114, 0, 0, 845, 846, 5, 99, 0, 0, 846, 847, 5, 99, 0, 0, 847, 848, 5, 115, 0, 0, 848, 849, 5, 99, 0, 0, 849, 850, 5, 40, 0, 0, 850, 170, 1, 0, 0, 0, 851, 852, 5, 97, 0, 0, 852, 853, 5, 99, 0, 0, 853, 854, 5, 115, 0, 0, 854, 855, 5, 99, 0, 0, 855, 856, 5, 40, 0, 0, 856, 172, 1, 0, 0, 0, 857, 858, 5, 97, 0, 0, 858, 859, 5, 115, 0, 0, 859, 860, 5, 105, 0, 0, 860, 861, 5, 110, 0, 0, 861, 862, 5, 40, 0, 0, 862, 174, 1, 0, 0, 0, 863, 864, 5, 97, 0, 0, 864, 865, 5, 99, 0, 0, 865, 866, 5, 111, 0, 0, 866, 867, 5, 115, 0, 0, 867, 868, 5, 40, 0, 0, 868, 176, 1, 0, 0, 0, 869, 870, 5, 97, 0, 0, 870, 871, 5, 116, 0, 0, 871, 872, 5, 97, 0, 0, 872, 873, 5, 110, 0, 0, 873, 874, 5, 40, 0, 0, 874, 178, 1, 0, 0, 0, 875, 876, 5, 97, 0, 0, 876, 877, 5, 99, 0, 0, 877, 878, 5, 111, 0, 0, 878, 879, 5, 116, 0, 0, 879, 880, 5, 97, 0, 0, 880, 881, 5, 110, 0, 0, 881, 882, 5, 40, 0, 0, 882, 180, 1, 0, 0, 0, 883, 884, 5, 97, 0, 0, 884, 885, 5, 115, 0, 0, 885, 886, 5, 101, 0, 0, 886, 887, 5, 99, 0, 0, 887, 888, 5, 40, 0, 0, 888, 182, 1, 0, 0, 0, 889, 890, 5, 97, 0, 0, 890, 891, 5, 99, 0, 0, 891, 892, 5, 111, 0, 0, 892, 893, 5, 115, 0, 0, 893, 894, 5, 101, 0, 0, 894, 895, 5, 99, 0, 0, 895, 896, 5, 40, 0, 0, 896, 184, 1, 0, 0, 0, 897, 898, 5, 97, 0, 0, 898, 899, 5, 99, 0, 0, 899, 900, 5, 111, 0, 0, 900, 901, 5, 116, 0, 0, 901, 902, 5, 40, 0, 0, 902, 186, 1, 0, 0, 0, 903, 904, 5, 97, 0, 0, 904, 905, 5, 114, 0, 0, 905, 906, 5, 99, 0, 0, 906, 907, 5, 99, 0, 0, 907, 908, 5, 111, 0, 0, 908, 909, 5, 116, 0, 0, 909, 910, 5, 40, 0, 0, 910, 188, 1, 0, 0, 0, 911, 912, 5, 115, 0, 0, 912, 913, 5, 105, 0, 0, 913, 914, 5, 110, 0, 0, 914, 915, 5, 104, 0, 0, 915, 916, 5, 40, 0, 0, 916, 190, 1, 0, 0, 0, 917, 918, 5, 115, 0, 0, 918, 919, 5, 104, 0, 0, 919, 920, 5, 40, 0, 0, 920, 192, 1, 0, 0, 0, 921, 922, 5, 99, 0, 0, 922, 923, 5, 111, 0, 0, 923, 924, 5, 115, 0, 0, 924, 925, 5, 104, 0, 0, 925, 926, 5, 40, 0, 0, 926, 194, 1, 0, 0, 0, 927, 928, 5, 99, 0, 0, 928, 929, 5, 104, 0, 0, 929, 930, 5, 40, 0, 0, 930, 196, 1, 0, 0, 0, 931, 932, 5, 116, 0, 0, 932, 933, 5, 97, 0, 0, 933, 934, 5, 110, 0, 0, 934, 935, 5, 104, 0, 0, 935, 936, 5, 40, 0, 0, 936, 198, 1, 0, 0, 0, 937, 938, 5, 116, 0, 0, 938, 939, 5, 104, 0, 0, 939, 940, 5, 40, 0, 0, 940, 200, 1, 0, 0, 0, 941, 942, 5, 99, 0, 0, 942, 943, 5, 111, 0, 0, 943, 944, 5, 116, 0, 0, 944, 945, 5, 97, 0, 0, 945, 946, 5, 110, 0, 0, 946, 947, 5, 104, 0, 0, 947, 948, 5, 40, 0, 0, 948, 202, 1, 0, 0, 0, 949, 950, 5, 99, 0, 0, 950, 951, 5, 111, 0, 0, 951, 952, 5, 116, 0, 0, 952, 953, 5, 104, 0, 0, 953, 954, 5, 40, 0, 0, 954, 204, 1, 0, 0, 0, 955, 956, 5, 99, 0, 0, 956, 957, 5, 116, 0, 0, 957, 958, 5, 104, 0, 0, 958, 959, 5, 40, 0, 0, 959, 206, 1, 0, 0, 0, 960, 961, 5, 115, 0, 0, 961, 962, 5, 101, 0, 0, 962, 963, 5, 99, 0, 0, 963, 964, 5, 104, 0, 0, 964, 965, 5, 40, 0, 0, 965, 208, 1, 0, 0, 0, 966, 967, 5, 115, 0, 0, 967, 968, 5, 99, 0, 0, 968, 969, 5, 104, 0, 0, 969, 970, 5, 40, 0, 0, 970, 210, 1, 0, 0, 0, 971, 972, 5, 99, 0, 0, 972, 973, 5, 111, 0, 0, 973, 974, 5, 115, 0, 0, 974, 975, 5, 101, 0, 0, 975, 976, 5, 99, 0, 0, 976, 977, 5, 104, 0, 0, 977, 978, 5, 40, 0, 0, 978, 212, 1, 0, 0, 0, 979, 980, 5, 99, 0, 0, 980, 981, 5, 115, 0, 0, 981, 982, 5, 99, 0, 0, 982, 983, 5, 104, 0, 0, 983, 984, 5, 40, 0, 0, 984, 214, 1, 0, 0, 0, 985, 986, 5, 97, 0, 0, 986, 987, 5, 115, 0, 0, 987, 988, 5, 105, 0, 0, 988, 989, 5, 110, 0, 0, 989, 990, 5, 104, 0, 0, 990, 991, 5, 40, 0, 0, 991, 216, 1, 0, 0, 0, 992, 993, 5, 97, 0, 0, 993, 994, 5, 114, 0, 0, 994, 995, 5, 115, 0, 0, 995, 996, 5, 105, 0, 0, 996, 997, 5, 110, 0, 0, 997, 998, 5, 104, 0, 0, 998, 999, 5, 40, 0, 0, 999, 218, 1, 0, 0, 0, 1000, 1001, 5, 97, 0, 0, 1001, 1002, 5, 114, 0, 0, 1002, 1003, 5, 115, 0, 0, 1003, 1004, 5, 104, 0, 0, 1004, 1005, 5, 40, 0, 0, 1005, 220, 1, 0, 0, 0, 1006, 1007, 5, 97, 0, 0, 1007, 1008, 5, 114, 0, 0, 1008, 1009, 5, 99, 0, 0, 1009, 1010, 5, 115, 0, 0, 1010, 1011, 5, 105, 0, 0, 1011, 1012, 5, 110, 0, 0, 1012, 1013, 5, 104, 0, 0, 1013, 1014, 5, 40, 0, 0, 1014, 222, 1, 0, 0, 0, 1015, 1016, 5, 97, 0, 0, 1016, 1017, 5, 99, 0, 0, 1017, 1018, 5, 111, 0, 0, 1018, 1019, 5, 115, 0, 0, 1019, 1020, 5, 104, 0, 0, 1020, 1021, 5, 40, 0, 0, 1021, 224, 1, 0, 0, 0, 1022, 1023, 5, 97, 0, 0, 1023, 1024, 5, 114, 0, 0, 1024, 1025, 5, 99, 0, 0, 1025, 1026, 5, 111, 0, 0, 1026, 1027, 5, 115, 0, 0, 1027, 1028, 5, 104, 0, 0, 1028, 1029, 5, 40, 0, 0, 1029, 226, 1, 0, 0, 0, 1030, 1031, 5, 97, 0, 0, 1031, 1032, 5, 114, 0, 0, 1032, 1033, 5, 99, 0, 0, 1033, 1034, 5, 104, 0, 0, 1034, 1035, 5, 40, 0, 0, 1035, 228, 1, 0, 0, 0, 1036, 1037, 5, 97, 0, 0, 1037, 1038, 5, 114, 0, 0, 1038, 1039, 5, 99, 0, 0, 1039, 1040, 5, 99, 0, 0, 1040, 1041, 5, 111, 0, 0, 1041, 1042, 5, 115, 0, 0, 1042, 1043, 5, 104, 0, 0, 1043, 1044, 5, 40, 0, 0, 1044, 230, 1, 0, 0, 0, 1045, 1046, 5, 97, 0, 0, 1046, 1047, 5, 116, 0, 0, 1047, 1048, 5, 97, 0, 0, 1048, 1049, 5, 110, 0, 0, 1049, 1050, 5, 104, 0, 0, 1050, 1051, 5, 40, 0, 0, 1051, 232, 1, 0, 0, 0, 1052, 1053, 5, 97, 0, 0, 1053, 1054, 5, 114, 0, 0, 1054, 1055, 5, 116, 0, 0, 1055, 1056, 5, 97, 0, 0, 1056, 1057, 5, 110, 0, 0, 1057, 1058, 5, 104, 0, 0, 1058, 1059, 5, 40, 0, 0, 1059, 234, 1, 0, 0, 0, 1060, 1061, 5, 97, 0, 0, 1061, 1062, 5, 114, 0, 0, 1062, 1063, 5, 116, 0, 0, 1063, 1064, 5, 104, 0, 0, 1064, 1065, 5, 40, 0, 0, 1065, 236, 1, 0, 0, 0, 1066, 1067, 5, 97, 0, 0, 1067, 1068, 5, 114, 0, 0, 1068, 1069, 5, 99, 0, 0, 1069, 1070, 5, 116, 0, 0, 1070, 1071, 5, 97, 0, 0, 1071, 1072, 5, 110, 0, 0, 1072, 1073, 5, 104, 0, 0, 1073, 1074, 5, 40, 0, 0, 1074, 238, 1, 0, 0, 0, 1075, 1076, 5, 97, 0, 0, 1076, 1077, 5, 99, 0, 0, 1077, 1078, 5, 111, 0, 0, 1078, 1079, 5, 116, 0, 0, 1079, 1080, 5, 104, 0, 0, 1080, 1081, 5, 40, 0, 0, 1081, 240, 1, 0, 0, 0, 1082, 1083, 5, 97, 0, 0, 1083, 1084, 5, 114, 0, 0, 1084, 1085, 5, 99, 0, 0, 1085, 1086, 5, 111, 0, 0, 1086, 1087, 5, 116, 0, 0, 1087, 1088, 5, 104, 0, 0, 1088, 1089, 5, 40, 0, 0, 1089, 242, 1, 0, 0, 0, 1090, 1091, 5, 97, 0, 0, 1091, 1092, 5, 99, 0, 0, 1092, 1093, 5, 111, 0, 0, 1093, 1094, 5, 116, 0, 0, 1094, 1095, 5, 97, 0, 0, 1095, 1096, 5, 110, 0, 0, 1096, 1097, 5, 104, 0, 0, 1097, 1098, 5, 40, 0, 0, 1098, 244, 1, 0, 0, 0, 1099, 1100, 5, 97, 0, 0, 1100, 1101, 5, 114, 0, 0, 1101, 1102, 5, 99, 0, 0, 1102, 1103, 5, 111, 0, 0, 1103, 1104, 5, 116, 0, 0, 1104, 1105, 5, 97, 0, 0, 1105, 1106, 5, 110, 0, 0, 1106, 1107, 5, 104, 0, 0, 1107, 1108, 5, 40, 0, 0, 1108, 246, 1, 0, 0, 0, 1109, 1110, 5, 97, 0, 0, 1110, 1111, 5, 114, 0, 0, 1111, 1112, 5, 99, 0, 0, 1112, 1113, 5, 116, 0, 0, 1113, 1114, 5, 104, 0, 0, 1114, 1115, 5, 40, 0, 0, 1115, 248, 1, 0, 0, 0, 1116, 1117, 5, 97, 0, 0, 1117, 1118, 5, 114, 0, 0, 1118, 1119, 5, 99, 0, 0, 1119, 1120, 5, 99, 0, 0, 1120, 1121, 5, 111, 0, 0, 1121, 1122, 5, 116, 0, 0, 1122, 1123, 5, 97, 0, 0, 1123, 1124, 5, 110, 0, 0, 1124, 1125, 5, 104, 0, 0, 1125, 1126, 5, 40, 0, 0, 1126, 250, 1, 0, 0, 0, 1127, 1128, 5, 97, 0, 0, 1128, 1129, 5, 115, 0, 0, 1129, 1130, 5, 101, 0, 0, 1130, 1131, 5, 99, 0, 0, 1131, 1132, 5, 104, 0, 0, 1132, 1133, 5, 40, 0, 0, 1133, 252, 1, 0, 0, 0, 1134, 1135, 5, 97, 0, 0, 1135, 1136, 5, 114, 0, 0, 1136, 1137, 5, 115, 0, 0, 1137, 1138, 5, 101, 0, 0, 1138, 1139, 5, 99, 0, 0, 1139, 1140, 5, 104, 0, 0, 1140, 1141, 5, 40, 0, 0, 1141, 254, 1, 0, 0, 0, 1142, 1143, 5, 97, 0, 0, 1143, 1144, 5, 114, 0, 0, 1144, 1145, 5, 115, 0, 0, 1145, 1146, 5, 99, 0, 0, 1146, 1147, 5, 104, 0, 0, 1147, 1148, 5, 40, 0, 0, 1148, 256, 1, 0, 0, 0, 1149, 1150, 5, 97, 0, 0, 1150, 1151, 5, 114, 0, 0, 1151, 1152, 5, 99, 0, 0, 1152, 1153, 5, 115, 0, 0, 1153, 1154, 5, 101, 0, 0, 1154, 1155, 5, 99, 0, 0, 1155, 1156, 5, 104, 0, 0, 1156, 1157, 5, 40, 0, 0, 1157, 258, 1, 0, 0, 0, 1158, 1159, 5, 97, 0, 0, 1159, 1160, 5, 99, 0, 0, 1160, 1161, 5, 111, 0, 0, 1161, 1162, 5, 115, 0, 0, 1162, 1163, 5, 101, 0, 0, 1163, 1164, 5, 99, 0, 0, 1164, 1165, 5, 104, 0, 0, 1165, 1166, 5, 40, 0, 0, 1166, 260, 1, 0, 0, 0, 1167, 1168, 5, 97, 0, 0, 1168, 1169, 5, 114, 0, 0, 1169, 1170, 5, 99, 0, 0, 1170, 1171, 5, 111, 0, 0, 1171, 1172, 5, 115, 0, 0, 1172, 1173, 5, 101, 0, 0, 1173, 1174, 5, 99, 0, 0, 1174, 1175, 5, 104, 0, 0, 1175, 1176, 5, 40, 0, 0, 1176, 262, 1, 0, 0, 0, 1177, 1178, 5, 97, 0, 0, 1178, 1179, 5, 114, 0, 0, 1179, 1180, 5, 99, 0, 0, 1180, 1181, 5, 115, 0, 0, 1181, 1182, 5, 99, 0, 0, 1182, 1183, 5, 104, 0, 0, 1183, 1184, 5, 40, 0, 0, 1184, 264, 1, 0, 0, 0, 1185, 1186, 5, 97, 0, 0, 1186, 1187, 5, 114, 0, 0, 1187, 1188, 5, 99, 0, 0, 1188, 1189, 5, 99, 0, 0, 1189, 1190, 5, 111, 0, 0, 1190, 1191, 5, 115, 0, 0, 1191, 1192, 5, 101, 0, 0, 1192, 1193, 5, 99, 0, 0, 1193, 1194, 5, 104, 0, 0, 1194, 1195, 5, 40, 0, 0, 1195, 266, 1, 0, 0, 0, 1196, 1197, 5, 97, 0, 0, 1197, 1198, 5, 99, 0, 0, 1198, 1199, 5, 115, 0, 0, 1199, 1200, 5, 99, 0, 0, 1200, 1201, 5, 104, 0, 0, 1201, 1202, 5, 40, 0, 0, 1202, 268, 1, 0, 0, 0, 1203, 1204, 5, 102, 0, 0, 1204, 1205, 5, 97, 0, 0, 1205, 1206, 5, 99, 0, 0, 1206, 1207, 5, 116, 0, 0, 1207, 1208, 5, 111, 0, 0, 1208, 1209, 5, 114, 0, 0, 1209, 1210, 5, 105, 0, 0, 1210, 1211, 5, 97, 0, 0, 1211, 1212, 5, 108, 0, 0, 1212, 1213, 5, 40, 0, 0, 1213, 270, 1, 0, 0, 0, 1214, 1215, 5, 103, 0, 0, 1215, 1216, 5, 97, 0, 0, 1216, 1217, 5, 109, 0, 0, 1217, 1218, 5, 109, 0, 0, 1218, 1219, 5, 97, 0, 0, 1219, 1220, 5, 40, 0, 0, 1220, 272, 1, 0, 0, 0, 1221, 1222, 5, 100, 0, 0, 1222, 1223, 5, 101, 0, 0, 1223, 1224, 5, 114, 0, 0, 1224, 1225, 5, 105, 0, 0, 1225, 1226, 5, 118, 0, 0, 1226, 1227, 5, 97, 0, 0, 1227, 1228, 5, 116, 0, 0, 1228, 1229, 5, 105, 0, 0, 1229, 1230, 5, 118, 0, 0, 1230, 1231, 5, 101, 0, 0, 1231, 1232, 5, 40, 0, 0, 1232, 274, 1, 0, 0, 0, 1233, 1234, 5, 105, 0, 0, 1234, 1235, 5, 110, 0, 0, 1235, 1236, 5, 116, 0, 0, 1236, 1237, 5, 101, 0, 0, 1237, 1238, 5, 103, 0, 0, 1238, 1239, 5, 114, 0, 0, 1239, 1240, 5, 97, 0, 0, 1240, 1241, 5, 108, 0, 0, 1241, 1242, 5, 40, 0, 0, 1242, 276, 1, 0, 0, 0, 1243, 1244, 5, 108, 0, 0, 1244, 1245, 5, 105, 0, 0, 1245, 1246, 5, 109, 0, 0, 1246, 1247, 5, 105, 0, 0, 1247, 1248, 5, 116, 0, 0, 1248, 1249, 5, 40, 0, 0, 1249, 278, 1, 0, 0, 0, 1250, 1251, 5, 108, 0, 0, 1251, 1252, 5, 105, 0, 0, 1252, 1253, 5, 109, 0, 0, 1253, 1254, 5, 105, 0, 0, 1254, 1255, 5, 116, 0, 0, 1255, 1256, 5, 108, 0, 0, 1256, 1257, 5, 101, 0, 0, 1257, 1258, 5, 102, 0, 0, 1258, 1259, 5, 116, 0, 0, 1259, 1260, 5, 40, 0, 0, 1260, 280, 1, 0, 0, 0, 1261, 1262, 5, 108, 0, 0, 1262, 1263, 5, 105, 0, 0, 1263, 1264, 5, 109, 0, 0, 1264, 1265, 5, 105, 0, 0, 1265, 1266, 5, 116, 0, 0, 1266, 1267, 5, 114, 0, 0, 1267, 1268, 5, 105, 0, 0, 1268, 1269, 5, 103, 0, 0, 1269, 1270, 5, 104, 0, 0, 1270, 1271, 5, 116, 0, 0, 1271, 1272, 5, 40, 0, 0, 1272, 282, 1, 0, 0, 0, 1273, 1274, 5, 115, 0, 0, 1274, 1275, 5, 117, 0, 0, 1275, 1276, 5, 109, 0, 0, 1276, 1277, 5, 40, 0, 0, 1277, 284, 1, 0, 0, 0, 1278, 1279, 5, 112, 0, 0, 1279, 1280, 5, 114, 0, 0, 1280, 1281, 5, 111, 0, 0, 1281, 1282, 5, 100, 0, 0, 1282, 1283, 5, 117, 0, 0, 1283, 1284, 5, 99, 0, 0, 1284, 1285, 5, 116, 0, 0, 1285, 1286, 5, 40, 0, 0, 1286, 286, 1, 0, 0, 0, 1287, 1288, 5, 115, 0, 0, 1288, 1289, 5, 105, 0, 0, 1289, 1290, 5, 103, 0, 0, 1290, 1291, 5, 110, 0, 0, 1291, 1292, 5, 117, 0, 0, 1292, 1293, 5, 109, 0, 0, 1293, 1294, 5, 40, 0, 0, 1294, 288, 1, 0, 0, 0, 1295, 1296, 5, 115, 0, 0, 1296, 1297, 5, 103, 0, 0, 1297, 1298, 5, 110, 0, 0, 1298, 1299, 5, 40, 0, 0, 1299, 290, 1, 0, 0, 0, 1300, 1301, 5, 115, 0, 0, 1301, 1302, 5, 105, 0, 0, 1302, 1303, 5, 103, 0, 0, 1303, 1304, 5, 110, 0, 0, 1304, 1305, 5, 40, 0, 0, 1305, 292, 1, 0, 0, 0, 1306, 1307, 5, 97, 0, 0, 1307, 1308, 5, 98, 0, 0, 1308, 1309, 5, 115, 0, 0, 1309, 1310, 5, 40, 0, 0, 1310, 294, 1, 0, 0, 0, 1311, 1312, 5, 112, 0, 0, 1312, 1313, 5, 104, 0, 0, 1313, 1314, 5, 105, 0, 0, 1314, 1315, 5, 40, 0, 0, 1315, 296, 1, 0, 0, 0, 1316, 1317, 5, 112, 0, 0, 1317, 1318, 5, 114, 0, 0, 1318, 1319, 5, 105, 0, 0, 1319, 1320, 5, 109, 0, 0, 1320, 1321, 5, 101, 0, 0, 1321, 1322, 5, 40, 0, 0, 1322, 298, 1, 0, 0, 0, 1323, 1324, 5, 118, 0, 0, 1324, 1325, 5, 97, 0, 0, 1325, 1326, 5, 108, 0, 0, 1326, 1327, 5, 117, 0, 0, 1327, 1328, 5, 97, 0, 0, 1328, 1329, 5, 116, 0, 0, 1329, 1330, 5, 105, 0, 0, 1330, 1331, 5, 111, 0, 0, 1331, 1332, 5, 110, 0, 0, 1332, 1333, 5, 40, 0, 0, 1333, 300, 1, 0, 0, 0, 1334, 1335, 5, 99, 0, 0, 1335, 1336, 5, 97, 0, 0, 1336, 1337, 5, 114, 0, 0, 1337, 1338, 5, 100, 0, 0, 1338, 1339, 5, 40, 0, 0, 1339, 302, 1, 0, 0, 0, 1340, 1341, 5, 112, 0, 0, 1341, 1342, 5, 111, 0, 0, 1342, 1343, 5, 119, 0, 0, 1343, 1344, 5, 101, 0, 0, 1344, 1345, 5, 114, 0, 0, 1345, 1346, 5, 115, 0, 0, 1346, 1347, 5, 101, 0, 0, 1347, 1348, 5, 116, 0, 0, 1348, 1349, 5, 40, 0, 0, 1349, 304, 1, 0, 0, 0, 1350, 1351, 5, 117, 0, 0, 1351, 1352, 5, 110, 0, 0, 1352, 1353, 5, 105, 0, 0, 1353, 1354, 5, 111, 0, 0, 1354, 1355, 5, 110, 0, 0, 1355, 1356, 5, 40, 0, 0, 1356, 306, 1, 0, 0, 0, 1357, 1358, 5, 105, 0, 0, 1358, 1359, 5, 110, 0, 0, 1359, 1360, 5, 116, 0, 0, 1360, 1361, 5, 101, 0, 0, 1361, 1362, 5, 114, 0, 0, 1362, 1363, 5, 115, 0, 0, 1363, 1364, 5, 101, 0, 0, 1364, 1365, 5, 99, 0, 0, 1365, 1366, 5, 116, 0, 0, 1366, 1367, 5, 105, 0, 0, 1367, 1368, 5, 111, 0, 0, 1368, 1369, 5, 110, 0, 0, 1369, 1370, 5, 40, 0, 0, 1370, 308, 1, 0, 0, 0, 1371, 1372, 5, 99, 0, 0, 1372, 1373, 5, 111, 0, 0, 1373, 1374, 5, 109, 0, 0, 1374, 1375, 5, 112, 0, 0, 1375, 1376, 5, 108, 0, 0, 1376, 1377, 5, 101, 0, 0, 1377, 1378, 5, 109, 0, 0, 1378, 1379, 5, 101, 0, 0, 1379, 1380, 5, 110, 0, 0, 1380, 1381, 5, 116, 0, 0, 1381, 1382, 5, 40, 0, 0, 1382, 310, 1, 0, 0, 0, 1383, 1384, 5, 105, 0, 0, 1384, 1385, 5, 109, 0, 0, 1385, 1386, 5, 97, 0, 0, 1386, 1387, 5, 103, 0, 0, 1387, 1388, 5, 101, 0, 0, 1388, 1389, 5, 40, 0, 0, 1389, 312, 1, 0, 0, 0, 1390, 1391, 5, 112, 0, 0, 1391, 1392, 5, 114, 0, 0, 1392, 1393, 5, 101, 0, 0, 1393, 1394, 5, 105, 0, 0, 1394, 1395, 5, 109, 0, 0, 1395, 1396, 5, 97, 0, 0, 1396, 1397, 5, 103, 0, 0, 1397, 1398, 5, 101, 0, 0, 1398, 1399, 5, 40, 0, 0, 1399, 314, 1, 0, 0, 0, 1400, 1401, 5, 102, 0, 0, 1401, 1402, 5, 108, 0, 0, 1402, 1403, 5, 111, 0, 0, 1403, 1404, 5, 111, 0, 0, 1404, 1405, 5, 114, 0, 0, 1405, 1406, 5, 40, 0, 0, 1406, 316, 1, 0, 0, 0, 1407, 1408, 5, 99, 0, 0, 1408, 1409, 5, 101, 0, 0, 1409, 1410, 5, 105, 0, 0, 1410, 1411, 5, 108, 0, 0, 1411, 1412, 5, 40, 0, 0, 1412, 318, 1, 0, 0, 0, 1413, 1414, 5, 99, 0, 0, 1414, 1415, 5, 101, 0, 0, 1415, 1416, 5, 105, 0, 0, 1416, 1417, 5, 108, 0, 0, 1417, 1418, 5, 105, 0, 0, 1418, 1419, 5, 110, 0, 0, 1419, 1420, 5, 103, 0, 0, 1420, 1421, 5, 40, 0, 0, 1421, 320, 1, 0, 0, 0, 1422, 1423, 5, 114, 0, 0, 1423, 1424, 5, 111, 0, 0, 1424, 1425, 5, 117, 0, 0, 1425, 1426, 5, 110, 0, 0, 1426, 1427, 5, 100, 0, 0, 1427, 1428, 5, 40, 0, 0, 1428, 322, 1, 0, 0, 0, 1429, 1430, 5, 109, 0, 0, 1430, 1431, 5, 105, 0, 0, 1431, 1432, 5, 110, 0, 0, 1432, 1433, 5, 40, 0, 0, 1433, 324, 1, 0, 0, 0, 1434, 1435, 5, 109, 0, 0, 1435, 1436, 5, 97, 0, 0, 1436, 1437, 5, 120, 0, 0, 1437, 1438, 5, 40, 0, 0, 1438, 326, 1, 0, 0, 0, 1439, 1440, 5, 97, 0, 0, 1440, 1441, 5, 114, 0, 0, 1441, 1442, 5, 103, 0, 0, 1442, 1443, 5, 109, 0, 0, 1443, 1444, 5, 97, 0, 0, 1444, 1445, 5, 120, 0, 0, 1445, 1446, 5, 40, 0, 0, 1446, 328, 1, 0, 0, 0, 1447, 1448, 5, 97, 0, 0, 1448, 1449, 5, 114, 0, 0, 1449, 1450, 5, 103, 0, 0, 1450, 1451, 5, 109, 0, 0, 1451, 1452, 5, 105, 0, 0, 1452, 1453, 5, 110, 0, 0, 1453, 1454, 5, 40, 0, 0, 1454, 330, 1, 0, 0, 0, 1455, 1456, 5, 103, 0, 0, 1456, 1457, 5, 99, 0, 0, 1457, 1458, 5, 100, 0, 0, 1458, 1459, 5, 40, 0, 0, 1459, 332, 1, 0, 0, 0, 1460, 1461, 5, 108, 0, 0, 1461, 1462, 5, 99, 0, 0, 1462, 1463, 5, 109, 0, 0, 1463, 1464, 5, 40, 0, 0, 1464, 334, 1, 0, 0, 0, 1465, 1466, 5, 98, 0, 0, 1466, 1467, 5, 105, 0, 0, 1467, 1468, 5, 110, 0, 0, 1468, 1469, 5, 111, 0, 0, 1469, 1470, 5, 109, 0, 0, 1470, 1471, 5, 105, 0, 0, 1471, 1472, 5, 97, 0, 0, 1472, 1473, 5, 108, 0, 0, 1473, 1474, 5, 40, 0, 0, 1474, 336, 1, 0, 0, 0, 1475, 1476, 5, 105, 0, 0, 1476, 1477, 5, 118, 0, 0, 1477, 1478, 5, 101, 0, 0, 1478, 1479, 5, 114, 0, 0, 1479, 1480, 5, 115, 0, 0, 1480, 1481, 5, 111, 0, 0, 1481, 1482, 5, 110, 0, 0, 1482, 1483, 5, 40, 0, 0, 1483, 338, 1, 0, 0, 0, 1484, 1485, 5, 97, 0, 0, 1485, 1486, 5, 108, 0, 0, 1486, 1487, 5, 101, 0, 0, 1487, 1488, 5, 112, 0, 0, 1488, 1489, 5, 104, 0, 0, 1489, 1490, 5, 40, 0, 0, 1490, 340, 1, 0, 0, 0, 1491, 1492, 5, 101, 0, 0, 1492, 1493, 5, 114, 0, 0, 1493, 1494, 5, 102, 0, 0, 1494, 1495, 5, 40, 0, 0, 1495, 342, 1, 0, 0, 0, 1496, 1497, 5, 101, 0, 0, 1497, 1498, 5, 114, 0, 0, 1498, 1499, 5, 102, 0, 0, 1499, 1500, 5, 99, 0, 0, 1500, 1501, 5, 40, 0, 0, 1501, 344, 1, 0, 0, 0, 1502, 1503, 5, 101, 0, 0, 1503, 1504, 5, 114, 0, 0, 1504, 1505, 5, 102, 0, 0, 1505, 1506, 5, 105, 0, 0, 1506, 1507, 5, 40, 0, 0, 1507, 346, 1, 0, 0, 0, 1508, 1509, 5, 69, 0, 0, 1509, 1510, 5, 105, 0, 0, 1510, 1511, 5, 40, 0, 0, 1511, 348, 1, 0, 0, 0, 1512, 1513, 5, 108, 0, 0, 1513, 1514, 5, 105, 0, 0, 1514, 1515, 5, 40, 0, 0, 1515, 350, 1, 0, 0, 0, 1516, 1517, 5, 112, 0, 0, 1517, 1518, 5, 111, 0, 0, 1518, 1519, 5, 108, 0, 0, 1519, 1520, 5, 121, 0, 0, 1520, 1521, 5, 103, 0, 0, 1521, 1522, 5, 97, 0, 0, 1522, 1523, 5, 109, 0, 0, 1523, 1524, 5, 109, 0, 0, 1524, 1525, 5, 97, 0, 0, 1525, 1526, 5, 40, 0, 0, 1526, 352, 1, 0, 0, 0, 1527, 1528, 5, 100, 0, 0, 1528, 1529, 5, 105, 0, 0, 1529, 1530, 5, 103, 0, 0, 1530, 1531, 5, 97, 0, 0, 1531, 1532, 5, 109, 0, 0, 1532, 1533, 5, 109, 0, 0, 1533, 1534, 5, 97, 0, 0, 1534, 1535, 5, 40, 0, 0, 1535, 354, 1, 0, 0, 0, 1536, 1537, 5, 83, 0, 0, 1537, 1538, 5, 105, 0, 0, 1538, 1539, 5, 40, 0, 0, 1539, 356, 1, 0, 0, 0, 1540, 1541, 5, 67, 0, 0, 1541, 1542, 5, 105, 0, 0, 1542, 1543, 5, 40, 0, 0, 1543, 358, 1, 0, 0, 0, 1544, 1545, 5, 83, 0, 0, 1545, 1546, 5, 104, 0, 0, 1546, 1547, 5, 105, 0, 0, 1547, 1548, 5, 40, 0, 0, 1548, 360, 1, 0, 0, 0, 1549, 1550, 5, 67, 0, 0, 1550, 1551, 5, 104, 0, 0, 1551, 1552, 5, 105, 0, 0, 1552, 1553, 5, 40, 0, 0, 1553, 362, 1, 0, 0, 0, 1554, 1555, 5, 100, 0, 0, 1555, 1556, 5, 101, 0, 0, 1556, 1557, 5, 116, 0, 0, 1557, 1558, 5, 40, 0, 0, 1558, 364, 1, 0, 0, 0, 1559, 1560, 5, 116, 0, 0, 1560, 1561, 5, 114, 0, 0, 1561, 1562, 5, 97, 0, 0, 1562, 1563, 5, 110, 0, 0, 1563, 1564, 5, 115, 0, 0, 1564, 1565, 5, 112, 0, 0, 1565, 1566, 5, 111, 0, 0, 1566, 1567, 5, 115, 0, 0, 1567, 1568, 5, 101, 0, 0, 1568, 1569, 5, 40, 0, 0, 1569, 366, 1, 0, 0, 0, 1570, 1571, 5, 100, 0, 0, 1571, 1572, 5, 111, 0, 0, 1572, 1573, 5, 116, 0, 0, 1573, 1574, 5, 40, 0, 0, 1574, 368, 1, 0, 0, 0, 1575, 1576, 5, 99, 0, 0, 1576, 1577, 5, 114, 0, 0, 1577, 1578, 5, 111, 0, 0, 1578, 1579, 5, 115, 0, 0, 1579, 1580, 5, 115, 0, 0, 1580, 1581, 5, 40, 0, 0, 1581, 370, 1, 0, 0, 0, 1582, 1583, 5, 114, 0, 0, 1583, 1584, 5, 101, 0, 0, 1584, 1585, 5, 115, 0, 0, 1585, 1586, 5, 117, 0, 0, 1586, 1587, 5, 108, 0, 0, 1587, 1588, 5, 116, 0, 0, 1588, 1589, 5, 97, 0, 0, 1589, 1590, 5, 110, 0, 0, 1590, 1591, 5, 116, 0, 0, 1591, 1592, 5, 40, 0, 0, 1592, 372, 1, 0, 0, 0, 1593, 1594, 5, 99, 0, 0, 1594, 1595, 5, 111, 0, 0, 1595, 1596, 5, 110, 0, 0, 1596, 1597, 5, 106, 0, 0, 1597, 1598, 5, 117, 0, 0, 1598, 1599, 5, 103, 0, 0, 1599, 1600, 5, 97, 0, 0, 1600, 1601, 5, 116, 0, 0, 1601, 1602, 5, 101, 0, 0, 1602, 1603, 5, 40, 0, 0, 1603, 374, 1, 0, 0, 0, 1604, 1605, 5, 99, 0, 0, 1605, 1606, 5, 111, 0, 0, 1606, 1607, 5, 110, 0, 0, 1607, 1608, 5, 106, 0, 0, 1608, 1609, 5, 40, 0, 0, 1609, 376, 1, 0, 0, 0, 1610, 1611, 5, 97, 0, 0, 1611, 1612, 5, 114, 0, 0, 1612, 1613, 5, 103, 0, 0, 1613, 1614, 5, 40, 0, 0, 1614, 378, 1, 0, 0, 0, 1615, 1616, 5, 82, 0, 0, 1616, 1617, 5, 101, 0, 0, 1617, 1618, 5, 40, 0, 0, 1618, 380, 1, 0, 0, 0, 1619, 1620, 5, 73, 0, 0, 1620, 1621, 5, 109, 0, 0, 1621, 1622, 5, 40, 0, 0, 1622, 382, 1, 0, 0, 0, 1623, 1624, 5, 114, 0, 0, 1624, 1625, 5, 101, 0, 0, 1625, 1626, 5, 40, 0, 0, 1626, 384, 1, 0, 0, 0, 1627, 1628, 5, 114, 0, 0, 1628, 1629, 5, 101, 0, 0, 1629, 1630, 5, 97, 0, 0, 1630, 1631, 5, 108, 0, 0, 1631, 1632, 5, 40, 0, 0, 1632, 386, 1, 0, 0, 0, 1633, 1634, 5, 105, 0, 0, 1634, 1635, 5, 109, 0, 0, 1635, 1636, 5, 40, 0, 0, 1636, 388, 1, 0, 0, 0, 1637, 1638, 5, 105, 0, 0, 1638, 1639, 5, 109, 0, 0, 1639, 1640, 5, 97, 0, 0, 1640, 1641, 5, 103, 0, 0, 1641, 1642, 5, 40, 0, 0, 1642, 390, 1, 0, 0, 0, 1643, 1644, 5, 116, 0, 0, 1644, 1645, 5, 114, 0, 0, 1645, 1646, 5, 117, 0, 0, 1646, 1647, 5, 110, 0, 0, 1647, 1648, 5, 99, 0, 0, 1648, 1649, 5, 40, 0, 0, 1649, 392, 1, 0, 0, 0, 1650, 1651, 5, 122, 0, 0, 1651, 1652, 5, 101, 0, 0, 1652, 1653, 5, 116, 0, 0, 1653, 1654, 5, 97, 0, 0, 1654, 1655, 5, 40, 0, 0, 1655, 394, 1, 0, 0, 0, 1656, 1657, 5, 114, 0, 0, 1657, 1658, 5, 105, 0, 0, 1658, 1659, 5, 101, 0, 0, 1659, 1660, 5, 109, 0, 0, 1660, 1661, 5, 97, 0, 0, 1661, 1662, 5, 110, 0, 0, 1662, 1663, 5, 110, 0, 0, 1663, 1664, 5, 122, 0, 0, 1664, 1665, 5, 101, 0, 0, 1665, 1666, 5, 116, 0, 0, 1666, 1667, 5, 97, 0, 0, 1667, 1668, 5, 40, 0, 0, 1668, 396, 1, 0, 0, 0, 1669, 1670, 5, 104, 0, 0, 1670, 1671, 5, 117, 0, 0, 1671, 1672, 5, 114, 0, 0, 1672, 1673, 5, 119, 0, 0, 1673, 1674, 5, 105, 0, 0, 1674, 1675, 5, 116, 0, 0, 1675, 1676, 5, 122, 0, 0, 1676, 1677, 5, 122, 0, 0, 1677, 1678, 5, 101, 0, 0, 1678, 1679, 5, 116, 0, 0, 1679, 1680, 5, 97, 0, 0, 1680, 1681, 5, 40, 0, 0, 1681, 398, 1, 0, 0, 0, 1682, 1683, 5, 108, 0, 0, 1683, 1684, 5, 97, 0, 0, 1684, 1685, 5, 109, 0, 0, 1685, 1686, 5, 98, 0, 0, 1686, 1687, 5, 101, 0, 0, 1687, 1688, 5, 114, 0, 0, 1688, 1689, 5, 116, 0, 0, 1689, 1690, 5, 119, 0, 0, 1690, 1691, 5, 40, 0, 0, 1691, 400, 1, 0, 0, 0, 1692, 1693, 5, 112, 0, 0, 1693, 1694, 5, 114, 0, 0, 1694, 1695, 5, 111, 0, 0, 1695, 1696, 5, 100, 0, 0, 1696, 1697, 5, 117, 0, 0, 1697, 1698, 5, 99, 0, 0, 1698, 1699, 5, 116, 0, 0, 1699, 1700, 5, 108, 0, 0, 1700, 1701, 5, 111, 0, 0, 1701, 1702, 5, 103, 0, 0, 1702, 1703, 5, 40, 0, 0, 1703, 402, 1, 0, 0, 0, 1704, 1705, 5, 109, 0, 0, 1705, 1706, 5, 111, 0, 0, 1706, 1707, 5, 98, 0, 0, 1707, 1708, 5, 105, 0, 0, 1708, 1709, 5, 117, 0, 0, 1709, 1710, 5, 115, 0, 0, 1710, 1711, 5, 40, 0, 0, 1711, 404, 1, 0, 0, 0, 1712, 1713, 5, 109, 0, 0, 1713, 1714, 5, 111, 0, 0, 1714, 1715, 5, 101, 0, 0, 1715, 1716, 5, 98, 0, 0, 1716, 1717, 5, 105, 0, 0, 1717, 1718, 5, 117, 0, 0, 1718, 1719, 5, 115, 0, 0, 1719, 1720, 5, 109, 0, 0, 1720, 1721, 5, 117, 0, 0, 1721, 1722, 5, 40, 0, 0, 1722, 406, 1, 0, 0, 0, 1723, 1724, 5, 100, 0, 0, 1724, 1725, 5, 105, 0, 0, 1725, 1726, 5, 118, 0, 0, 1726, 1727, 5, 105, 0, 0, 1727, 1728, 5, 115, 0, 0, 1728, 1729, 5, 111, 0, 0, 1729, 1730, 5, 114, 0, 0, 1730, 1731, 5, 115, 0, 0, 1731, 1732, 5, 105, 0, 0, 1732, 1733, 5, 103, 0, 0, 1733, 1734, 5, 109, 0, 0, 1734, 1735, 5, 97, 0, 0, 1735, 1736, 5, 40, 0, 0, 1736, 408, 1, 0, 0, 0, 1737, 1738, 5, 112, 0, 0, 1738, 1739, 5, 114, 0, 0, 1739, 1740, 5, 105, 0, 0, 1740, 1741, 5, 109, 0, 0, 1741, 1742, 5, 101, 0, 0, 1742, 1743, 5, 110, 0, 0, 1743, 1744, 5, 117, 0, 0, 1744, 1745, 5, 40, 0, 0, 1745, 410, 1, 0, 0, 0, 1746, 1747, 5, 112, 0, 0, 1747, 1748, 5, 114, 0, 0, 1748, 1749, 5, 105, 0, 0, 1749, 1750, 5, 109, 0, 0, 1750, 1751, 5, 101, 0, 0, 1751, 1752, 5, 111, 0, 0, 1752, 1753, 5, 109, 0, 0, 1753, 1754, 5, 101, 0, 0, 1754, 1755, 5, 103, 0, 0, 1755, 1756, 5, 97, 0, 0, 1756, 1757, 5, 40, 0, 0, 1757, 412, 1, 0, 0, 0, 1758, 1759, 5, 112, 0, 0, 1759, 1760, 5, 114, 0, 0, 1760, 1761, 5, 105, 0, 0, 1761, 1762, 5, 109, 0, 0, 1762, 1763, 5, 101, 0, 0, 1763, 1764, 5, 112, 0, 0, 1764, 1765, 5, 105, 0, 0, 1765, 1766, 5, 40, 0, 0, 1766, 414, 1, 0, 0, 0, 1767, 1768, 5, 104, 0, 0, 1768, 1769, 5, 97, 0, 0, 1769, 1770, 5, 114, 0, 0, 1770, 1771, 5, 109, 0, 0, 1771, 1772, 5, 111, 0, 0, 1772, 1773, 5, 110, 0, 0, 1773, 1774, 5, 105, 0, 0, 1774, 1775, 5, 99, 0, 0, 1775, 1776, 5, 110, 0, 0, 1776, 1777, 5, 117, 0, 0, 1777, 1778, 5, 109, 0, 0, 1778, 1779, 5, 98, 0, 0, 1779, 1780, 5, 101, 0, 0, 1780, 1781, 5, 114, 0, 0, 1781, 1782, 5, 40, 0, 0, 1782, 416, 1, 0, 0, 0, 1783, 1784, 5, 99, 0, 0, 1784, 1785, 5, 97, 0, 0, 1785, 1786, 5, 116, 0, 0, 1786, 1787, 5, 97, 0, 0, 1787, 1788, 5, 108, 0, 0, 1788, 1789, 5, 97, 0, 0, 1789, 1790, 5, 110, 0, 0, 1790, 1791, 5, 110, 0, 0, 1791, 1792, 5, 117, 0, 0, 1792, 1793, 5, 109, 0, 0, 1793, 1794, 5, 98, 0, 0, 1794, 1795, 5, 101, 0, 0, 1795, 1796, 5, 114, 0, 0, 1796, 1797, 5, 40, 0, 0, 1797, 418, 1, 0, 0, 0, 1798, 1799, 5, 109, 0, 0, 1799, 1800, 5, 117, 0, 0, 1800, 1801, 5, 108, 0, 0, 1801, 1802, 5, 116, 0, 0, 1802, 1803, 5, 105, 0, 0, 1803, 1804, 5, 110, 0, 0, 1804, 1805, 5, 111, 0, 0, 1805, 1806, 5, 109, 0, 0, 1806, 1807, 5, 105, 0, 0, 1807, 1808, 5, 97, 0, 0, 1808, 1809, 5, 108, 0, 0, 1809, 1810, 5, 40, 0, 0, 1810, 420, 1, 0, 0, 0, 1811, 1812, 5, 102, 0, 0, 1812, 1813, 5, 97, 0, 0, 1813, 1814, 5, 108, 0, 0, 1814, 1815, 5, 108, 0, 0, 1815, 1816, 5, 105, 0, 0, 1816, 1817, 5, 110, 0, 0, 1817, 1818, 5, 103, 0, 0, 1818, 1819, 5, 102, 0, 0, 1819, 1820, 5, 97, 0, 0, 1820, 1821, 5, 99, 0, 0, 1821, 1822, 5, 116, 0, 0, 1822, 1823, 5, 111, 0, 0, 1823, 1824, 5, 114, 0, 0, 1824, 1825, 5, 105, 0, 0, 1825, 1826, 5, 97, 0, 0, 1826, 1827, 5, 108, 0, 0, 1827, 1828, 5, 40, 0, 0, 1828, 422, 1, 0, 0, 0, 1829, 1830, 5, 102, 0, 0, 1830, 1831, 5, 97, 0, 0, 1831, 1832, 5, 99, 0, 0, 1832, 1833, 5, 116, 0, 0, 1833, 1834, 5, 111, 0, 0, 1834, 1835, 5, 114, 0, 0, 1835, 1836, 5, 105, 0, 0, 1836, 1837, 5, 97, 0, 0, 1837, 1838, 5, 108, 0, 0, 1838, 1839, 5, 112, 0, 0, 1839, 1840, 5, 111, 0, 0, 1840, 1841, 5, 119, 0, 0, 1841, 1842, 5, 101, 0, 0, 1842, 1843, 5, 114, 0, 0, 1843, 1844, 5, 40, 0, 0, 1844, 424, 1, 0, 0, 0, 1845, 1846, 5, 114, 0, 0, 1846, 1847, 5, 105, 0, 0, 1847, 1848, 5, 115, 0, 0, 1848, 1849, 5, 105, 0, 0, 1849, 1850, 5, 110, 0, 0, 1850, 1851, 5, 103, 0, 0, 1851, 1852, 5, 102, 0, 0, 1852, 1853, 5, 97, 0, 0, 1853, 1854, 5, 99, 0, 0, 1854, 1855, 5, 116, 0, 0, 1855, 1856, 5, 111, 0, 0, 1856, 1857, 5, 114, 0, 0, 1857, 1858, 5, 105, 0, 0, 1858, 1859, 5, 97, 0, 0, 1859, 1860, 5, 108, 0, 0, 1860, 1861, 5, 40, 0, 0, 1861, 426, 1, 0, 0, 0, 1862, 1863, 5, 102, 0, 0, 1863, 1864, 5, 111, 0, 0, 1864, 1865, 5, 114, 0, 0, 1865, 1866, 5, 119, 0, 0, 1866, 1867, 5, 97, 0, 0, 1867, 1868, 5, 114, 0, 0, 1868, 1869, 5, 100, 0, 0, 1869, 1870, 5, 100, 0, 0, 1870, 1871, 5, 105, 0, 0, 1871, 1872, 5, 102, 0, 0, 1872, 1873, 5, 102, 0, 0, 1873, 1874, 5, 101, 0, 0, 1874, 1875, 5, 114, 0, 0, 1875, 1876, 5, 101, 0, 0, 1876, 1877, 5, 110, 0, 0, 1877, 1878, 5, 99, 0, 0, 1878, 1879, 5, 101, 0, 0, 1879, 1880, 5, 40, 0, 0, 1880, 428, 1, 0, 0, 0, 1881, 1882, 5, 108, 0, 0, 1882, 1883, 5, 97, 0, 0, 1883, 1884, 5, 112, 0, 0, 1884, 1885, 5, 108, 0, 0, 1885, 1886, 5, 97, 0, 0, 1886, 1887, 5, 99, 0, 0, 1887, 1888, 5, 105, 0, 0, 1888, 1889, 5, 97, 0, 0, 1889, 1890, 5, 110, 0, 0, 1890, 1891, 5, 40, 0, 0, 1891, 430, 1, 0, 0, 0, 1892, 1893, 5, 106, 0, 0, 1893, 1894, 5, 97, 0, 0, 1894, 1895, 5, 99, 0, 0, 1895, 1896, 5, 111, 0, 0, 1896, 1897, 5, 98, 0, 0, 1897, 1898, 5, 105, 0, 0, 1898, 1899, 5, 97, 0, 0, 1899, 1900, 5, 110, 0, 0, 1900, 1901, 5, 40, 0, 0, 1901, 432, 1, 0, 0, 0, 1902, 1903, 5, 104, 0, 0, 1903, 1904, 5, 101, 0, 0, 1904, 1905, 5, 115, 0, 0, 1905, 1906, 5, 115, 0, 0, 1906, 1907, 5, 105, 0, 0, 1907, 1908, 5, 97, 0, 0, 1908, 1909, 5, 110, 0, 0, 1909, 1910, 5, 40, 0, 0, 1910, 434, 1, 0, 0, 0, 1911, 1912, 5, 104, 0, 0, 1912, 1913, 5, 101, 0, 0, 1913, 1914, 5, 97, 0, 0, 1914, 1915, 5, 118, 0, 0, 1915, 1916, 5, 105, 0, 0, 1916, 1917, 5, 115, 0, 0, 1917, 1918, 5, 105, 0, 0, 1918, 1919, 5, 100, 0, 0, 1919, 1920, 5, 101, 0, 0, 1920, 1921, 5, 40, 0, 0, 1921, 436, 1, 0, 0, 0, 1922, 1923, 5, 117, 0, 0, 1923, 1924, 5, 110, 0, 0, 1924, 1925, 5, 105, 0, 0, 1925, 1926, 5, 116, 0, 0, 1926, 1927, 5, 115, 0, 0, 1927, 1928, 5, 116, 0, 0, 1928, 1929, 5, 101, 0, 0, 1929, 1930, 5, 112, 0, 0, 1930, 1931, 5, 40, 0, 0, 1931, 438, 1, 0, 0, 0, 1932, 1933, 5, 105, 0, 0, 1933, 1934, 5, 115, 0, 0, 1934, 1935, 5, 112, 0, 0, 1935, 1936, 5, 114, 0, 0, 1936, 1937, 5, 105, 0, 0, 1937, 1938, 5, 109, 0, 0, 1938, 1939, 5, 101, 0, 0, 1939, 1940, 5, 40, 0, 0, 1940, 440, 1, 0, 0, 0, 1941, 1942, 5, 112, 0, 0, 1942, 1943, 5, 111, 0, 0, 1943, 1944, 5, 99, 0, 0, 1944, 1945, 5, 104, 0, 0, 1945, 1946, 5, 104, 0, 0, 1946, 1947, 5, 97, 0, 0, 1947, 1948, 5, 109, 0, 0, 1948, 1949, 5, 109, 0, 0, 1949, 1950, 5, 101, 0, 0, 1950, 1951, 5, 114, 0, 0, 1951, 1952, 5, 40, 0, 0, 1952, 442, 1, 0, 0, 0, 1953, 1954, 5, 100, 0, 0, 1954, 1955, 5, 111, 0, 0, 1955, 1956, 5, 117, 0, 0, 1956, 1957, 5, 98, 0, 0, 1957, 1958, 5, 108, 0, 0, 1958, 1959, 5, 101, 0, 0, 1959, 1960, 5, 102, 0, 0, 1960, 1961, 5, 97, 0, 0, 1961, 1962, 5, 99, 0, 0, 1962, 1963, 5, 116, 0, 0, 1963, 1964, 5, 111, 0, 0, 1964, 1965, 5, 114, 0, 0, 1965, 1966, 5, 105, 0, 0, 1966, 1967, 5, 97, 0, 0, 1967, 1968, 5, 108, 0, 0, 1968, 1969, 5, 40, 0, 0, 1969, 444, 1, 0, 0, 0, 1970, 1971, 5, 102, 0, 0, 1971, 1972, 5, 97, 0, 0, 1972, 1973, 5, 99, 0, 0, 1973, 1974, 5, 116, 0, 0, 1974, 1975, 5, 111, 0, 0, 1975, 1976, 5, 114, 0, 0, 1976, 1977, 5, 105, 0, 0, 1977, 1978, 5, 97, 0, 0, 1978, 1979, 5, 108, 0, 0, 1979, 1980, 5, 50, 0, 0, 1980, 1981, 5, 40, 0, 0, 1981, 446, 1, 0, 0, 0, 1982, 1983, 5, 102, 0, 0, 1983, 1984, 5, 114, 0, 0, 1984, 1985, 5, 97, 0, 0, 1985, 1986, 5, 99, 0, 0, 1986, 1987, 5, 116, 0, 0, 1987, 1988, 5, 105, 0, 0, 1988, 1989, 5, 111, 0, 0, 1989, 1990, 5, 110, 0, 0, 1990, 1991, 5, 97, 0, 0, 1991, 1992, 5, 108, 0, 0, 1992, 1993, 5, 112, 0, 0, 1993, 1994, 5, 97, 0, 0, 1994, 1995, 5, 114, 0, 0, 1995, 1996, 5, 116, 0, 0, 1996, 1997, 5, 40, 0, 0, 1997, 448, 1, 0, 0, 0, 1998, 1999, 5, 113, 0, 0, 1999, 2000, 5, 117, 0, 0, 2000, 2001, 5, 111, 0, 0, 2001, 2002, 5, 116, 0, 0, 2002, 2003, 5, 105, 0, 0, 2003, 2004, 5, 101, 0, 0, 2004, 2005, 5, 110, 0, 0, 2005, 2006, 5, 116, 0, 0, 2006, 2007, 5, 40, 0, 0, 2007, 450, 1, 0, 0, 0, 2008, 2009, 5, 100, 0, 0, 2009, 2010, 5, 111, 0, 0, 2010, 2011, 5, 109, 0, 0, 2011, 2012, 5, 97, 0, 0, 2012, 2013, 5, 105, 0, 0, 2013, 2014, 5, 110, 0, 0, 2014, 2015, 5, 40, 0, 0, 2015, 452, 1, 0, 0, 0, 2016, 2017, 5, 112, 0, 0, 2017, 2018, 5, 105, 0, 0, 2018, 2019, 5, 101, 0, 0, 2019, 2020, 5, 99, 0, 0, 2020, 2021, 5, 101, 0, 0, 2021, 2022, 5, 119, 0, 0, 2022, 2023, 5, 105, 0, 0, 2023, 2024, 5, 115, 0, 0, 2024, 2025, 5, 101, 0, 0, 2025, 2026, 5, 40, 0, 0, 2026, 454, 1, 0, 0, 0, 2027, 2028, 5, 97, 0, 0, 2028, 2029, 5, 112, 0, 0, 2029, 2030, 5, 112, 0, 0, 2030, 2031, 5, 108, 0, 0, 2031, 2032, 5, 121, 0, 0, 2032, 2033, 5, 40, 0, 0, 2033, 456, 1, 0, 0, 0, 2034, 2035, 5, 108, 0, 0, 2035, 2036, 5, 97, 0, 0, 2036, 2037, 5, 109, 0, 0, 2037, 2038, 5, 98, 0, 0, 2038, 2039, 5, 100, 0, 0, 2039, 2040, 5, 97, 0, 0, 2040, 2041, 5, 40, 0, 0, 2041, 458, 1, 0, 0, 0, 2042, 2044, 5, 13, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2047, 5, 10, 0, 0, 2046, 2043, 1, 0, 0, 0, 2047, 2048, 1, 0, 0, 0, 2048, 2046, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2050, 1, 0, 0, 0, 2050, 2051, 6, 229, 0, 0, 2051, 460, 1, 0, 0, 0, 2052, 2054, 7, 0, 0, 0, 2053, 2055, 7, 1, 0, 0, 2054, 2053, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2057, 1, 0, 0, 0, 2056, 2058, 2, 48, 57, 0, 2057, 2056, 1, 0, 0, 0, 2058, 2059, 1, 0, 0, 0, 2059, 2057, 1, 0, 0, 0, 2059, 2060, 1, 0, 0, 0, 2060, 462, 1, 0, 0, 0, 2061, 2063, 2, 48, 57, 0, 2062, 2061, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2062, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2066, 1, 0, 0, 0, 2066, 2070, 5, 46, 0, 0, 2067, 2069, 2, 48, 57, 0, 2068, 2067, 1, 0, 0, 0, 2069, 2072, 1, 0, 0, 0, 2070, 2068, 1, 0, 0, 0, 2070, 2071, 1, 0, 0, 0, 2071, 2074, 1, 0, 0, 0, 2072, 2070, 1, 0, 0, 0, 2073, 2075, 3, 461, 230, 0, 2074, 2073, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2077, 1, 0, 0, 0, 2076, 2078, 5, 105, 0, 0, 2077, 2076, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 2095, 1, 0, 0, 0, 2079, 2081, 5, 46, 0, 0, 2080, 2079, 1, 0, 0, 0, 2080, 2081, 1, 0, 0, 0, 2081, 2083, 1, 0, 0, 0, 2082, 2084, 2, 48, 57, 0, 2083, 2082, 1, 0, 0, 0, 2084, 2085, 1, 0, 0, 0, 2085, 2083, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2088, 1, 0, 0, 0, 2087, 2089, 3, 461, 230, 0, 2088, 2087, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2091, 1, 0, 0, 0, 2090, 2092, 5, 105, 0, 0, 2091, 2090, 1, 0, 0, 0, 2091, 2092, 1, 0, 0, 0, 2092, 2095, 1, 0, 0, 0, 2093, 2095, 5, 105, 0, 0, 2094, 2062, 1, 0, 0, 0, 2094, 2080, 1, 0, 0, 0, 2094, 2093, 1, 0, 0, 0, 2095, 464, 1, 0, 0, 0, 2096, 2097, 5, 67, 0, 0, 2097, 2115, 5, 67, 0, 0, 2098, 2099, 5, 82, 0, 0, 2099, 2115, 5, 82, 0, 0, 2100, 2101, 5, 81, 0, 0, 2101, 2115, 5, 81, 0, 0, 2102, 2103, 5, 90, 0, 0, 2103, 2115, 5, 90, 0, 0, 2104, 2105, 5, 66, 0, 0, 2105, 2115, 5, 66, 0, 0, 2106, 2107, 5, 90, 0, 0, 2107, 2108, 5, 90, 0, 0, 2108, 2115, 5, 42, 0, 0, 2109, 2110, 5, 90, 0, 0, 2110, 2111, 5, 90, 0, 0, 2111, 2115, 5, 43, 0, 0, 2112, 2113, 5, 80, 0, 0, 2113, 2115, 5, 80, 0, 0, 2114, 2096, 1, 0, 0, 0, 2114, 2098, 1, 0, 0, 0, 2114, 2100, 1, 0, 0, 0, 2114, 2102, 1, 0, 0, 0, 2114, 2104, 1, 0, 0, 0, 2114, 2106, 1, 0, 0, 0, 2114, 2109, 1, 0, 0, 0, 2114, 2112, 1, 0, 0, 0, 2115, 466, 1, 0, 0, 0, 2116, 2117, 5, 116, 0, 0, 2117, 2118, 5, 114, 0, 0, 2118, 2119, 5, 117, 0, 0, 2119, 2135, 5, 101, 0, 0, 2120, 2121, 5, 84, 0, 0, 2121, 2122, 5, 114, 0, 0, 2122, 2123, 5, 117, 0, 0, 2123, 2135, 5, 101, 0, 0, 2124, 2125, 5, 102, 0, 0, 2125, 2126, 5, 97, 0, 0, 2126, 2127, 5, 108, 0, 0, 2127, 2128, 5, 115, 0, 0, 2128, 2135, 5, 101, 0, 0, 2129, 2130, 5, 70, 0, 0, 2130, 2131, 5, 97, 0, 0, 2131, 2132, 5, 108, 0, 0, 2132, 2133, 5, 115, 0, 0, 2133, 2135, 5, 101, 0, 0, 2134, 2116, 1, 0, 0, 0, 2134, 2120, 1, 0, 0, 0, 2134, 2124, 1, 0, 0, 0, 2134, 2129, 1, 0, 0, 0, 2135, 468, 1, 0, 0, 0, 2136, 2137, 5, 78, 0, 0, 2137, 2138, 5, 97, 0, 0, 2138, 2139, 5, 78, 0, 0, 2139, 470, 1, 0, 0, 0, 2140, 2142, 7, 2, 0, 0, 2141, 2140, 1, 0, 0, 0, 2142, 2143, 1, 0, 0, 0, 2143, 2141, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2153, 1, 0, 0, 0, 2145, 2147, 5, 95, 0, 0, 2146, 2148, 7, 3, 0, 0, 2147, 2146, 1, 0, 0, 0, 2148, 2149, 1, 0, 0, 0, 2149, 2147, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2152, 1, 0, 0, 0, 2151, 2145, 1, 0, 0, 0, 2152, 2155, 1, 0, 0, 0, 2153, 2151, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 472, 1, 0, 0, 0, 2155, 2153, 1, 0, 0, 0, 2156, 2157, 5, 47, 0, 0, 2157, 2158, 5, 47, 0, 0, 2158, 2162, 1, 0, 0, 0, 2159, 2161, 8, 4, 0, 0, 2160, 2159, 1, 0, 0, 0, 2161, 2164, 1, 0, 0, 0, 2162, 2160, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2169, 1, 0, 0, 0, 2164, 2162, 1, 0, 0, 0, 2165, 2167, 5, 13, 0, 0, 2166, 2165, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2170, 5, 10, 0, 0, 2169, 2166, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2183, 1, 0, 0, 0, 2171, 2172, 5, 47, 0, 0, 2172, 2173, 5, 42, 0, 0, 2173, 2177, 1, 0, 0, 0, 2174, 2176, 9, 0, 0, 0, 2175, 2174, 1, 0, 0, 0, 2176, 2179, 1, 0, 0, 0, 2177, 2178, 1, 0, 0, 0, 2177, 2175, 1, 0, 0, 0, 2178, 2180, 1, 0, 0, 0, 2179, 2177, 1, 0, 0, 0, 2180, 2181, 5, 42, 0, 0, 2181, 2183, 5, 47, 0, 0, 2182, 2156, 1, 0, 0, 0, 2182, 2171, 1, 0, 0, 0, 2183, 2184, 1, 0, 0, 0, 2184, 2185, 6, 236, 0, 0, 2185, 474, 1, 0, 0, 0, 2186, 2188, 7, 5, 0, 0, 2187, 2186, 1, 0, 0, 0, 2188, 2189, 1, 0, 0, 0, 2189, 2187, 1, 0, 0, 0, 2189, 2190, 1, 0, 0, 0, 2190, 2191, 1, 0, 0, 0, 2191, 2192, 6, 237, 0, 0, 2192, 476, 1, 0, 0, 0, 25, 0, 2043, 2048, 2054, 2059, 2064, 2070, 2074, 2077, 2080, 2085, 2088, 2091, 2094, 2114, 2134, 2143, 2149, 2153, 2162, 2166, 2169, 2177, 2182, 2189, 1, 6, 0, 0] \ No newline at end of file diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.tokens b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.tokens index 23ae43fa3..62bf831c1 100644 --- a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.tokens +++ b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.tokens @@ -225,239 +225,243 @@ T__223=224 T__224=225 T__225=226 T__226=227 -NEWLINE=228 -NUMBER=229 -SPECIALSET=230 -BOOLEAN=231 -NAN=232 -VARIABLE=233 -COMMENT=234 -WS=235 +T__227=228 +T__228=229 +NEWLINE=230 +NUMBER=231 +SPECIALSET=232 +BOOLEAN=233 +NAN=234 +VARIABLE=235 +COMMENT=236 +WS=237 '!'=1 -'^'=2 -'-'=3 -'+'=4 -'*'=5 -'...'=6 -'…'=7 -'/'=8 -'mod'=9 -'intersect'=10 -'/\\'=11 -'unite'=12 -'\\/'=13 -'setsubtract'=14 -'\\'=15 -'in'=16 -'subset'=17 -'⊆'=18 -'superset'=19 -'⊇'=20 -'divides'=21 -'|'=22 -'>='=23 -'<='=24 -'>'=25 -'<'=26 -'='=27 -'<>'=28 -'≡'=29 -'('=30 -')'=31 -'not'=32 -'and'=33 -'&'=34 -'xor'=35 -'or'=36 -'implies'=37 -'->'=38 -'provided'=39 -'=>'=40 -':'=41 -'forall'=42 -'∀'=43 -'exists!'=44 -'∃!'=45 -'exists'=46 -'∃'=47 -','=48 -';'=49 -'+oo'=50 -'-oo'=51 -'(|'=52 -'|)'=53 -'#'=54 -'['=55 -']T'=56 -']'=57 -'{'=58 -'}'=59 -'log('=60 -'log10('=61 -'log2('=62 -'pow('=63 -'sqrt('=64 -'cbrt('=65 -'sqr('=66 -'ln('=67 -'exp('=68 -'sin('=69 -'cos('=70 -'tan('=71 -'cotan('=72 -'cot('=73 -'sec('=74 -'cosec('=75 -'csc('=76 -'arcsin('=77 -'arccos('=78 -'arctan('=79 -'arccotan('=80 -'arcsec('=81 -'arccosec('=82 -'arccsc('=83 -'acsc('=84 -'asin('=85 -'acos('=86 -'atan('=87 -'acotan('=88 -'asec('=89 -'acosec('=90 -'acot('=91 -'arccot('=92 -'sinh('=93 -'sh('=94 -'cosh('=95 -'ch('=96 -'tanh('=97 -'th('=98 -'cotanh('=99 -'coth('=100 -'cth('=101 -'sech('=102 -'sch('=103 -'cosech('=104 -'csch('=105 -'asinh('=106 -'arsinh('=107 -'arsh('=108 -'arcsinh('=109 -'acosh('=110 -'arcosh('=111 -'arch('=112 -'arccosh('=113 -'atanh('=114 -'artanh('=115 -'arth('=116 -'arctanh('=117 -'acoth('=118 -'arcoth('=119 -'acotanh('=120 -'arcotanh('=121 -'arcth('=122 -'arccotanh('=123 -'asech('=124 -'arsech('=125 -'arsch('=126 -'arcsech('=127 -'acosech('=128 -'arcosech('=129 -'arcsch('=130 -'arccosech('=131 -'acsch('=132 -'factorial('=133 -'gamma('=134 -'derivative('=135 -'integral('=136 -'limit('=137 -'limitleft('=138 -'limitright('=139 -'sum('=140 -'product('=141 -'signum('=142 -'sgn('=143 -'sign('=144 -'abs('=145 -'phi('=146 -'prime('=147 -'valuation('=148 -'card('=149 -'powerset('=150 -'union('=151 -'intersection('=152 -'complement('=153 -'image('=154 -'preimage('=155 -'floor('=156 -'ceil('=157 -'ceiling('=158 -'round('=159 -'min('=160 -'max('=161 -'argmax('=162 -'argmin('=163 -'gcd('=164 -'lcm('=165 -'binomial('=166 -'iverson('=167 -'aleph('=168 -'erf('=169 -'erfc('=170 -'erfi('=171 -'Ei('=172 -'li('=173 -'polygamma('=174 -'digamma('=175 -'Si('=176 -'Ci('=177 -'Shi('=178 -'Chi('=179 -'det('=180 -'transpose('=181 -'dot('=182 -'cross('=183 -'resultant('=184 -'conjugate('=185 -'conj('=186 -'arg('=187 -'Re('=188 -'Im('=189 -'re('=190 -'real('=191 -'im('=192 -'imag('=193 -'trunc('=194 -'zeta('=195 -'riemannzeta('=196 -'hurwitzzeta('=197 -'lambertw('=198 -'productlog('=199 -'mobius('=200 -'moebiusmu('=201 -'divisorsigma('=202 -'primenu('=203 -'primeomega('=204 -'primepi('=205 -'harmonicnumber('=206 -'catalannumber('=207 -'multinomial('=208 -'fallingfactorial('=209 -'factorialpower('=210 -'risingfactorial('=211 -'forwarddifference('=212 -'laplacian('=213 -'jacobian('=214 -'hessian('=215 -'heaviside('=216 -'unitstep('=217 -'isprime('=218 -'pochhammer('=219 -'doublefactorial('=220 -'factorial2('=221 -'fractionalpart('=222 -'quotient('=223 -'domain('=224 -'piecewise('=225 -'apply('=226 -'lambda('=227 -'NaN'=232 +'!!'=2 +'!!!'=3 +'^'=4 +'-'=5 +'+'=6 +'*'=7 +'...'=8 +'…'=9 +'/'=10 +'mod'=11 +'intersect'=12 +'/\\'=13 +'unite'=14 +'\\/'=15 +'setsubtract'=16 +'\\'=17 +'in'=18 +'subset'=19 +'⊆'=20 +'superset'=21 +'⊇'=22 +'divides'=23 +'|'=24 +'>='=25 +'<='=26 +'>'=27 +'<'=28 +'='=29 +'<>'=30 +'≡'=31 +'('=32 +')'=33 +'not'=34 +'and'=35 +'&'=36 +'xor'=37 +'or'=38 +'implies'=39 +'->'=40 +'provided'=41 +'=>'=42 +':'=43 +'forall'=44 +'∀'=45 +'exists!'=46 +'∃!'=47 +'exists'=48 +'∃'=49 +','=50 +';'=51 +'+oo'=52 +'-oo'=53 +'(|'=54 +'|)'=55 +'#'=56 +'['=57 +']T'=58 +']'=59 +'{'=60 +'}'=61 +'log('=62 +'log10('=63 +'log2('=64 +'pow('=65 +'sqrt('=66 +'cbrt('=67 +'sqr('=68 +'ln('=69 +'exp('=70 +'sin('=71 +'cos('=72 +'tan('=73 +'cotan('=74 +'cot('=75 +'sec('=76 +'cosec('=77 +'csc('=78 +'arcsin('=79 +'arccos('=80 +'arctan('=81 +'arccotan('=82 +'arcsec('=83 +'arccosec('=84 +'arccsc('=85 +'acsc('=86 +'asin('=87 +'acos('=88 +'atan('=89 +'acotan('=90 +'asec('=91 +'acosec('=92 +'acot('=93 +'arccot('=94 +'sinh('=95 +'sh('=96 +'cosh('=97 +'ch('=98 +'tanh('=99 +'th('=100 +'cotanh('=101 +'coth('=102 +'cth('=103 +'sech('=104 +'sch('=105 +'cosech('=106 +'csch('=107 +'asinh('=108 +'arsinh('=109 +'arsh('=110 +'arcsinh('=111 +'acosh('=112 +'arcosh('=113 +'arch('=114 +'arccosh('=115 +'atanh('=116 +'artanh('=117 +'arth('=118 +'arctanh('=119 +'acoth('=120 +'arcoth('=121 +'acotanh('=122 +'arcotanh('=123 +'arcth('=124 +'arccotanh('=125 +'asech('=126 +'arsech('=127 +'arsch('=128 +'arcsech('=129 +'acosech('=130 +'arcosech('=131 +'arcsch('=132 +'arccosech('=133 +'acsch('=134 +'factorial('=135 +'gamma('=136 +'derivative('=137 +'integral('=138 +'limit('=139 +'limitleft('=140 +'limitright('=141 +'sum('=142 +'product('=143 +'signum('=144 +'sgn('=145 +'sign('=146 +'abs('=147 +'phi('=148 +'prime('=149 +'valuation('=150 +'card('=151 +'powerset('=152 +'union('=153 +'intersection('=154 +'complement('=155 +'image('=156 +'preimage('=157 +'floor('=158 +'ceil('=159 +'ceiling('=160 +'round('=161 +'min('=162 +'max('=163 +'argmax('=164 +'argmin('=165 +'gcd('=166 +'lcm('=167 +'binomial('=168 +'iverson('=169 +'aleph('=170 +'erf('=171 +'erfc('=172 +'erfi('=173 +'Ei('=174 +'li('=175 +'polygamma('=176 +'digamma('=177 +'Si('=178 +'Ci('=179 +'Shi('=180 +'Chi('=181 +'det('=182 +'transpose('=183 +'dot('=184 +'cross('=185 +'resultant('=186 +'conjugate('=187 +'conj('=188 +'arg('=189 +'Re('=190 +'Im('=191 +'re('=192 +'real('=193 +'im('=194 +'imag('=195 +'trunc('=196 +'zeta('=197 +'riemannzeta('=198 +'hurwitzzeta('=199 +'lambertw('=200 +'productlog('=201 +'mobius('=202 +'moebiusmu('=203 +'divisorsigma('=204 +'primenu('=205 +'primeomega('=206 +'primepi('=207 +'harmonicnumber('=208 +'catalannumber('=209 +'multinomial('=210 +'fallingfactorial('=211 +'factorialpower('=212 +'risingfactorial('=213 +'forwarddifference('=214 +'laplacian('=215 +'jacobian('=216 +'hessian('=217 +'heaviside('=218 +'unitstep('=219 +'isprime('=220 +'pochhammer('=221 +'doublefactorial('=222 +'factorial2('=223 +'fractionalpart('=224 +'quotient('=225 +'domain('=226 +'piecewise('=227 +'apply('=228 +'lambda('=229 +'NaN'=234 diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMathParser.cs b/Sources/AngouriMath/Core/Antlr/AngouriMathParser.cs index dd3867a07..8a78f9292 100644 --- a/Sources/AngouriMath/Core/Antlr/AngouriMathParser.cs +++ b/Sources/AngouriMath/Core/Antlr/AngouriMathParser.cs @@ -81,8 +81,8 @@ public const int T__209=210, T__210=211, T__211=212, T__212=213, T__213=214, T__214=215, T__215=216, T__216=217, T__217=218, T__218=219, T__219=220, T__220=221, T__221=222, T__222=223, T__223=224, T__224=225, T__225=226, T__226=227, - NEWLINE=228, NUMBER=229, SPECIALSET=230, BOOLEAN=231, NAN=232, VARIABLE=233, - COMMENT=234, WS=235; + T__227=228, T__228=229, NEWLINE=230, NUMBER=231, SPECIALSET=232, BOOLEAN=233, + NAN=234, VARIABLE=235, COMMENT=236, WS=237; public const int RULE_factorial_expression = 0, RULE_power_list = 1, RULE_power_expression = 2, RULE_unary_expression = 3, RULE_mult_expression = 4, RULE_sum_expression = 5, @@ -104,8 +104,8 @@ public const int }; private static readonly string[] _LiteralNames = { - null, "'!'", "'^'", "'-'", "'+'", "'*'", "'...'", "'\\u2026'", "'/'", - "'mod'", "'intersect'", "'/\\'", "'unite'", "'\\/'", "'setsubtract'", + null, "'!'", "'!!'", "'!!!'", "'^'", "'-'", "'+'", "'*'", "'...'", "'\\u2026'", + "'/'", "'mod'", "'intersect'", "'/\\'", "'unite'", "'\\/'", "'setsubtract'", "'\\'", "'in'", "'subset'", "'\\u2286'", "'superset'", "'\\u2287'", "'divides'", "'|'", "'>='", "'<='", "'>'", "'<'", "'='", "'<>'", "'\\u2261'", "'('", "')'", "'not'", "'and'", "'&'", "'xor'", "'or'", "'implies'", "'->'", @@ -162,8 +162,8 @@ public const int null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - "NEWLINE", "NUMBER", "SPECIALSET", "BOOLEAN", "NAN", "VARIABLE", "COMMENT", - "WS" + null, null, "NEWLINE", "NUMBER", "SPECIALSET", "BOOLEAN", "NAN", "VARIABLE", + "COMMENT", "WS" }; public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); @@ -252,7 +252,7 @@ public Factorial_expressionContext factorial_expression() { Factorial_expressionContext _localctx = new Factorial_expressionContext(Context, State); EnterRule(_localctx, 0, RULE_factorial_expression); try { - State = 59; + State = 67; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,0,Context) ) { case 1: @@ -269,6 +269,26 @@ public Factorial_expressionContext factorial_expression() { EnterOuterAlt(_localctx, 2); { State = 56; + _localctx.p = atom(); + State = 57; + Match(T__1); + _localctx.value = MathS.DoubleFactorial(_localctx.p.value); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 60; + _localctx.p = atom(); + State = 61; + Match(T__2); + throw new UnrecognizedFunctionParseException("n!!! is the triple factorial, which AngouriMath does not have; write (n!!)! for the factorial of a double factorial"); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 64; _localctx.p = atom(); _localctx.value = _localctx.p.value; } @@ -326,13 +346,13 @@ public Power_listContext power_list() { _localctx.value = new(); try { int _alt; - State = 77; + State = 85; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,3,Context) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 65; + State = 73; ErrorHandler.Sync(this); _alt = 1; do { @@ -340,9 +360,9 @@ public Power_listContext power_list() { case 1: { { - State = 61; - Match(T__1); - State = 62; + State = 69; + Match(T__3); + State = 70; _localctx._factorial_expression = factorial_expression(); _localctx.value.Add(_localctx._factorial_expression.value); } @@ -351,7 +371,7 @@ public Power_listContext power_list() { default: throw new NoViableAltException(this); } - State = 67; + State = 75; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,1,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); @@ -360,7 +380,7 @@ public Power_listContext power_list() { case 2: EnterOuterAlt(_localctx, 2); { - State = 73; + State = 81; ErrorHandler.Sync(this); _alt = 1; do { @@ -368,9 +388,9 @@ public Power_listContext power_list() { case 1: { { - State = 69; - Match(T__1); - State = 70; + State = 77; + Match(T__3); + State = 78; _localctx._unary_expression = unary_expression(); _localctx.value.Add(_localctx._unary_expression.value); } @@ -379,7 +399,7 @@ public Power_listContext power_list() { default: throw new NoViableAltException(this); } - State = 75; + State = 83; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,2,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); @@ -432,15 +452,15 @@ public Power_expressionContext power_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 79; + State = 87; _localctx._factorial_expression = factorial_expression(); _localctx.value = _localctx._factorial_expression.value; - State = 84; + State = 92; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,4,Context) ) { case 1: { - State = 81; + State = 89; _localctx._power_list = power_list(); _localctx.value = _localctx._power_list.value @@ -496,29 +516,29 @@ public Unary_expressionContext unary_expression() { Unary_expressionContext _localctx = new Unary_expressionContext(Context, State); EnterRule(_localctx, 6, RULE_unary_expression); try { - State = 109; + State = 117; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,7,Context) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 94; + State = 102; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__2: + case T__4: { - State = 86; - Match(T__2); - State = 87; + State = 94; + Match(T__4); + State = 95; _localctx.p = power_expression(); _localctx.value = _localctx.p.value is Number num ? -num : -_localctx.p.value; } break; - case T__3: + case T__5: { - State = 90; - Match(T__3); - State = 91; + State = 98; + Match(T__5); + State = 99; _localctx.p = power_expression(); _localctx.value = _localctx.p.value; } @@ -531,23 +551,23 @@ public Unary_expressionContext unary_expression() { case 2: EnterOuterAlt(_localctx, 2); { - State = 104; + State = 112; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__2: + case T__4: { - State = 96; - Match(T__2); - State = 97; + State = 104; + Match(T__4); + State = 105; _localctx.u = unary_expression(); _localctx.value = -_localctx.u.value; } break; - case T__3: + case T__5: { - State = 100; - Match(T__3); - State = 101; + State = 108; + Match(T__5); + State = 109; _localctx.u = unary_expression(); _localctx.value = _localctx.u.value; } @@ -560,7 +580,7 @@ public Unary_expressionContext unary_expression() { case 3: EnterOuterAlt(_localctx, 3); { - State = 106; + State = 114; _localctx.p = power_expression(); _localctx.value = _localctx.p.value; } @@ -614,30 +634,30 @@ public Mult_expressionContext mult_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 111; + State = 119; _localctx.u1 = unary_expression(); _localctx.value = _localctx.u1.value; - State = 131; + State = 139; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 800L) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3200L) != 0)) { { - State = 129; + State = 137; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__4: + case T__6: { - State = 113; - Match(T__4); - State = 119; + State = 121; + Match(T__6); + State = 127; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__5: - case T__6: + case T__7: + case T__8: { - State = 114; + State = 122; _la = TokenStream.LA(1); - if ( !(_la==T__5 || _la==T__6) ) { + if ( !(_la==T__7 || _la==T__8) ) { ErrorHandler.RecoverInline(this); } else { @@ -647,17 +667,15 @@ public Mult_expressionContext mult_expression() { if (beforeDots is not null) throw new InvalidArgumentParseException("A product written with dots has one ... in it"); beforeDots = _localctx.value; } break; - case T__2: - case T__3: - case T__29: - case T__49: - case T__50: + case T__4: + case T__5: + case T__31: case T__51: + case T__52: case T__53: - case T__54: - case T__57: + case T__55: + case T__56: case T__59: - case T__60: case T__61: case T__62: case T__63: @@ -824,13 +842,15 @@ public Mult_expressionContext mult_expression() { case T__224: case T__225: case T__226: + case T__227: + case T__228: case NUMBER: case SPECIALSET: case BOOLEAN: case NAN: case VARIABLE: { - State = 116; + State = 124; _localctx.u2 = unary_expression(); if (beforeDots is null) _localctx.value = _localctx.value * _localctx.u2.value; else if (afterDots is null) afterDots = _localctx.u2.value; else throw new InvalidArgumentParseException("A product written with dots ends with the one factor after them, as 1 * 2 * ... * n"); } @@ -840,20 +860,20 @@ public Mult_expressionContext mult_expression() { } } break; - case T__7: + case T__9: { - State = 121; - Match(T__7); - State = 122; + State = 129; + Match(T__9); + State = 130; _localctx.u2 = unary_expression(); _localctx.value = _localctx.value / _localctx.u2.value; mixed = true; } break; - case T__8: + case T__10: { - State = 125; - Match(T__8); - State = 126; + State = 133; + Match(T__10); + State = 134; _localctx.u2 = unary_expression(); _localctx.value = _localctx.value % _localctx.u2.value; mixed = true; } @@ -862,7 +882,7 @@ public Mult_expressionContext mult_expression() { throw new NoViableAltException(this); } } - State = 133; + State = 141; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -916,30 +936,30 @@ public Sum_expressionContext sum_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 136; + State = 144; _localctx.m1 = mult_expression(); _localctx.value = _localctx.m1.value; - State = 152; + State = 160; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - while (_la==T__2 || _la==T__3) { + while (_la==T__4 || _la==T__5) { { - State = 150; + State = 158; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__3: + case T__5: { - State = 138; - Match(T__3); - State = 144; + State = 146; + Match(T__5); + State = 152; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__5: - case T__6: + case T__7: + case T__8: { - State = 139; + State = 147; _la = TokenStream.LA(1); - if ( !(_la==T__5 || _la==T__6) ) { + if ( !(_la==T__7 || _la==T__8) ) { ErrorHandler.RecoverInline(this); } else { @@ -949,17 +969,15 @@ public Sum_expressionContext sum_expression() { if (beforeDots is not null) throw new InvalidArgumentParseException("A sum written with dots has one ... in it"); beforeDots = _localctx.value; } break; - case T__2: - case T__3: - case T__29: - case T__49: - case T__50: + case T__4: + case T__5: + case T__31: case T__51: + case T__52: case T__53: - case T__54: - case T__57: + case T__55: + case T__56: case T__59: - case T__60: case T__61: case T__62: case T__63: @@ -1126,13 +1144,15 @@ public Sum_expressionContext sum_expression() { case T__224: case T__225: case T__226: + case T__227: + case T__228: case NUMBER: case SPECIALSET: case BOOLEAN: case NAN: case VARIABLE: { - State = 141; + State = 149; _localctx.m2 = mult_expression(); if (beforeDots is null) _localctx.value = _localctx.value + _localctx.m2.value; else if (afterDots is null) afterDots = _localctx.m2.value; else throw new InvalidArgumentParseException("A sum written with dots ends with the one term after them, as 1 + 2 + ... + n"); } @@ -1142,11 +1162,11 @@ public Sum_expressionContext sum_expression() { } } break; - case T__2: + case T__4: { - State = 146; - Match(T__2); - State = 147; + State = 154; + Match(T__4); + State = 155; _localctx.m2 = mult_expression(); if (beforeDots is null) _localctx.value = _localctx.value - _localctx.m2.value; else throw new InvalidArgumentParseException("A sum written with dots ends with the one term after them, as 1 + 2 + ... + n"); } @@ -1155,7 +1175,7 @@ public Sum_expressionContext sum_expression() { throw new NoViableAltException(this); } } - State = 154; + State = 162; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -1208,31 +1228,31 @@ public Set_operator_intersectionContext set_operator_intersection() { try { EnterOuterAlt(_localctx, 1); { - State = 157; + State = 165; _localctx.left = sum_expression(); _localctx.value = _localctx.left.value; - State = 169; + State = 177; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - while (_la==T__9 || _la==T__10) { + while (_la==T__11 || _la==T__12) { { - State = 167; + State = 175; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__9: + case T__11: { - State = 159; - Match(T__9); - State = 160; + State = 167; + Match(T__11); + State = 168; _localctx.right = sum_expression(); _localctx.value = _localctx.value.Intersect(_localctx.right.value); } break; - case T__10: + case T__12: { - State = 163; - Match(T__10); - State = 164; + State = 171; + Match(T__12); + State = 172; _localctx.right = sum_expression(); _localctx.value = _localctx.value.Intersect(_localctx.right.value); } @@ -1241,7 +1261,7 @@ public Set_operator_intersectionContext set_operator_intersection() { throw new NoViableAltException(this); } } - State = 171; + State = 179; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -1293,49 +1313,49 @@ public Set_operator_union_setsubtractionContext set_operator_union_setsubtractio try { EnterOuterAlt(_localctx, 1); { - State = 172; + State = 180; _localctx.left = set_operator_intersection(); _localctx.value = _localctx.left.value; - State = 192; + State = 200; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 61440L) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 245760L) != 0)) { { - State = 190; + State = 198; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__11: + case T__13: { - State = 174; - Match(T__11); - State = 175; + State = 182; + Match(T__13); + State = 183; _localctx.right = set_operator_intersection(); _localctx.value = _localctx.value.Unite(_localctx.right.value); } break; - case T__12: + case T__14: { - State = 178; - Match(T__12); - State = 179; + State = 186; + Match(T__14); + State = 187; _localctx.right = set_operator_intersection(); _localctx.value = _localctx.value.Unite(_localctx.right.value); } break; - case T__13: + case T__15: { - State = 182; - Match(T__13); - State = 183; + State = 190; + Match(T__15); + State = 191; _localctx.right = set_operator_intersection(); _localctx.value = _localctx.value.SetSubtract(_localctx.right.value); } break; - case T__14: + case T__16: { - State = 186; - Match(T__14); - State = 187; + State = 194; + Match(T__16); + State = 195; _localctx.right = set_operator_intersection(); _localctx.value = _localctx.value.SetSubtract(_localctx.right.value); } @@ -1344,7 +1364,7 @@ public Set_operator_union_setsubtractionContext set_operator_union_setsubtractio throw new NoViableAltException(this); } } - State = 194; + State = 202; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -1396,42 +1416,24 @@ public In_operatorContext in_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 195; + State = 203; _localctx.m1 = set_operator_union_setsubtraction(); _localctx.value = _localctx.m1.value; - State = 227; + State = 235; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8323072L) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 33292288L) != 0)) { { - State = 225; + State = 233; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__15: - { - State = 197; - Match(T__15); - State = 198; - _localctx.m2 = set_operator_union_setsubtraction(); - _localctx.value = _localctx.value.In(_localctx.m2.value); - } - break; - case T__16: - { - State = 201; - Match(T__16); - State = 202; - _localctx.m2 = set_operator_union_setsubtraction(); - _localctx.value = _localctx.value.SubsetOf(_localctx.m2.value); - } - break; case T__17: { State = 205; Match(T__17); State = 206; _localctx.m2 = set_operator_union_setsubtraction(); - _localctx.value = _localctx.value.SubsetOf(_localctx.m2.value); + _localctx.value = _localctx.value.In(_localctx.m2.value); } break; case T__18: @@ -1440,7 +1442,7 @@ public In_operatorContext in_operator() { Match(T__18); State = 210; _localctx.m2 = set_operator_union_setsubtraction(); - _localctx.value = _localctx.m2.value.SubsetOf(_localctx.value); + _localctx.value = _localctx.value.SubsetOf(_localctx.m2.value); } break; case T__19: @@ -1449,7 +1451,7 @@ public In_operatorContext in_operator() { Match(T__19); State = 214; _localctx.m2 = set_operator_union_setsubtraction(); - _localctx.value = _localctx.m2.value.SubsetOf(_localctx.value); + _localctx.value = _localctx.value.SubsetOf(_localctx.m2.value); } break; case T__20: @@ -1458,7 +1460,7 @@ public In_operatorContext in_operator() { Match(T__20); State = 218; _localctx.m2 = set_operator_union_setsubtraction(); - _localctx.value = _localctx.value.Divides(_localctx.m2.value); + _localctx.value = _localctx.m2.value.SubsetOf(_localctx.value); } break; case T__21: @@ -1466,6 +1468,24 @@ public In_operatorContext in_operator() { State = 221; Match(T__21); State = 222; + _localctx.m2 = set_operator_union_setsubtraction(); + _localctx.value = _localctx.m2.value.SubsetOf(_localctx.value); + } + break; + case T__22: + { + State = 225; + Match(T__22); + State = 226; + _localctx.m2 = set_operator_union_setsubtraction(); + _localctx.value = _localctx.value.Divides(_localctx.m2.value); + } + break; + case T__23: + { + State = 229; + Match(T__23); + State = 230; _localctx.m2 = set_operator_union_setsubtraction(); _localctx.value = _localctx.value.Divides(_localctx.m2.value); } @@ -1474,7 +1494,7 @@ public In_operatorContext in_operator() { throw new NoViableAltException(this); } } - State = 229; + State = 237; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -1528,92 +1548,92 @@ public Comparison_expressionContext comparison_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 230; + State = 238; _localctx.m1 = in_operator(); terms.Add(_localctx.m1.value); - State = 253; + State = 261; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 1065353216L) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4261412864L) != 0)) { { { - State = 246; + State = 254; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__22: + case T__24: { - State = 232; - Match(T__22); + State = 240; + Match(T__24); operators.Add(">="); } break; - case T__23: + case T__25: { - State = 234; - Match(T__23); + State = 242; + Match(T__25); operators.Add("<="); } break; - case T__24: + case T__26: { - State = 236; - Match(T__24); + State = 244; + Match(T__26); operators.Add(">"); } break; - case T__25: + case T__27: { - State = 238; - Match(T__25); + State = 246; + Match(T__27); operators.Add("<"); } break; - case T__26: + case T__28: { - State = 240; - Match(T__26); + State = 248; + Match(T__28); operators.Add("="); } break; - case T__27: + case T__29: { - State = 242; - Match(T__27); + State = 250; + Match(T__29); operators.Add("<>"); } break; - case T__28: + case T__30: { - State = 244; - Match(T__28); + State = 252; + Match(T__30); operators.Add("≡"); } break; default: throw new NoViableAltException(this); } - State = 248; + State = 256; _localctx.m2 = in_operator(); terms.Add(_localctx.m2.value); } } - State = 255; + State = 263; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 262; + State = 270; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - if (_la==T__29) { + if (_la==T__31) { { - State = 256; - Match(T__29); - State = 257; - Match(T__8); - State = 258; + State = 264; + Match(T__31); + State = 265; + Match(T__10); + State = 266; _localctx.mod = in_operator(); - State = 259; - Match(T__30); + State = 267; + Match(T__32); modulus = _localctx.mod.value; } } @@ -1702,15 +1722,15 @@ public Negate_expressionContext negate_expression() { Negate_expressionContext _localctx = new Negate_expressionContext(Context, State); EnterRule(_localctx, 20, RULE_negate_expression); try { - State = 281; + State = 289; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,23,Context) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 266; - Match(T__31); - State = 267; + State = 274; + Match(T__33); + State = 275; _localctx.op = comparison_expression(); _localctx.value = !_localctx.op.value; } @@ -1718,9 +1738,9 @@ public Negate_expressionContext negate_expression() { case 2: EnterOuterAlt(_localctx, 2); { - State = 270; - Match(T__31); - State = 271; + State = 278; + Match(T__33); + State = 279; _localctx.opn = negate_expression(); _localctx.value = !_localctx.opn.value; } @@ -1728,9 +1748,9 @@ public Negate_expressionContext negate_expression() { case 3: EnterOuterAlt(_localctx, 3); { - State = 274; - Match(T__31); - State = 275; + State = 282; + Match(T__33); + State = 283; _localctx.q = quantified_expression(); _localctx.value = !_localctx.q.value; } @@ -1738,7 +1758,7 @@ public Negate_expressionContext negate_expression() { case 4: EnterOuterAlt(_localctx, 4); { - State = 278; + State = 286; _localctx.op = comparison_expression(); _localctx.value = _localctx.op.value; } @@ -1799,48 +1819,48 @@ public And_expressionContext and_expression() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 283; + State = 291; _localctx.m1 = negate_expression(); _localctx.value = _localctx.m1.value; - State = 299; + State = 307; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 297; + State = 305; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,24,Context) ) { case 1: { - State = 285; - Match(T__32); - State = 286; + State = 293; + Match(T__34); + State = 294; _localctx.m2 = negate_expression(); _localctx.value = _localctx.value & _localctx.m2.value; } break; case 2: { - State = 289; - Match(T__33); - State = 290; + State = 297; + Match(T__35); + State = 298; _localctx.m2 = negate_expression(); _localctx.value = _localctx.value & _localctx.m2.value; } break; case 3: { - State = 293; + State = 301; _la = TokenStream.LA(1); - if ( !(_la==T__32 || _la==T__33) ) { + if ( !(_la==T__34 || _la==T__35) ) { ErrorHandler.RecoverInline(this); } else { ErrorHandler.ReportMatch(this); Consume(); } - State = 294; + State = 302; _localctx.q = quantified_expression(); _localctx.value = _localctx.value & _localctx.q.value; } @@ -1848,7 +1868,7 @@ public And_expressionContext and_expression() { } } } - State = 301; + State = 309; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); } @@ -1907,32 +1927,32 @@ public Xor_expressionContext xor_expression() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 302; + State = 310; _localctx.m1 = and_expression(); _localctx.value = _localctx.m1.value; - State = 314; + State = 322; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,27,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 312; + State = 320; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,26,Context) ) { case 1: { - State = 304; - Match(T__34); - State = 305; + State = 312; + Match(T__36); + State = 313; _localctx.m2 = and_expression(); _localctx.value = _localctx.value ^ _localctx.m2.value; } break; case 2: { - State = 308; - Match(T__34); - State = 309; + State = 316; + Match(T__36); + State = 317; _localctx.q = quantified_expression(); _localctx.value = _localctx.value ^ _localctx.q.value; } @@ -1940,7 +1960,7 @@ public Xor_expressionContext xor_expression() { } } } - State = 316; + State = 324; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,27,Context); } @@ -1999,32 +2019,32 @@ public Or_expressionContext or_expression() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 317; + State = 325; _localctx.m1 = xor_expression(); _localctx.value = _localctx.m1.value; - State = 329; + State = 337; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,29,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 327; + State = 335; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,28,Context) ) { case 1: { - State = 319; - Match(T__35); - State = 320; + State = 327; + Match(T__37); + State = 328; _localctx.m2 = xor_expression(); _localctx.value = _localctx.value | _localctx.m2.value; } break; case 2: { - State = 323; - Match(T__35); - State = 324; + State = 331; + Match(T__37); + State = 332; _localctx.q = quantified_expression(); _localctx.value = _localctx.value | _localctx.q.value; } @@ -2032,7 +2052,7 @@ public Or_expressionContext or_expression() { } } } - State = 331; + State = 339; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,29,Context); } @@ -2092,48 +2112,48 @@ public Implies_expressionContext implies_expression() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 332; + State = 340; _localctx.m1 = or_expression(); _localctx.value = _localctx.m1.value; - State = 348; + State = 356; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,31,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 346; + State = 354; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,30,Context) ) { case 1: { - State = 334; - Match(T__36); - State = 335; + State = 342; + Match(T__38); + State = 343; _localctx.m2 = or_expression(); _localctx.value = _localctx.value.Implies(_localctx.m2.value); } break; case 2: { - State = 338; - Match(T__37); - State = 339; + State = 346; + Match(T__39); + State = 347; _localctx.m2 = or_expression(); _localctx.value = _localctx.value.Implies(_localctx.m2.value); } break; case 3: { - State = 342; + State = 350; _la = TokenStream.LA(1); - if ( !(_la==T__36 || _la==T__37) ) { + if ( !(_la==T__38 || _la==T__39) ) { ErrorHandler.RecoverInline(this); } else { ErrorHandler.ReportMatch(this); Consume(); } - State = 343; + State = 351; _localctx.q = quantified_expression(); _localctx.value = _localctx.value.Implies(_localctx.q.value); } @@ -2141,7 +2161,7 @@ public Implies_expressionContext implies_expression() { } } } - State = 350; + State = 358; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,31,Context); } @@ -2192,17 +2212,17 @@ public Provided_expressionContext provided_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 351; + State = 359; _localctx.expr = implies_expression(); _localctx.value = _localctx.expr.value; - State = 357; + State = 365; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,32,Context) ) { case 1: { - State = 353; - Match(T__38); - State = 354; + State = 361; + Match(T__40); + State = 362; _localctx.pred = provided_expression(); _localctx.value = _localctx.value.Provided(_localctx.pred.value); } @@ -2257,21 +2277,19 @@ public ExpressionContext expression() { ExpressionContext _localctx = new ExpressionContext(Context, State); EnterRule(_localctx, 32, RULE_expression); try { - State = 370; + State = 378; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__2: - case T__3: - case T__29: + case T__4: + case T__5: case T__31: - case T__49: - case T__50: + case T__33: case T__51: + case T__52: case T__53: - case T__54: - case T__57: + case T__55: + case T__56: case T__59: - case T__60: case T__61: case T__62: case T__63: @@ -2438,6 +2456,8 @@ public ExpressionContext expression() { case T__224: case T__225: case T__226: + case T__227: + case T__228: case NUMBER: case SPECIALSET: case BOOLEAN: @@ -2445,17 +2465,17 @@ public ExpressionContext expression() { case VARIABLE: EnterOuterAlt(_localctx, 1); { - State = 359; + State = 367; _localctx.s = provided_expression(); _localctx.value = _localctx.s.value; - State = 365; + State = 373; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,33,Context) ) { case 1: { - State = 361; - Match(T__39); - State = 362; + State = 369; + Match(T__41); + State = 370; _localctx.b = expression(); /* The parameters are read back out of an ordinary expression rather than matched as @@ -2490,15 +2510,15 @@ therefore never arrive as a Variable token at all. } } break; - case T__41: - case T__42: case T__43: case T__44: case T__45: case T__46: + case T__47: + case T__48: EnterOuterAlt(_localctx, 2); { - State = 367; + State = 375; _localctx.q = quantified_expression(); _localctx.value = _localctx.q.value; } @@ -2556,13 +2576,13 @@ public Quantified_expressionContext quantified_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 372; + State = 380; _localctx.q = quantifier_keyword(); - State = 373; + State = 381; _localctx.names = quantified_names(); - State = 374; - Match(T__40); - State = 375; + State = 382; + Match(T__42); + State = 383; _localctx.b = expression(); Entity quantified = _localctx.b.value; @@ -2614,16 +2634,16 @@ public Quantifier_keywordContext quantifier_keyword() { EnterRule(_localctx, 36, RULE_quantifier_keyword); int _la; try { - State = 384; + State = 392; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__41: - case T__42: + case T__43: + case T__44: EnterOuterAlt(_localctx, 1); { - State = 378; + State = 386; _la = TokenStream.LA(1); - if ( !(_la==T__41 || _la==T__42) ) { + if ( !(_la==T__43 || _la==T__44) ) { ErrorHandler.RecoverInline(this); } else { @@ -2633,13 +2653,13 @@ public Quantifier_keywordContext quantifier_keyword() { _localctx.kind = "forall"; } break; - case T__43: - case T__44: + case T__45: + case T__46: EnterOuterAlt(_localctx, 2); { - State = 380; + State = 388; _la = TokenStream.LA(1); - if ( !(_la==T__43 || _la==T__44) ) { + if ( !(_la==T__45 || _la==T__46) ) { ErrorHandler.RecoverInline(this); } else { @@ -2649,13 +2669,13 @@ public Quantifier_keywordContext quantifier_keyword() { _localctx.kind = "exists!"; } break; - case T__45: - case T__46: + case T__47: + case T__48: EnterOuterAlt(_localctx, 3); { - State = 382; + State = 390; _la = TokenStream.LA(1); - if ( !(_la==T__45 || _la==T__46) ) { + if ( !(_la==T__47 || _la==T__48) ) { ErrorHandler.RecoverInline(this); } else { @@ -2715,23 +2735,23 @@ public Quantified_namesContext quantified_names() { try { EnterOuterAlt(_localctx, 1); { - State = 386; + State = 394; _localctx.e = in_operator(); items.Add(_localctx.e.value); - State = 394; + State = 402; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - while (_la==T__47) { + while (_la==T__49) { { { - State = 388; - Match(T__47); - State = 389; + State = 396; + Match(T__49); + State = 397; _localctx.e = in_operator(); items.Add(_localctx.e.value); } } - State = 396; + State = 404; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -2800,28 +2820,28 @@ public Function_argumentsContext function_arguments() { try { EnterOuterAlt(_localctx, 1); { - State = 410; + State = 418; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -802489551279882216L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -1L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & -1L) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & 4329327034367L) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -3209958205119528864L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -1L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & -1L) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & 17317308137471L) != 0)) { { - State = 399; + State = 407; _localctx.e = expression(); _localctx.list.Add(_localctx.e.value); - State = 407; + State = 415; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - while (_la==T__47) { + while (_la==T__49) { { { - State = 401; - Match(T__47); - State = 402; + State = 409; + Match(T__49); + State = 410; _localctx.e = expression(); _localctx.list.Add(_localctx.e.value); } } - State = 409; + State = 417; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -2876,32 +2896,30 @@ public Set_itemsContext set_items() { try { EnterOuterAlt(_localctx, 1); { - State = 432; + State = 440; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -802489551279882024L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -1L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & -1L) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & 4329327034367L) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -3209958205119528096L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -1L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & -1L) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & 17317308137471L) != 0)) { { - State = 417; + State = 425; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__2: - case T__3: - case T__29: + case T__4: + case T__5: case T__31: - case T__41: - case T__42: + case T__33: case T__43: case T__44: case T__45: case T__46: - case T__49: - case T__50: + case T__47: + case T__48: case T__51: + case T__52: case T__53: - case T__54: - case T__57: + case T__55: + case T__56: case T__59: - case T__60: case T__61: case T__62: case T__63: @@ -3068,23 +3086,25 @@ public Set_itemsContext set_items() { case T__224: case T__225: case T__226: + case T__227: + case T__228: case NUMBER: case SPECIALSET: case BOOLEAN: case NAN: case VARIABLE: { - State = 412; + State = 420; _localctx.e = expression(); _localctx.list.Add(_localctx.e.value); } break; - case T__5: - case T__6: + case T__7: + case T__8: { - State = 415; + State = 423; _la = TokenStream.LA(1); - if ( !(_la==T__5 || _la==T__6) ) { + if ( !(_la==T__7 || _la==T__8) ) { ErrorHandler.RecoverInline(this); } else { @@ -3097,35 +3117,33 @@ public Set_itemsContext set_items() { default: throw new NoViableAltException(this); } - State = 429; + State = 437; ErrorHandler.Sync(this); _la = TokenStream.LA(1); - while (_la==T__47) { + while (_la==T__49) { { { - State = 419; - Match(T__47); - State = 425; + State = 427; + Match(T__49); + State = 433; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { - case T__2: - case T__3: - case T__29: + case T__4: + case T__5: case T__31: - case T__41: - case T__42: + case T__33: case T__43: case T__44: case T__45: case T__46: - case T__49: - case T__50: + case T__47: + case T__48: case T__51: + case T__52: case T__53: - case T__54: - case T__57: + case T__55: + case T__56: case T__59: - case T__60: case T__61: case T__62: case T__63: @@ -3292,23 +3310,25 @@ public Set_itemsContext set_items() { case T__224: case T__225: case T__226: + case T__227: + case T__228: case NUMBER: case SPECIALSET: case BOOLEAN: case NAN: case VARIABLE: { - State = 420; + State = 428; _localctx.e = expression(); _localctx.list.Add(_localctx.e.value); } break; - case T__5: - case T__6: + case T__7: + case T__8: { - State = 423; + State = 431; _la = TokenStream.LA(1); - if ( !(_la==T__5 || _la==T__6) ) { + if ( !(_la==T__7 || _la==T__8) ) { ErrorHandler.RecoverInline(this); } else { @@ -3323,7 +3343,7 @@ public Set_itemsContext set_items() { } } } - State = 431; + State = 439; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -3377,12 +3397,12 @@ public Interval_argumentsContext interval_arguments() { try { EnterOuterAlt(_localctx, 1); { - State = 434; + State = 442; _localctx.from = expression(); _localctx.couple.from = _localctx.from.value; - State = 436; - Match(T__48); - State = 437; + State = 444; + Match(T__50); + State = 445; _localctx.to = expression(); _localctx.couple.to = _localctx.to.value; } @@ -3432,12 +3452,12 @@ public Cset_argumentsContext cset_arguments() { try { EnterOuterAlt(_localctx, 1); { - State = 440; + State = 448; _localctx.variable = expression(); _localctx.couple.variable = _localctx.variable.value; - State = 442; - Match(T__40); - State = 443; + State = 450; + Match(T__42); + State = 451; _localctx.predicate = expression(); _localctx.couple.predicate = _localctx.predicate.value; } @@ -3511,29 +3531,29 @@ public AtomContext atom() { AtomContext _localctx = new AtomContext(Context, State); EnterRule(_localctx, 48, RULE_atom); try { - State = 1354; + State = 1362; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,43,Context) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 446; - Match(T__49); + State = 454; + Match(T__51); _localctx.value = Entity.Number.Real.PositiveInfinity; } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 448; - Match(T__50); + State = 456; + Match(T__52); _localctx.value = Entity.Number.Real.NegativeInfinity; } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 450; + State = 458; Match(NAN); _localctx.value = Entity.Number.Real.NaN; } @@ -3541,7 +3561,7 @@ public AtomContext atom() { case 4: EnterOuterAlt(_localctx, 4); { - State = 452; + State = 460; _localctx._NUMBER = Match(NUMBER); _localctx.value = Entity.Number.Complex.Parse((_localctx._NUMBER!=null?_localctx._NUMBER.Text:null)); } @@ -3549,7 +3569,7 @@ public AtomContext atom() { case 5: EnterOuterAlt(_localctx, 5); { - State = 454; + State = 462; _localctx._BOOLEAN = Match(BOOLEAN); _localctx.value = Entity.Boolean.Parse((_localctx._BOOLEAN!=null?_localctx._BOOLEAN.Text:null)); } @@ -3557,7 +3577,7 @@ public AtomContext atom() { case 6: EnterOuterAlt(_localctx, 6); { - State = 456; + State = 464; _localctx._SPECIALSET = Match(SPECIALSET); _localctx.value = Entity.Set.SpecialSet.Create((_localctx._SPECIALSET!=null?_localctx._SPECIALSET.Text:null)); } @@ -3565,7 +3585,7 @@ public AtomContext atom() { case 7: EnterOuterAlt(_localctx, 7); { - State = 458; + State = 466; _localctx._VARIABLE = Match(VARIABLE); // There is no set of natural numbers here, because the name means {0, 1, 2, ...} to @@ -3582,21 +3602,21 @@ public AtomContext atom() { case 8: EnterOuterAlt(_localctx, 8); { - State = 460; - Match(T__51); - State = 461; + State = 468; + Match(T__53); + State = 469; _localctx._expression = expression(); - State = 462; - Match(T__52); + State = 470; + Match(T__54); _localctx.value = _localctx._expression.value.Abs(); } break; case 9: EnterOuterAlt(_localctx, 9); { - State = 465; - Match(T__53); - State = 466; + State = 473; + Match(T__55); + State = 474; _localctx.p = atom(); _localctx.value = MathS.Sets.Card(_localctx.p.value); } @@ -3604,1020 +3624,1020 @@ public AtomContext atom() { case 10: EnterOuterAlt(_localctx, 10); { - State = 469; - Match(T__54); - State = 470; + State = 477; + Match(T__56); + State = 478; _localctx._function_arguments = function_arguments(); - State = 471; - Match(T__55); + State = 479; + Match(T__57); _localctx.value = ParsingHelpers.TryBuildingMatrix(_localctx._function_arguments.list).T; } break; case 11: EnterOuterAlt(_localctx, 11); { - State = 474; - Match(T__54); - State = 475; - _localctx._function_arguments = function_arguments(); - State = 476; + State = 482; Match(T__56); + State = 483; + _localctx._function_arguments = function_arguments(); + State = 484; + Match(T__58); _localctx.value = ParsingHelpers.TryBuildingMatrix(_localctx._function_arguments.list); } break; case 12: EnterOuterAlt(_localctx, 12); { - State = 479; - Match(T__29); - State = 480; + State = 487; + Match(T__31); + State = 488; _localctx._interval_arguments = interval_arguments(); - State = 481; - Match(T__30); + State = 489; + Match(T__32); _localctx.value = new Entity.Set.Interval(_localctx._interval_arguments.couple.from, false, _localctx._interval_arguments.couple.to, false); } break; case 13: EnterOuterAlt(_localctx, 13); { - State = 484; - Match(T__54); - State = 485; + State = 492; + Match(T__56); + State = 493; _localctx._interval_arguments = interval_arguments(); - State = 486; - Match(T__30); + State = 494; + Match(T__32); _localctx.value = new Entity.Set.Interval(_localctx._interval_arguments.couple.from, true, _localctx._interval_arguments.couple.to, false); } break; case 14: EnterOuterAlt(_localctx, 14); { - State = 489; - Match(T__54); - State = 490; - _localctx._interval_arguments = interval_arguments(); - State = 491; + State = 497; Match(T__56); + State = 498; + _localctx._interval_arguments = interval_arguments(); + State = 499; + Match(T__58); _localctx.value = new Entity.Set.Interval(_localctx._interval_arguments.couple.from, true, _localctx._interval_arguments.couple.to, true); } break; case 15: EnterOuterAlt(_localctx, 15); { - State = 494; - Match(T__29); - State = 495; + State = 502; + Match(T__31); + State = 503; _localctx._interval_arguments = interval_arguments(); - State = 496; - Match(T__56); + State = 504; + Match(T__58); _localctx.value = new Entity.Set.Interval(_localctx._interval_arguments.couple.from, false, _localctx._interval_arguments.couple.to, true); } break; case 16: EnterOuterAlt(_localctx, 16); { - State = 499; - Match(T__29); - State = 500; + State = 507; + Match(T__31); + State = 508; _localctx._expression = expression(); - State = 501; - Match(T__30); + State = 509; + Match(T__32); _localctx.value = _localctx._expression.value; } break; case 17: EnterOuterAlt(_localctx, 17); { - State = 504; - Match(T__57); - State = 505; + State = 512; + Match(T__59); + State = 513; _localctx.cset_args = cset_arguments(); - State = 506; - Match(T__58); + State = 514; + Match(T__60); _localctx.value = new ConditionalSet(_localctx.cset_args.couple.variable, _localctx.cset_args.couple.predicate); } break; case 18: EnterOuterAlt(_localctx, 18); { - State = 509; - Match(T__57); - State = 510; + State = 517; + Match(T__59); + State = 518; _localctx.items = set_items(); - State = 511; - Match(T__58); + State = 519; + Match(T__60); _localctx.value = _localctx.items.list.Contains(null) ? AngouriMath.Core.PatternOperator.Set(_localctx.items.list) : new FiniteSet(_localctx.items.list.Cast()); } break; case 19: EnterOuterAlt(_localctx, 19); { - State = 514; - Match(T__59); - State = 515; + State = 522; + Match(T__61); + State = 523; _localctx.args = function_arguments(); - State = 516; - Match(T__30); + State = 524; + Match(T__32); _localctx.value = Assert("log", (1, 2), _localctx.args.list.Count) ? MathS.Log(10, _localctx.args.list[0]) : MathS.Log(_localctx.args.list[0], _localctx.args.list[1]); } break; case 20: EnterOuterAlt(_localctx, 20); { - State = 519; - Match(T__60); - State = 520; + State = 527; + Match(T__62); + State = 528; _localctx.args = function_arguments(); - State = 521; - Match(T__30); + State = 529; + Match(T__32); Assert("log10", 1, _localctx.args.list.Count); _localctx.value = MathS.Log(10, _localctx.args.list[0]); } break; case 21: EnterOuterAlt(_localctx, 21); { - State = 524; - Match(T__61); - State = 525; + State = 532; + Match(T__63); + State = 533; _localctx.args = function_arguments(); - State = 526; - Match(T__30); + State = 534; + Match(T__32); Assert("log2", 1, _localctx.args.list.Count); _localctx.value = MathS.Log(2, _localctx.args.list[0]); } break; case 22: EnterOuterAlt(_localctx, 22); { - State = 529; - Match(T__62); - State = 530; + State = 537; + Match(T__64); + State = 538; _localctx.args = function_arguments(); - State = 531; - Match(T__30); + State = 539; + Match(T__32); Assert("pow", 2, _localctx.args.list.Count); _localctx.value = MathS.Pow(_localctx.args.list[0], _localctx.args.list[1]); } break; case 23: EnterOuterAlt(_localctx, 23); { - State = 534; - Match(T__63); - State = 535; + State = 542; + Match(T__65); + State = 543; _localctx.args = function_arguments(); - State = 536; - Match(T__30); + State = 544; + Match(T__32); Assert("sqrt", 1, _localctx.args.list.Count); _localctx.value = MathS.Sqrt(_localctx.args.list[0]); } break; case 24: EnterOuterAlt(_localctx, 24); { - State = 539; - Match(T__64); - State = 540; + State = 547; + Match(T__66); + State = 548; _localctx.args = function_arguments(); - State = 541; - Match(T__30); + State = 549; + Match(T__32); Assert("cbrt", 1, _localctx.args.list.Count); _localctx.value = MathS.Cbrt(_localctx.args.list[0]); } break; case 25: EnterOuterAlt(_localctx, 25); { - State = 544; - Match(T__65); - State = 545; + State = 552; + Match(T__67); + State = 553; _localctx.args = function_arguments(); - State = 546; - Match(T__30); + State = 554; + Match(T__32); Assert("sqr", 1, _localctx.args.list.Count); _localctx.value = MathS.Sqr(_localctx.args.list[0]); } break; case 26: EnterOuterAlt(_localctx, 26); { - State = 549; - Match(T__66); - State = 550; + State = 557; + Match(T__68); + State = 558; _localctx.args = function_arguments(); - State = 551; - Match(T__30); + State = 559; + Match(T__32); Assert("ln", 1, _localctx.args.list.Count); _localctx.value = MathS.Ln(_localctx.args.list[0]); } break; case 27: EnterOuterAlt(_localctx, 27); { - State = 554; - Match(T__67); - State = 555; + State = 562; + Match(T__69); + State = 563; _localctx.args = function_arguments(); - State = 556; - Match(T__30); + State = 564; + Match(T__32); Assert("exp", 1, _localctx.args.list.Count); _localctx.value = MathS.Pow(Entity.Constant.EulerIntrinsic, _localctx.args.list[0]); } break; case 28: EnterOuterAlt(_localctx, 28); { - State = 559; - Match(T__68); - State = 560; + State = 567; + Match(T__70); + State = 568; _localctx.args = function_arguments(); - State = 561; - Match(T__30); + State = 569; + Match(T__32); Assert("sin", 1, _localctx.args.list.Count); _localctx.value = MathS.Sin(_localctx.args.list[0]); } break; case 29: EnterOuterAlt(_localctx, 29); { - State = 564; - Match(T__69); - State = 565; + State = 572; + Match(T__71); + State = 573; _localctx.args = function_arguments(); - State = 566; - Match(T__30); + State = 574; + Match(T__32); Assert("cos", 1, _localctx.args.list.Count); _localctx.value = MathS.Cos(_localctx.args.list[0]); } break; case 30: EnterOuterAlt(_localctx, 30); { - State = 569; - Match(T__70); - State = 570; + State = 577; + Match(T__72); + State = 578; _localctx.args = function_arguments(); - State = 571; - Match(T__30); + State = 579; + Match(T__32); Assert("tan", 1, _localctx.args.list.Count); _localctx.value = MathS.Tan(_localctx.args.list[0]); } break; case 31: EnterOuterAlt(_localctx, 31); { - State = 574; - Match(T__71); - State = 575; + State = 582; + Match(T__73); + State = 583; _localctx.args = function_arguments(); - State = 576; - Match(T__30); + State = 584; + Match(T__32); Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Cotan(_localctx.args.list[0]); } break; case 32: EnterOuterAlt(_localctx, 32); { - State = 579; - Match(T__72); - State = 580; + State = 587; + Match(T__74); + State = 588; _localctx.args = function_arguments(); - State = 581; - Match(T__30); + State = 589; + Match(T__32); Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Cotan(_localctx.args.list[0]); } break; case 33: EnterOuterAlt(_localctx, 33); { - State = 584; - Match(T__73); - State = 585; + State = 592; + Match(T__75); + State = 593; _localctx.args = function_arguments(); - State = 586; - Match(T__30); + State = 594; + Match(T__32); Assert("sec", 1, _localctx.args.list.Count); _localctx.value = MathS.Sec(_localctx.args.list[0]); } break; case 34: EnterOuterAlt(_localctx, 34); { - State = 589; - Match(T__74); - State = 590; + State = 597; + Match(T__76); + State = 598; _localctx.args = function_arguments(); - State = 591; - Match(T__30); + State = 599; + Match(T__32); Assert("cosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Cosec(_localctx.args.list[0]); } break; case 35: EnterOuterAlt(_localctx, 35); { - State = 594; - Match(T__75); - State = 595; + State = 602; + Match(T__77); + State = 603; _localctx.args = function_arguments(); - State = 596; - Match(T__30); + State = 604; + Match(T__32); Assert("cosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Cosec(_localctx.args.list[0]); } break; case 36: EnterOuterAlt(_localctx, 36); { - State = 599; - Match(T__76); - State = 600; + State = 607; + Match(T__78); + State = 608; _localctx.args = function_arguments(); - State = 601; - Match(T__30); + State = 609; + Match(T__32); Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Arcsin(_localctx.args.list[0]); } break; case 37: EnterOuterAlt(_localctx, 37); { - State = 604; - Match(T__77); - State = 605; + State = 612; + Match(T__79); + State = 613; _localctx.args = function_arguments(); - State = 606; - Match(T__30); + State = 614; + Match(T__32); Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccos(_localctx.args.list[0]); } break; case 38: EnterOuterAlt(_localctx, 38); { - State = 609; - Match(T__78); - State = 610; + State = 617; + Match(T__80); + State = 618; _localctx.args = function_arguments(); - State = 611; - Match(T__30); + State = 619; + Match(T__32); Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arctan(_localctx.args.list[0]); } break; case 39: EnterOuterAlt(_localctx, 39); { - State = 614; - Match(T__79); - State = 615; + State = 622; + Match(T__81); + State = 623; _localctx.args = function_arguments(); - State = 616; - Match(T__30); + State = 624; + Match(T__32); Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccotan(_localctx.args.list[0]); } break; case 40: EnterOuterAlt(_localctx, 40); { - State = 619; - Match(T__80); - State = 620; + State = 627; + Match(T__82); + State = 628; _localctx.args = function_arguments(); - State = 621; - Match(T__30); + State = 629; + Match(T__32); Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arcsec(_localctx.args.list[0]); } break; case 41: EnterOuterAlt(_localctx, 41); { - State = 624; - Match(T__81); - State = 625; + State = 632; + Match(T__83); + State = 633; _localctx.args = function_arguments(); - State = 626; - Match(T__30); + State = 634; + Match(T__32); Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccosec(_localctx.args.list[0]); } break; case 42: EnterOuterAlt(_localctx, 42); { - State = 629; - Match(T__82); - State = 630; + State = 637; + Match(T__84); + State = 638; _localctx.args = function_arguments(); - State = 631; - Match(T__30); + State = 639; + Match(T__32); Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccosec(_localctx.args.list[0]); } break; case 43: EnterOuterAlt(_localctx, 43); { - State = 634; - Match(T__83); - State = 635; + State = 642; + Match(T__85); + State = 643; _localctx.args = function_arguments(); - State = 636; - Match(T__30); + State = 644; + Match(T__32); Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccosec(_localctx.args.list[0]); } break; case 44: EnterOuterAlt(_localctx, 44); { - State = 639; - Match(T__84); - State = 640; + State = 647; + Match(T__86); + State = 648; _localctx.args = function_arguments(); - State = 641; - Match(T__30); + State = 649; + Match(T__32); Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Arcsin(_localctx.args.list[0]); } break; case 45: EnterOuterAlt(_localctx, 45); { - State = 644; - Match(T__85); - State = 645; + State = 652; + Match(T__87); + State = 653; _localctx.args = function_arguments(); - State = 646; - Match(T__30); + State = 654; + Match(T__32); Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccos(_localctx.args.list[0]); } break; case 46: EnterOuterAlt(_localctx, 46); { - State = 649; - Match(T__86); - State = 650; + State = 657; + Match(T__88); + State = 658; _localctx.args = function_arguments(); - State = 651; - Match(T__30); + State = 659; + Match(T__32); Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arctan(_localctx.args.list[0]); } break; case 47: EnterOuterAlt(_localctx, 47); { - State = 654; - Match(T__87); - State = 655; + State = 662; + Match(T__89); + State = 663; _localctx.args = function_arguments(); - State = 656; - Match(T__30); + State = 664; + Match(T__32); Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccotan(_localctx.args.list[0]); } break; case 48: EnterOuterAlt(_localctx, 48); { - State = 659; - Match(T__88); - State = 660; + State = 667; + Match(T__90); + State = 668; _localctx.args = function_arguments(); - State = 661; - Match(T__30); + State = 669; + Match(T__32); Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arcsec(_localctx.args.list[0]); } break; case 49: EnterOuterAlt(_localctx, 49); { - State = 664; - Match(T__89); - State = 665; + State = 672; + Match(T__91); + State = 673; _localctx.args = function_arguments(); - State = 666; - Match(T__30); + State = 674; + Match(T__32); Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccosec(_localctx.args.list[0]); } break; case 50: EnterOuterAlt(_localctx, 50); { - State = 669; - Match(T__90); - State = 670; + State = 677; + Match(T__92); + State = 678; _localctx.args = function_arguments(); - State = 671; - Match(T__30); + State = 679; + Match(T__32); Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccotan(_localctx.args.list[0]); } break; case 51: EnterOuterAlt(_localctx, 51); { - State = 674; - Match(T__91); - State = 675; + State = 682; + Match(T__93); + State = 683; _localctx.args = function_arguments(); - State = 676; - Match(T__30); + State = 684; + Match(T__32); Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccotan(_localctx.args.list[0]); } break; case 52: EnterOuterAlt(_localctx, 52); { - State = 679; - Match(T__92); - State = 680; + State = 687; + Match(T__94); + State = 688; _localctx.args = function_arguments(); - State = 681; - Match(T__30); + State = 689; + Match(T__32); Assert("sin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Sinh(_localctx.args.list[0]); } break; case 53: EnterOuterAlt(_localctx, 53); { - State = 684; - Match(T__93); - State = 685; + State = 692; + Match(T__95); + State = 693; _localctx.args = function_arguments(); - State = 686; - Match(T__30); + State = 694; + Match(T__32); Assert("sin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Sinh(_localctx.args.list[0]); } break; case 54: EnterOuterAlt(_localctx, 54); { - State = 689; - Match(T__94); - State = 690; + State = 697; + Match(T__96); + State = 698; _localctx.args = function_arguments(); - State = 691; - Match(T__30); + State = 699; + Match(T__32); Assert("cos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cosh(_localctx.args.list[0]); } break; case 55: EnterOuterAlt(_localctx, 55); { - State = 694; - Match(T__95); - State = 695; + State = 702; + Match(T__97); + State = 703; _localctx.args = function_arguments(); - State = 696; - Match(T__30); + State = 704; + Match(T__32); Assert("cos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cosh(_localctx.args.list[0]); } break; case 56: EnterOuterAlt(_localctx, 56); { - State = 699; - Match(T__96); - State = 700; + State = 707; + Match(T__98); + State = 708; _localctx.args = function_arguments(); - State = 701; - Match(T__30); + State = 709; + Match(T__32); Assert("tan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Tanh(_localctx.args.list[0]); } break; case 57: EnterOuterAlt(_localctx, 57); { - State = 704; - Match(T__97); - State = 705; + State = 712; + Match(T__99); + State = 713; _localctx.args = function_arguments(); - State = 706; - Match(T__30); + State = 714; + Match(T__32); Assert("tan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Tanh(_localctx.args.list[0]); } break; case 58: EnterOuterAlt(_localctx, 58); { - State = 709; - Match(T__98); - State = 710; + State = 717; + Match(T__100); + State = 718; _localctx.args = function_arguments(); - State = 711; - Match(T__30); + State = 719; + Match(T__32); Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cotanh(_localctx.args.list[0]); } break; case 59: EnterOuterAlt(_localctx, 59); { - State = 714; - Match(T__99); - State = 715; + State = 722; + Match(T__101); + State = 723; _localctx.args = function_arguments(); - State = 716; - Match(T__30); + State = 724; + Match(T__32); Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cotanh(_localctx.args.list[0]); } break; case 60: EnterOuterAlt(_localctx, 60); { - State = 719; - Match(T__100); - State = 720; + State = 727; + Match(T__102); + State = 728; _localctx.args = function_arguments(); - State = 721; - Match(T__30); + State = 729; + Match(T__32); Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cotanh(_localctx.args.list[0]); } break; case 61: EnterOuterAlt(_localctx, 61); { - State = 724; - Match(T__101); - State = 725; + State = 732; + Match(T__103); + State = 733; _localctx.args = function_arguments(); - State = 726; - Match(T__30); + State = 734; + Match(T__32); Assert("sec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Sech(_localctx.args.list[0]); } break; case 62: EnterOuterAlt(_localctx, 62); { - State = 729; - Match(T__102); - State = 730; + State = 737; + Match(T__104); + State = 738; _localctx.args = function_arguments(); - State = 731; - Match(T__30); + State = 739; + Match(T__32); Assert("sec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Sech(_localctx.args.list[0]); } break; case 63: EnterOuterAlt(_localctx, 63); { - State = 734; - Match(T__103); - State = 735; + State = 742; + Match(T__105); + State = 743; _localctx.args = function_arguments(); - State = 736; - Match(T__30); + State = 744; + Match(T__32); Assert("cosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cosech(_localctx.args.list[0]); } break; case 64: EnterOuterAlt(_localctx, 64); { - State = 739; - Match(T__104); - State = 740; + State = 747; + Match(T__106); + State = 748; _localctx.args = function_arguments(); - State = 741; - Match(T__30); + State = 749; + Match(T__32); Assert("cosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cosech(_localctx.args.list[0]); } break; case 65: EnterOuterAlt(_localctx, 65); { - State = 744; - Match(T__105); - State = 745; + State = 752; + Match(T__107); + State = 753; _localctx.args = function_arguments(); - State = 746; - Match(T__30); + State = 754; + Match(T__32); Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsinh(_localctx.args.list[0]); } break; case 66: EnterOuterAlt(_localctx, 66); { - State = 749; - Match(T__106); - State = 750; + State = 757; + Match(T__108); + State = 758; _localctx.args = function_arguments(); - State = 751; - Match(T__30); + State = 759; + Match(T__32); Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsinh(_localctx.args.list[0]); } break; case 67: EnterOuterAlt(_localctx, 67); { - State = 754; - Match(T__107); - State = 755; + State = 762; + Match(T__109); + State = 763; _localctx.args = function_arguments(); - State = 756; - Match(T__30); + State = 764; + Match(T__32); Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsinh(_localctx.args.list[0]); } break; case 68: EnterOuterAlt(_localctx, 68); { - State = 759; - Match(T__108); - State = 760; + State = 767; + Match(T__110); + State = 768; _localctx.args = function_arguments(); - State = 761; - Match(T__30); + State = 769; + Match(T__32); throw new UnrecognizedFunctionParseException("there is no function arcsinh: the inverse hyperbolic functions are area functions, not arc functions, so the inverse hyperbolic sine is arsinh, asinh or arsh"); } break; case 69: EnterOuterAlt(_localctx, 69); { - State = 764; - Match(T__109); - State = 765; + State = 772; + Match(T__111); + State = 773; _localctx.args = function_arguments(); - State = 766; - Match(T__30); + State = 774; + Match(T__32); Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosh(_localctx.args.list[0]); } break; case 70: EnterOuterAlt(_localctx, 70); { - State = 769; - Match(T__110); - State = 770; + State = 777; + Match(T__112); + State = 778; _localctx.args = function_arguments(); - State = 771; - Match(T__30); + State = 779; + Match(T__32); Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosh(_localctx.args.list[0]); } break; case 71: EnterOuterAlt(_localctx, 71); { - State = 774; - Match(T__111); - State = 775; + State = 782; + Match(T__113); + State = 783; _localctx.args = function_arguments(); - State = 776; - Match(T__30); + State = 784; + Match(T__32); Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosh(_localctx.args.list[0]); } break; case 72: EnterOuterAlt(_localctx, 72); { - State = 779; - Match(T__112); - State = 780; + State = 787; + Match(T__114); + State = 788; _localctx.args = function_arguments(); - State = 781; - Match(T__30); + State = 789; + Match(T__32); throw new UnrecognizedFunctionParseException("there is no function arccosh: the inverse hyperbolic functions are area functions, not arc functions, so the inverse hyperbolic cosine is arcosh, acosh or arch"); } break; case 73: EnterOuterAlt(_localctx, 73); { - State = 784; - Match(T__113); - State = 785; + State = 792; + Match(T__115); + State = 793; _localctx.args = function_arguments(); - State = 786; - Match(T__30); + State = 794; + Match(T__32); Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Artanh(_localctx.args.list[0]); } break; case 74: EnterOuterAlt(_localctx, 74); { - State = 789; - Match(T__114); - State = 790; + State = 797; + Match(T__116); + State = 798; _localctx.args = function_arguments(); - State = 791; - Match(T__30); + State = 799; + Match(T__32); Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Artanh(_localctx.args.list[0]); } break; case 75: EnterOuterAlt(_localctx, 75); { - State = 794; - Match(T__115); - State = 795; + State = 802; + Match(T__117); + State = 803; _localctx.args = function_arguments(); - State = 796; - Match(T__30); + State = 804; + Match(T__32); Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Artanh(_localctx.args.list[0]); } break; case 76: EnterOuterAlt(_localctx, 76); { - State = 799; - Match(T__116); - State = 800; + State = 807; + Match(T__118); + State = 808; _localctx.args = function_arguments(); - State = 801; - Match(T__30); + State = 809; + Match(T__32); throw new UnrecognizedFunctionParseException("there is no function arctanh: the inverse hyperbolic functions are area functions, not arc functions, so the inverse hyperbolic tangent is artanh, atanh or arth"); } break; case 77: EnterOuterAlt(_localctx, 77); { - State = 804; - Match(T__117); - State = 805; + State = 812; + Match(T__119); + State = 813; _localctx.args = function_arguments(); - State = 806; - Match(T__30); + State = 814; + Match(T__32); Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); } break; case 78: EnterOuterAlt(_localctx, 78); { - State = 809; - Match(T__118); - State = 810; + State = 817; + Match(T__120); + State = 818; _localctx.args = function_arguments(); - State = 811; - Match(T__30); + State = 819; + Match(T__32); Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); } break; case 79: EnterOuterAlt(_localctx, 79); { - State = 814; - Match(T__119); - State = 815; + State = 822; + Match(T__121); + State = 823; _localctx.args = function_arguments(); - State = 816; - Match(T__30); + State = 824; + Match(T__32); Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); } break; case 80: EnterOuterAlt(_localctx, 80); { - State = 819; - Match(T__120); - State = 820; + State = 827; + Match(T__122); + State = 828; _localctx.args = function_arguments(); - State = 821; - Match(T__30); + State = 829; + Match(T__32); Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); } break; case 81: EnterOuterAlt(_localctx, 81); { - State = 824; - Match(T__121); - State = 825; + State = 832; + Match(T__123); + State = 833; _localctx.args = function_arguments(); - State = 826; - Match(T__30); + State = 834; + Match(T__32); Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); } break; case 82: EnterOuterAlt(_localctx, 82); { - State = 829; - Match(T__122); - State = 830; + State = 837; + Match(T__124); + State = 838; _localctx.args = function_arguments(); - State = 831; - Match(T__30); + State = 839; + Match(T__32); throw new UnrecognizedFunctionParseException("there is no function arccotanh: the inverse hyperbolic functions are area functions, not arc functions, so the inverse hyperbolic cotangent is arcotanh, acotanh, arcoth, acoth or arcth"); } break; case 83: EnterOuterAlt(_localctx, 83); { - State = 834; - Match(T__123); - State = 835; + State = 842; + Match(T__125); + State = 843; _localctx.args = function_arguments(); - State = 836; - Match(T__30); + State = 844; + Match(T__32); Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsech(_localctx.args.list[0]); } break; case 84: EnterOuterAlt(_localctx, 84); { - State = 839; - Match(T__124); - State = 840; + State = 847; + Match(T__126); + State = 848; _localctx.args = function_arguments(); - State = 841; - Match(T__30); + State = 849; + Match(T__32); Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsech(_localctx.args.list[0]); } break; case 85: EnterOuterAlt(_localctx, 85); { - State = 844; - Match(T__125); - State = 845; + State = 852; + Match(T__127); + State = 853; _localctx.args = function_arguments(); - State = 846; - Match(T__30); + State = 854; + Match(T__32); Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsech(_localctx.args.list[0]); } break; case 86: EnterOuterAlt(_localctx, 86); { - State = 849; - Match(T__126); - State = 850; + State = 857; + Match(T__128); + State = 858; _localctx.args = function_arguments(); - State = 851; - Match(T__30); + State = 859; + Match(T__32); throw new UnrecognizedFunctionParseException("there is no function arcsech: the inverse hyperbolic functions are area functions, not arc functions, so the inverse hyperbolic secant is arsech, asech or arsch"); } break; case 87: EnterOuterAlt(_localctx, 87); { - State = 854; - Match(T__127); - State = 855; + State = 862; + Match(T__129); + State = 863; _localctx.args = function_arguments(); - State = 856; - Match(T__30); + State = 864; + Match(T__32); Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosech(_localctx.args.list[0]); } break; case 88: EnterOuterAlt(_localctx, 88); { - State = 859; - Match(T__128); - State = 860; + State = 867; + Match(T__130); + State = 868; _localctx.args = function_arguments(); - State = 861; - Match(T__30); + State = 869; + Match(T__32); Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosech(_localctx.args.list[0]); } break; case 89: EnterOuterAlt(_localctx, 89); { - State = 864; - Match(T__129); - State = 865; + State = 872; + Match(T__131); + State = 873; _localctx.args = function_arguments(); - State = 866; - Match(T__30); + State = 874; + Match(T__32); Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosech(_localctx.args.list[0]); } break; case 90: EnterOuterAlt(_localctx, 90); { - State = 869; - Match(T__130); - State = 870; + State = 877; + Match(T__132); + State = 878; _localctx.args = function_arguments(); - State = 871; - Match(T__30); + State = 879; + Match(T__32); throw new UnrecognizedFunctionParseException("there is no function arccosech: the inverse hyperbolic functions are area functions, not arc functions, so the inverse hyperbolic cosecant is arcosech, acosech, arcsch or acsch"); } break; case 91: EnterOuterAlt(_localctx, 91); { - State = 874; - Match(T__131); - State = 875; + State = 882; + Match(T__133); + State = 883; _localctx.args = function_arguments(); - State = 876; - Match(T__30); + State = 884; + Match(T__32); Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosech(_localctx.args.list[0]); } break; case 92: EnterOuterAlt(_localctx, 92); { - State = 879; - Match(T__132); - State = 880; + State = 887; + Match(T__134); + State = 888; _localctx.args = function_arguments(); - State = 881; - Match(T__30); + State = 889; + Match(T__32); Assert("factorial", 1, _localctx.args.list.Count); _localctx.value = MathS.Factorial(_localctx.args.list[0]); } break; case 93: EnterOuterAlt(_localctx, 93); { - State = 884; - Match(T__133); - State = 885; + State = 892; + Match(T__135); + State = 893; _localctx.args = function_arguments(); - State = 886; - Match(T__30); + State = 894; + Match(T__32); if (_localctx.args.list.Count == 2) _localctx.value = MathS.IncompleteGamma(_localctx.args.list[0], _localctx.args.list[1]); else { Assert("gamma", 1, _localctx.args.list.Count); _localctx.value = MathS.Gamma(_localctx.args.list[0]); } } break; case 94: EnterOuterAlt(_localctx, 94); { - State = 889; - Match(T__134); - State = 890; + State = 897; + Match(T__136); + State = 898; _localctx.args = function_arguments(); - State = 891; - Match(T__30); + State = 899; + Match(T__32); if (Assert("derivative", (3, 2), _localctx.args.list.Count)) { @@ -4634,12 +4654,12 @@ public AtomContext atom() { case 95: EnterOuterAlt(_localctx, 95); { - State = 894; - Match(T__135); - State = 895; + State = 902; + Match(T__137); + State = 903; _localctx.args = function_arguments(); - State = 896; - Match(T__30); + State = 904; + Match(T__32); if (Assert("integral", (4, 2), _localctx.args.list.Count)) { @@ -4656,1056 +4676,1056 @@ public AtomContext atom() { case 96: EnterOuterAlt(_localctx, 96); { - State = 899; - Match(T__136); - State = 900; + State = 907; + Match(T__138); + State = 908; _localctx.args = function_arguments(); - State = 901; - Match(T__30); + State = 909; + Match(T__32); Assert("limit", 3, _localctx.args.list.Count); _localctx.value = MathS.Limit(_localctx.args.list[0], _localctx.args.list[1], _localctx.args.list[2]); } break; case 97: EnterOuterAlt(_localctx, 97); { - State = 904; - Match(T__137); - State = 905; + State = 912; + Match(T__139); + State = 913; _localctx.args = function_arguments(); - State = 906; - Match(T__30); + State = 914; + Match(T__32); Assert("limitleft", 3, _localctx.args.list.Count); _localctx.value = MathS.Limit(_localctx.args.list[0], _localctx.args.list[1], _localctx.args.list[2], AngouriMath.Core.ApproachFrom.Left); } break; case 98: EnterOuterAlt(_localctx, 98); { - State = 909; - Match(T__138); - State = 910; + State = 917; + Match(T__140); + State = 918; _localctx.args = function_arguments(); - State = 911; - Match(T__30); + State = 919; + Match(T__32); Assert("limitright", 3, _localctx.args.list.Count); _localctx.value = MathS.Limit(_localctx.args.list[0], _localctx.args.list[1], _localctx.args.list[2], AngouriMath.Core.ApproachFrom.Right); } break; case 99: EnterOuterAlt(_localctx, 99); { - State = 914; - Match(T__139); - State = 915; + State = 922; + Match(T__141); + State = 923; _localctx.args = function_arguments(); - State = 916; - Match(T__30); + State = 924; + Match(T__32); if (_localctx.args.list.Count == 2 && AngouriMath.Functions.ExtremumOverSet.AsRange(_localctx.args.list[1]) is var (sumVar, sumOver)) _localctx.value = MathS.Sum(_localctx.args.list[0], sumVar, sumOver); else { Assert("sum", 4, _localctx.args.list.Count); _localctx.value = MathS.Sum(_localctx.args.list[0], _localctx.args.list[1], _localctx.args.list[2], _localctx.args.list[3]); } } break; case 100: EnterOuterAlt(_localctx, 100); { - State = 919; - Match(T__140); - State = 920; + State = 927; + Match(T__142); + State = 928; _localctx.args = function_arguments(); - State = 921; - Match(T__30); + State = 929; + Match(T__32); Assert("product", 4, _localctx.args.list.Count); _localctx.value = MathS.Product(_localctx.args.list[0], _localctx.args.list[1], _localctx.args.list[2], _localctx.args.list[3]); } break; case 101: EnterOuterAlt(_localctx, 101); { - State = 924; - Match(T__141); - State = 925; + State = 932; + Match(T__143); + State = 933; _localctx.args = function_arguments(); - State = 926; - Match(T__30); + State = 934; + Match(T__32); Assert("signum", 1, _localctx.args.list.Count); _localctx.value = MathS.Signum(_localctx.args.list[0]); } break; case 102: EnterOuterAlt(_localctx, 102); { - State = 929; - Match(T__142); - State = 930; + State = 937; + Match(T__144); + State = 938; _localctx.args = function_arguments(); - State = 931; - Match(T__30); + State = 939; + Match(T__32); Assert("sgn", 1, _localctx.args.list.Count); _localctx.value = MathS.Signum(_localctx.args.list[0]); } break; case 103: EnterOuterAlt(_localctx, 103); { - State = 934; - Match(T__143); - State = 935; + State = 942; + Match(T__145); + State = 943; _localctx.args = function_arguments(); - State = 936; - Match(T__30); + State = 944; + Match(T__32); Assert("sign", 1, _localctx.args.list.Count); _localctx.value = MathS.Signum(_localctx.args.list[0]); } break; case 104: EnterOuterAlt(_localctx, 104); { - State = 939; - Match(T__144); - State = 940; + State = 947; + Match(T__146); + State = 948; _localctx.args = function_arguments(); - State = 941; - Match(T__30); + State = 949; + Match(T__32); Assert("abs", 1, _localctx.args.list.Count); _localctx.value = MathS.Abs(_localctx.args.list[0]); } break; case 105: EnterOuterAlt(_localctx, 105); { - State = 944; - Match(T__145); - State = 945; + State = 952; + Match(T__147); + State = 953; _localctx.args = function_arguments(); - State = 946; - Match(T__30); + State = 954; + Match(T__32); Assert("phi", 1, _localctx.args.list.Count); _localctx.value = MathS.NumberTheory.Phi(_localctx.args.list[0]); } break; case 106: EnterOuterAlt(_localctx, 106); { - State = 949; - Match(T__146); - State = 950; + State = 957; + Match(T__148); + State = 958; _localctx.args = function_arguments(); - State = 951; - Match(T__30); + State = 959; + Match(T__32); Assert("prime", 1, _localctx.args.list.Count); _localctx.value = MathS.NumberTheory.Prime(_localctx.args.list[0]); } break; case 107: EnterOuterAlt(_localctx, 107); { - State = 954; - Match(T__147); - State = 955; + State = 962; + Match(T__149); + State = 963; _localctx.args = function_arguments(); - State = 956; - Match(T__30); + State = 964; + Match(T__32); Assert("valuation", 2, _localctx.args.list.Count); _localctx.value = MathS.NumberTheory.Valuation(_localctx.args.list[0], _localctx.args.list[1]); } break; case 108: EnterOuterAlt(_localctx, 108); { - State = 959; - Match(T__148); - State = 960; + State = 967; + Match(T__150); + State = 968; _localctx.args = function_arguments(); - State = 961; - Match(T__30); + State = 969; + Match(T__32); Assert("card", 1, _localctx.args.list.Count); _localctx.value = MathS.Sets.Card(_localctx.args.list[0]); } break; case 109: EnterOuterAlt(_localctx, 109); { - State = 964; - Match(T__149); - State = 965; + State = 972; + Match(T__151); + State = 973; _localctx.args = function_arguments(); - State = 966; - Match(T__30); + State = 974; + Match(T__32); Assert("powerset", 1, _localctx.args.list.Count); _localctx.value = MathS.Sets.PowerSet(_localctx.args.list[0]); } break; case 110: EnterOuterAlt(_localctx, 110); { - State = 969; - Match(T__150); - State = 970; + State = 977; + Match(T__152); + State = 978; _localctx.args = function_arguments(); - State = 971; - Match(T__30); + State = 979; + Match(T__32); Assert("union", 2, _localctx.args.list.Count); _localctx.value = _localctx.args.list[1] is Entity.Set.Inf { Element: Variable } unionRange ? MathS.Sets.IndexedUnion(_localctx.args.list[0], unionRange.Element, unionRange.SupSet) : throw new InvalidArgumentParseException("union expects its second argument to say which name ranges over which set, as in union(A_i, i in I)"); } break; case 111: EnterOuterAlt(_localctx, 111); { - State = 974; - Match(T__151); - State = 975; + State = 982; + Match(T__153); + State = 983; _localctx.args = function_arguments(); - State = 976; - Match(T__30); + State = 984; + Match(T__32); Assert("intersection", 2, _localctx.args.list.Count); _localctx.value = _localctx.args.list[1] is Entity.Set.Inf { Element: Variable } intersectionRange ? MathS.Sets.IndexedIntersection(_localctx.args.list[0], intersectionRange.Element, intersectionRange.SupSet) : throw new InvalidArgumentParseException("intersection expects its second argument to say which name ranges over which set, as in intersection(A_i, i in I)"); } break; case 112: EnterOuterAlt(_localctx, 112); { - State = 979; - Match(T__152); - State = 980; + State = 987; + Match(T__154); + State = 988; _localctx.args = function_arguments(); - State = 981; - Match(T__30); + State = 989; + Match(T__32); Assert("complement", 2, _localctx.args.list.Count); _localctx.value = MathS.Sets.Complement(_localctx.args.list[0], _localctx.args.list[1]); } break; case 113: EnterOuterAlt(_localctx, 113); { - State = 984; - Match(T__153); - State = 985; + State = 992; + Match(T__155); + State = 993; _localctx.args = function_arguments(); - State = 986; - Match(T__30); + State = 994; + Match(T__32); Assert("image", 2, _localctx.args.list.Count); _localctx.value = _localctx.args.list[1] is Entity.Set.Inf { Element: Variable } imageRange ? MathS.Sets.Image(_localctx.args.list[0], imageRange.Element, imageRange.SupSet) : throw new InvalidArgumentParseException("image expects its second argument to say which name ranges over which set, as in image(f(x), x in A)"); } break; case 114: EnterOuterAlt(_localctx, 114); { - State = 989; - Match(T__154); - State = 990; + State = 997; + Match(T__156); + State = 998; _localctx.args = function_arguments(); - State = 991; - Match(T__30); + State = 999; + Match(T__32); Assert("preimage", 3, _localctx.args.list.Count); _localctx.value = _localctx.args.list[1] is Entity.Set.Inf { Element: Variable } preimageRange ? MathS.Sets.PreImage(_localctx.args.list[0], preimageRange.Element, preimageRange.SupSet, _localctx.args.list[2]) : throw new InvalidArgumentParseException("preimage expects its second argument to say which name ranges over which set, as in preimage(f(x), x in A, Y)"); } break; case 115: EnterOuterAlt(_localctx, 115); { - State = 994; - Match(T__155); - State = 995; + State = 1002; + Match(T__157); + State = 1003; _localctx.args = function_arguments(); - State = 996; - Match(T__30); + State = 1004; + Match(T__32); Assert("floor", 1, _localctx.args.list.Count); _localctx.value = MathS.Floor(_localctx.args.list[0]); } break; case 116: EnterOuterAlt(_localctx, 116); { - State = 999; - Match(T__156); - State = 1000; + State = 1007; + Match(T__158); + State = 1008; _localctx.args = function_arguments(); - State = 1001; - Match(T__30); + State = 1009; + Match(T__32); Assert("ceil", 1, _localctx.args.list.Count); _localctx.value = MathS.Ceil(_localctx.args.list[0]); } break; case 117: EnterOuterAlt(_localctx, 117); { - State = 1004; - Match(T__157); - State = 1005; + State = 1012; + Match(T__159); + State = 1013; _localctx.args = function_arguments(); - State = 1006; - Match(T__30); + State = 1014; + Match(T__32); Assert("ceiling", 1, _localctx.args.list.Count); _localctx.value = MathS.Ceil(_localctx.args.list[0]); } break; case 118: EnterOuterAlt(_localctx, 118); { - State = 1009; - Match(T__158); - State = 1010; + State = 1017; + Match(T__160); + State = 1018; _localctx.args = function_arguments(); - State = 1011; - Match(T__30); + State = 1019; + Match(T__32); Assert("round", 1, _localctx.args.list.Count); _localctx.value = MathS.Round(_localctx.args.list[0]); } break; case 119: EnterOuterAlt(_localctx, 119); { - State = 1014; - Match(T__159); - State = 1015; + State = 1022; + Match(T__161); + State = 1023; _localctx.args = function_arguments(); - State = 1016; - Match(T__30); + State = 1024; + Match(T__32); AssertAtLeast("min", 1, _localctx.args.list.Count); _localctx.value = _localctx.args.list.Count == 1 && _localctx.args.list[0] is Entity.Set minSet ? MathS.Minimum(Variable.CreateUnique(minSet, "x"), Variable.CreateUnique(minSet, "x"), minSet) : _localctx.args.list.Count == 2 && AngouriMath.Functions.ExtremumOverSet.AsRange(_localctx.args.list[1]) is var (minVar, minOver) ? MathS.Minimum(_localctx.args.list[0], minVar, minOver) : _localctx.args.list.Aggregate((a, b) => MathS.Min(a, b)); } break; case 120: EnterOuterAlt(_localctx, 120); { - State = 1019; - Match(T__160); - State = 1020; + State = 1027; + Match(T__162); + State = 1028; _localctx.args = function_arguments(); - State = 1021; - Match(T__30); + State = 1029; + Match(T__32); AssertAtLeast("max", 1, _localctx.args.list.Count); _localctx.value = _localctx.args.list.Count == 1 && _localctx.args.list[0] is Entity.Set maxSet ? MathS.Maximum(Variable.CreateUnique(maxSet, "x"), Variable.CreateUnique(maxSet, "x"), maxSet) : _localctx.args.list.Count == 2 && AngouriMath.Functions.ExtremumOverSet.AsRange(_localctx.args.list[1]) is var (maxVar, maxOver) ? MathS.Maximum(_localctx.args.list[0], maxVar, maxOver) : _localctx.args.list.Aggregate((a, b) => MathS.Max(a, b)); } break; case 121: EnterOuterAlt(_localctx, 121); { - State = 1024; - Match(T__161); - State = 1025; + State = 1032; + Match(T__163); + State = 1033; _localctx.args = function_arguments(); - State = 1026; - Match(T__30); + State = 1034; + Match(T__32); Assert("argmax", 2, _localctx.args.list.Count); _localctx.value = _localctx.args.list[1] is Entity.Set.Inf { Element: Variable } argmaxRange ? MathS.Argmax(_localctx.args.list[0], argmaxRange.Element, argmaxRange.SupSet) : throw new InvalidArgumentParseException("argmax expects its second argument to say which variable ranges over which set, as in argmax(f(t), t in S)"); } break; case 122: EnterOuterAlt(_localctx, 122); { - State = 1029; - Match(T__162); - State = 1030; + State = 1037; + Match(T__164); + State = 1038; _localctx.args = function_arguments(); - State = 1031; - Match(T__30); + State = 1039; + Match(T__32); Assert("argmin", 2, _localctx.args.list.Count); _localctx.value = _localctx.args.list[1] is Entity.Set.Inf { Element: Variable } argminRange ? MathS.Argmin(_localctx.args.list[0], argminRange.Element, argminRange.SupSet) : throw new InvalidArgumentParseException("argmin expects its second argument to say which variable ranges over which set, as in argmin(f(t), t in S)"); } break; case 123: EnterOuterAlt(_localctx, 123); { - State = 1034; - Match(T__163); - State = 1035; + State = 1042; + Match(T__165); + State = 1043; _localctx.args = function_arguments(); - State = 1036; - Match(T__30); + State = 1044; + Match(T__32); AssertAtLeast("gcd", 1, _localctx.args.list.Count); _localctx.value = _localctx.args.list.Aggregate((a, b) => MathS.Gcd(a, b)); } break; case 124: EnterOuterAlt(_localctx, 124); { - State = 1039; - Match(T__164); - State = 1040; + State = 1047; + Match(T__166); + State = 1048; _localctx.args = function_arguments(); - State = 1041; - Match(T__30); + State = 1049; + Match(T__32); AssertAtLeast("lcm", 1, _localctx.args.list.Count); _localctx.value = _localctx.args.list.Aggregate((a, b) => MathS.Lcm(a, b)); } break; case 125: EnterOuterAlt(_localctx, 125); { - State = 1044; - Match(T__165); - State = 1045; + State = 1052; + Match(T__167); + State = 1053; _localctx.args = function_arguments(); - State = 1046; - Match(T__30); + State = 1054; + Match(T__32); Assert("binomial", 2, _localctx.args.list.Count); _localctx.value = MathS.Binomial(_localctx.args.list[0], _localctx.args.list[1]); } break; case 126: EnterOuterAlt(_localctx, 126); { - State = 1049; - Match(T__166); - State = 1050; + State = 1057; + Match(T__168); + State = 1058; _localctx.args = function_arguments(); - State = 1051; - Match(T__30); + State = 1059; + Match(T__32); Assert("iverson", 1, _localctx.args.list.Count); _localctx.value = MathS.Iverson(_localctx.args.list[0]); } break; case 127: EnterOuterAlt(_localctx, 127); { - State = 1054; - Match(T__167); - State = 1055; + State = 1062; + Match(T__169); + State = 1063; _localctx.args = function_arguments(); - State = 1056; - Match(T__30); + State = 1064; + Match(T__32); Assert("aleph", 1, _localctx.args.list.Count); _localctx.value = MathS.Aleph(_localctx.args.list[0]); } break; case 128: EnterOuterAlt(_localctx, 128); { - State = 1059; - Match(T__168); - State = 1060; + State = 1067; + Match(T__170); + State = 1068; _localctx.args = function_arguments(); - State = 1061; - Match(T__30); + State = 1069; + Match(T__32); Assert("erf", 1, _localctx.args.list.Count); _localctx.value = MathS.Erf(_localctx.args.list[0]); } break; case 129: EnterOuterAlt(_localctx, 129); { - State = 1064; - Match(T__169); - State = 1065; + State = 1072; + Match(T__171); + State = 1073; _localctx.args = function_arguments(); - State = 1066; - Match(T__30); + State = 1074; + Match(T__32); Assert("erfc", 1, _localctx.args.list.Count); _localctx.value = MathS.Erfc(_localctx.args.list[0]); } break; case 130: EnterOuterAlt(_localctx, 130); { - State = 1069; - Match(T__170); - State = 1070; + State = 1077; + Match(T__172); + State = 1078; _localctx.args = function_arguments(); - State = 1071; - Match(T__30); + State = 1079; + Match(T__32); Assert("erfi", 1, _localctx.args.list.Count); _localctx.value = MathS.Erfi(_localctx.args.list[0]); } break; case 131: EnterOuterAlt(_localctx, 131); { - State = 1074; - Match(T__171); - State = 1075; + State = 1082; + Match(T__173); + State = 1083; _localctx.args = function_arguments(); - State = 1076; - Match(T__30); + State = 1084; + Match(T__32); Assert("Ei", 1, _localctx.args.list.Count); _localctx.value = MathS.Ei(_localctx.args.list[0]); } break; case 132: EnterOuterAlt(_localctx, 132); { - State = 1079; - Match(T__172); - State = 1080; + State = 1087; + Match(T__174); + State = 1088; _localctx.args = function_arguments(); - State = 1081; - Match(T__30); + State = 1089; + Match(T__32); Assert("li", 1, _localctx.args.list.Count); _localctx.value = MathS.Li(_localctx.args.list[0]); } break; case 133: EnterOuterAlt(_localctx, 133); { - State = 1084; - Match(T__173); - State = 1085; + State = 1092; + Match(T__175); + State = 1093; _localctx.args = function_arguments(); - State = 1086; - Match(T__30); + State = 1094; + Match(T__32); Assert("polygamma", 2, _localctx.args.list.Count); _localctx.value = MathS.Polygamma(_localctx.args.list[0], _localctx.args.list[1]); } break; case 134: EnterOuterAlt(_localctx, 134); { - State = 1089; - Match(T__174); - State = 1090; + State = 1097; + Match(T__176); + State = 1098; _localctx.args = function_arguments(); - State = 1091; - Match(T__30); + State = 1099; + Match(T__32); Assert("digamma", 1, _localctx.args.list.Count); _localctx.value = MathS.Digamma(_localctx.args.list[0]); } break; case 135: EnterOuterAlt(_localctx, 135); { - State = 1094; - Match(T__175); - State = 1095; + State = 1102; + Match(T__177); + State = 1103; _localctx.args = function_arguments(); - State = 1096; - Match(T__30); + State = 1104; + Match(T__32); Assert("Si", 1, _localctx.args.list.Count); _localctx.value = MathS.Si(_localctx.args.list[0]); } break; case 136: EnterOuterAlt(_localctx, 136); { - State = 1099; - Match(T__176); - State = 1100; + State = 1107; + Match(T__178); + State = 1108; _localctx.args = function_arguments(); - State = 1101; - Match(T__30); + State = 1109; + Match(T__32); Assert("Ci", 1, _localctx.args.list.Count); _localctx.value = MathS.Ci(_localctx.args.list[0]); } break; case 137: EnterOuterAlt(_localctx, 137); { - State = 1104; - Match(T__177); - State = 1105; + State = 1112; + Match(T__179); + State = 1113; _localctx.args = function_arguments(); - State = 1106; - Match(T__30); + State = 1114; + Match(T__32); Assert("Shi", 1, _localctx.args.list.Count); _localctx.value = MathS.Shi(_localctx.args.list[0]); } break; case 138: EnterOuterAlt(_localctx, 138); { - State = 1109; - Match(T__178); - State = 1110; + State = 1117; + Match(T__180); + State = 1118; _localctx.args = function_arguments(); - State = 1111; - Match(T__30); + State = 1119; + Match(T__32); Assert("Chi", 1, _localctx.args.list.Count); _localctx.value = MathS.Chi(_localctx.args.list[0]); } break; case 139: EnterOuterAlt(_localctx, 139); { - State = 1114; - Match(T__179); - State = 1115; + State = 1122; + Match(T__181); + State = 1123; _localctx.args = function_arguments(); - State = 1116; - Match(T__30); + State = 1124; + Match(T__32); Assert("det", 1, _localctx.args.list.Count); _localctx.value = ParsingHelpers.Determinant(_localctx.args.list[0]); } break; case 140: EnterOuterAlt(_localctx, 140); { - State = 1119; - Match(T__180); - State = 1120; + State = 1127; + Match(T__182); + State = 1128; _localctx.args = function_arguments(); - State = 1121; - Match(T__30); + State = 1129; + Match(T__32); Assert("transpose", 1, _localctx.args.list.Count); _localctx.value = ParsingHelpers.Transposed(_localctx.args.list[0]); } break; case 141: EnterOuterAlt(_localctx, 141); { - State = 1124; - Match(T__181); - State = 1125; + State = 1132; + Match(T__183); + State = 1133; _localctx.args = function_arguments(); - State = 1126; - Match(T__30); + State = 1134; + Match(T__32); Assert("dot", 2, _localctx.args.list.Count); _localctx.value = ParsingHelpers.Dot(_localctx.args.list[0], _localctx.args.list[1]); } break; case 142: EnterOuterAlt(_localctx, 142); { - State = 1129; - Match(T__182); - State = 1130; + State = 1137; + Match(T__184); + State = 1138; _localctx.args = function_arguments(); - State = 1131; - Match(T__30); + State = 1139; + Match(T__32); Assert("cross", (1, 2), _localctx.args.list.Count); _localctx.value = ParsingHelpers.Cross(_localctx.args.list); } break; case 143: EnterOuterAlt(_localctx, 143); { - State = 1134; - Match(T__183); - State = 1135; + State = 1142; + Match(T__185); + State = 1143; _localctx.args = function_arguments(); - State = 1136; - Match(T__30); + State = 1144; + Match(T__32); Assert("resultant", 3, _localctx.args.list.Count); _localctx.value = ParsingHelpers.Resultant(_localctx.args.list[0], _localctx.args.list[1], _localctx.args.list[2]); } break; case 144: EnterOuterAlt(_localctx, 144); { - State = 1139; - Match(T__184); - State = 1140; + State = 1147; + Match(T__186); + State = 1148; _localctx.args = function_arguments(); - State = 1141; - Match(T__30); + State = 1149; + Match(T__32); Assert("conjugate", 1, _localctx.args.list.Count); _localctx.value = MathS.Conjugate(_localctx.args.list[0]); } break; case 145: EnterOuterAlt(_localctx, 145); { - State = 1144; - Match(T__185); - State = 1145; + State = 1152; + Match(T__187); + State = 1153; _localctx.args = function_arguments(); - State = 1146; - Match(T__30); + State = 1154; + Match(T__32); Assert("conj", 1, _localctx.args.list.Count); _localctx.value = MathS.Conjugate(_localctx.args.list[0]); } break; case 146: EnterOuterAlt(_localctx, 146); { - State = 1149; - Match(T__186); - State = 1150; + State = 1157; + Match(T__188); + State = 1158; _localctx.args = function_arguments(); - State = 1151; - Match(T__30); + State = 1159; + Match(T__32); Assert("arg", 1, _localctx.args.list.Count); _localctx.value = MathS.Arg(_localctx.args.list[0]); } break; case 147: EnterOuterAlt(_localctx, 147); { - State = 1154; - Match(T__187); - State = 1155; + State = 1162; + Match(T__189); + State = 1163; _localctx.args = function_arguments(); - State = 1156; - Match(T__30); + State = 1164; + Match(T__32); Assert("Re", 1, _localctx.args.list.Count); _localctx.value = MathS.Re(_localctx.args.list[0]); } break; case 148: EnterOuterAlt(_localctx, 148); { - State = 1159; - Match(T__188); - State = 1160; + State = 1167; + Match(T__190); + State = 1168; _localctx.args = function_arguments(); - State = 1161; - Match(T__30); + State = 1169; + Match(T__32); Assert("Im", 1, _localctx.args.list.Count); _localctx.value = MathS.Im(_localctx.args.list[0]); } break; case 149: EnterOuterAlt(_localctx, 149); { - State = 1164; - Match(T__189); - State = 1165; + State = 1172; + Match(T__191); + State = 1173; _localctx.args = function_arguments(); - State = 1166; - Match(T__30); + State = 1174; + Match(T__32); Assert("re", 1, _localctx.args.list.Count); _localctx.value = MathS.Re(_localctx.args.list[0]); } break; case 150: EnterOuterAlt(_localctx, 150); { - State = 1169; - Match(T__190); - State = 1170; + State = 1177; + Match(T__192); + State = 1178; _localctx.args = function_arguments(); - State = 1171; - Match(T__30); + State = 1179; + Match(T__32); Assert("real", 1, _localctx.args.list.Count); _localctx.value = MathS.Re(_localctx.args.list[0]); } break; case 151: EnterOuterAlt(_localctx, 151); { - State = 1174; - Match(T__191); - State = 1175; + State = 1182; + Match(T__193); + State = 1183; _localctx.args = function_arguments(); - State = 1176; - Match(T__30); + State = 1184; + Match(T__32); Assert("im", 1, _localctx.args.list.Count); _localctx.value = MathS.Im(_localctx.args.list[0]); } break; case 152: EnterOuterAlt(_localctx, 152); { - State = 1179; - Match(T__192); - State = 1180; + State = 1187; + Match(T__194); + State = 1188; _localctx.args = function_arguments(); - State = 1181; - Match(T__30); + State = 1189; + Match(T__32); Assert("imag", 1, _localctx.args.list.Count); _localctx.value = MathS.Im(_localctx.args.list[0]); } break; case 153: EnterOuterAlt(_localctx, 153); { - State = 1184; - Match(T__193); - State = 1185; + State = 1192; + Match(T__195); + State = 1193; _localctx.args = function_arguments(); - State = 1186; - Match(T__30); + State = 1194; + Match(T__32); _localctx.value = NotImplementedFunction("trunc", "rounding functions"); } break; case 154: EnterOuterAlt(_localctx, 154); { - State = 1189; - Match(T__194); - State = 1190; + State = 1197; + Match(T__196); + State = 1198; _localctx.args = function_arguments(); - State = 1191; - Match(T__30); + State = 1199; + Match(T__32); _localctx.value = NotImplementedFunction("zeta", "Riemann or Hurwitz zeta function yet"); } break; case 155: EnterOuterAlt(_localctx, 155); { - State = 1194; - Match(T__195); - State = 1195; + State = 1202; + Match(T__197); + State = 1203; _localctx.args = function_arguments(); - State = 1196; - Match(T__30); + State = 1204; + Match(T__32); _localctx.value = NotImplementedFunction("riemannzeta", "Riemann zeta function yet"); } break; case 156: EnterOuterAlt(_localctx, 156); { - State = 1199; - Match(T__196); - State = 1200; + State = 1207; + Match(T__198); + State = 1208; _localctx.args = function_arguments(); - State = 1201; - Match(T__30); + State = 1209; + Match(T__32); _localctx.value = NotImplementedFunction("hurwitzzeta", "Hurwitz zeta function yet"); } break; case 157: EnterOuterAlt(_localctx, 157); { - State = 1204; - Match(T__197); - State = 1205; + State = 1212; + Match(T__199); + State = 1213; _localctx.args = function_arguments(); - State = 1206; - Match(T__30); + State = 1214; + Match(T__32); _localctx.value = NotImplementedFunction("lambertw", "Lambert W function yet"); } break; case 158: EnterOuterAlt(_localctx, 158); { - State = 1209; - Match(T__198); - State = 1210; + State = 1217; + Match(T__200); + State = 1218; _localctx.args = function_arguments(); - State = 1211; - Match(T__30); + State = 1219; + Match(T__32); _localctx.value = NotImplementedFunction("productlog", "Lambert W function yet"); } break; case 159: EnterOuterAlt(_localctx, 159); { - State = 1214; - Match(T__199); - State = 1215; + State = 1222; + Match(T__201); + State = 1223; _localctx.args = function_arguments(); - State = 1216; - Match(T__30); + State = 1224; + Match(T__32); _localctx.value = NotImplementedFunction("mobius", "Mobius function yet"); } break; case 160: EnterOuterAlt(_localctx, 160); { - State = 1219; - Match(T__200); - State = 1220; + State = 1227; + Match(T__202); + State = 1228; _localctx.args = function_arguments(); - State = 1221; - Match(T__30); + State = 1229; + Match(T__32); _localctx.value = NotImplementedFunction("moebiusmu", "Mobius function yet"); } break; case 161: EnterOuterAlt(_localctx, 161); { - State = 1224; - Match(T__201); - State = 1225; + State = 1232; + Match(T__203); + State = 1233; _localctx.args = function_arguments(); - State = 1226; - Match(T__30); + State = 1234; + Match(T__32); _localctx.value = NotImplementedFunction("divisorsigma", "divisor function yet"); } break; case 162: EnterOuterAlt(_localctx, 162); { - State = 1229; - Match(T__202); - State = 1230; + State = 1237; + Match(T__204); + State = 1238; _localctx.args = function_arguments(); - State = 1231; - Match(T__30); + State = 1239; + Match(T__32); _localctx.value = NotImplementedFunction("primenu", "count of distinct prime factors yet"); } break; case 163: EnterOuterAlt(_localctx, 163); { - State = 1234; - Match(T__203); - State = 1235; + State = 1242; + Match(T__205); + State = 1243; _localctx.args = function_arguments(); - State = 1236; - Match(T__30); + State = 1244; + Match(T__32); _localctx.value = NotImplementedFunction("primeomega", "count of prime factors with multiplicity yet"); } break; case 164: EnterOuterAlt(_localctx, 164); { - State = 1239; - Match(T__204); - State = 1240; + State = 1247; + Match(T__206); + State = 1248; _localctx.args = function_arguments(); - State = 1241; - Match(T__30); + State = 1249; + Match(T__32); _localctx.value = NotImplementedFunction("primepi", "prime-counting function yet"); } break; case 165: EnterOuterAlt(_localctx, 165); { - State = 1244; - Match(T__205); - State = 1245; + State = 1252; + Match(T__207); + State = 1253; _localctx.args = function_arguments(); - State = 1246; - Match(T__30); + State = 1254; + Match(T__32); _localctx.value = NotImplementedFunction("harmonicnumber", "harmonic numbers yet"); } break; case 166: EnterOuterAlt(_localctx, 166); { - State = 1249; - Match(T__206); - State = 1250; + State = 1257; + Match(T__208); + State = 1258; _localctx.args = function_arguments(); - State = 1251; - Match(T__30); + State = 1259; + Match(T__32); _localctx.value = NotImplementedFunction("catalannumber", "Catalan numbers yet"); } break; case 167: EnterOuterAlt(_localctx, 167); { - State = 1254; - Match(T__207); - State = 1255; + State = 1262; + Match(T__209); + State = 1263; _localctx.args = function_arguments(); - State = 1256; - Match(T__30); + State = 1264; + Match(T__32); _localctx.value = NotImplementedFunction("multinomial", "multinomial coefficients yet"); } break; case 168: EnterOuterAlt(_localctx, 168); { - State = 1259; - Match(T__208); - State = 1260; + State = 1267; + Match(T__210); + State = 1268; _localctx.args = function_arguments(); - State = 1261; - Match(T__30); + State = 1269; + Match(T__32); _localctx.value = NotImplementedFunction("fallingfactorial", "falling factorial yet"); } break; case 169: EnterOuterAlt(_localctx, 169); { - State = 1264; - Match(T__209); - State = 1265; + State = 1272; + Match(T__211); + State = 1273; _localctx.args = function_arguments(); - State = 1266; - Match(T__30); + State = 1274; + Match(T__32); _localctx.value = NotImplementedFunction("factorialpower", "falling factorial yet"); } break; case 170: EnterOuterAlt(_localctx, 170); { - State = 1269; - Match(T__210); - State = 1270; + State = 1277; + Match(T__212); + State = 1278; _localctx.args = function_arguments(); - State = 1271; - Match(T__30); + State = 1279; + Match(T__32); _localctx.value = NotImplementedFunction("risingfactorial", "rising factorial yet"); } break; case 171: EnterOuterAlt(_localctx, 171); { - State = 1274; - Match(T__211); - State = 1275; + State = 1282; + Match(T__213); + State = 1283; _localctx.args = function_arguments(); - State = 1276; - Match(T__30); + State = 1284; + Match(T__32); _localctx.value = NotImplementedFunction("forwarddifference", "forward difference yet"); } break; case 172: EnterOuterAlt(_localctx, 172); { - State = 1279; - Match(T__212); - State = 1280; + State = 1287; + Match(T__214); + State = 1288; _localctx.args = function_arguments(); - State = 1281; - Match(T__30); + State = 1289; + Match(T__32); _localctx.value = NotImplementedFunction("laplacian", "Laplacian yet"); } break; case 173: EnterOuterAlt(_localctx, 173); { - State = 1284; - Match(T__213); - State = 1285; + State = 1292; + Match(T__215); + State = 1293; _localctx.args = function_arguments(); - State = 1286; - Match(T__30); + State = 1294; + Match(T__32); _localctx.value = NotImplementedFunction("jacobian", "Jacobian yet"); } break; case 174: EnterOuterAlt(_localctx, 174); { - State = 1289; - Match(T__214); - State = 1290; + State = 1297; + Match(T__216); + State = 1298; _localctx.args = function_arguments(); - State = 1291; - Match(T__30); + State = 1299; + Match(T__32); _localctx.value = NotImplementedFunction("hessian", "Hessian yet"); } break; case 175: EnterOuterAlt(_localctx, 175); { - State = 1294; - Match(T__215); - State = 1295; + State = 1302; + Match(T__217); + State = 1303; _localctx.args = function_arguments(); - State = 1296; - Match(T__30); + State = 1304; + Match(T__32); _localctx.value = NotAFunctionHere("heaviside", "its value at 0 is 0, 1/2 or 1 by source; write iverson(x > 0), iverson(x >= 0) or (1 + sgn(x))/2"); } break; case 176: EnterOuterAlt(_localctx, 176); { - State = 1299; - Match(T__216); - State = 1300; + State = 1307; + Match(T__218); + State = 1308; _localctx.args = function_arguments(); - State = 1301; - Match(T__30); + State = 1309; + Match(T__32); _localctx.value = NotAFunctionHere("unitstep", "write iverson(x >= 0), which is 1 at 0"); } break; case 177: EnterOuterAlt(_localctx, 177); { - State = 1304; - Match(T__217); - State = 1305; + State = 1312; + Match(T__219); + State = 1313; _localctx.args = function_arguments(); - State = 1306; - Match(T__30); + State = 1314; + Match(T__32); _localctx.value = NotAFunctionHere("isprime", "write n in PP"); } break; case 178: EnterOuterAlt(_localctx, 178); { - State = 1309; - Match(T__218); - State = 1310; + State = 1317; + Match(T__220); + State = 1318; _localctx.args = function_arguments(); - State = 1311; - Match(T__30); + State = 1319; + Match(T__32); _localctx.value = NotAFunctionHere("pochhammer", "(x)_n is the rising factorial to some and the falling one to others; write risingfactorial or fallingfactorial"); } break; case 179: EnterOuterAlt(_localctx, 179); { - State = 1314; - Match(T__219); - State = 1315; + State = 1322; + Match(T__221); + State = 1323; _localctx.args = function_arguments(); - State = 1316; - Match(T__30); - _localctx.value = NotAFunctionHere("doublefactorial", "the double factorial is to be the postfix n!!, which is not implemented yet"); + State = 1324; + Match(T__32); + _localctx.value = NotAFunctionHere("doublefactorial", "the double factorial is the postfix n!!"); } break; case 180: EnterOuterAlt(_localctx, 180); { - State = 1319; - Match(T__220); - State = 1320; + State = 1327; + Match(T__222); + State = 1328; _localctx.args = function_arguments(); - State = 1321; - Match(T__30); - _localctx.value = NotAFunctionHere("factorial2", "the double factorial is to be the postfix n!!, which is not implemented yet"); + State = 1329; + Match(T__32); + _localctx.value = NotAFunctionHere("factorial2", "the double factorial is the postfix n!!"); } break; case 181: EnterOuterAlt(_localctx, 181); { - State = 1324; - Match(T__221); - State = 1325; + State = 1332; + Match(T__223); + State = 1333; _localctx.args = function_arguments(); - State = 1326; - Match(T__30); + State = 1334; + Match(T__32); _localctx.value = NotAFunctionHere("fractionalpart", "write x mod 1, which is in [0, 1)"); } break; case 182: EnterOuterAlt(_localctx, 182); { - State = 1329; - Match(T__222); - State = 1330; + State = 1337; + Match(T__224); + State = 1338; _localctx.args = function_arguments(); - State = 1331; - Match(T__30); + State = 1339; + Match(T__32); _localctx.value = NotAFunctionHere("quotient", "write floor(a / b)"); } break; case 183: EnterOuterAlt(_localctx, 183); { - State = 1334; - Match(T__223); - State = 1335; + State = 1342; + Match(T__225); + State = 1343; _localctx.args = function_arguments(); - State = 1336; - Match(T__30); + State = 1344; + Match(T__32); Assert("domain", 2, _localctx.args.list.Count); // `Any` is the unrestricted codomain. It is read here rather than lexed as a @@ -5734,12 +5754,12 @@ public AtomContext atom() { case 184: EnterOuterAlt(_localctx, 184); { - State = 1339; - Match(T__224); - State = 1340; + State = 1347; + Match(T__226); + State = 1348; _localctx.args = function_arguments(); - State = 1341; - Match(T__30); + State = 1349; + Match(T__32); var cases = new List(); foreach (var arg in _localctx.args.list) @@ -5754,12 +5774,12 @@ public AtomContext atom() { case 185: EnterOuterAlt(_localctx, 185); { - State = 1344; - Match(T__225); - State = 1345; + State = 1352; + Match(T__227); + State = 1353; _localctx.args = function_arguments(); - State = 1346; - Match(T__30); + State = 1354; + Match(T__32); if (_localctx.args.list.Count < 2) throw new FunctionArgumentCountException("Should be at least one argument in apply function"); @@ -5770,12 +5790,12 @@ public AtomContext atom() { case 186: EnterOuterAlt(_localctx, 186); { - State = 1349; - Match(T__226); - State = 1350; + State = 1357; + Match(T__228); + State = 1358; _localctx.args = function_arguments(); - State = 1351; - Match(T__30); + State = 1359; + Match(T__32); if (_localctx.args.list.Count < 2) throw new FunctionArgumentCountException("Should be at least two arguments in lambda function"); @@ -5837,9 +5857,9 @@ public StatementContext statement() { try { EnterOuterAlt(_localctx, 1); { - State = 1356; + State = 1364; _localctx._expression = expression(); - State = 1357; + State = 1365; Match(Eof); Result = _localctx._expression.value; } @@ -5856,38 +5876,38 @@ public StatementContext statement() { } private static int[] _serializedATN = { - 4,1,235,1361,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, + 4,1,237,1369,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, 7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14, 2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21, - 2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3, - 0,60,8,0,1,1,1,1,1,1,1,1,4,1,66,8,1,11,1,12,1,67,1,1,1,1,1,1,1,1,4,1,74, - 8,1,11,1,12,1,75,3,1,78,8,1,1,2,1,2,1,2,1,2,1,2,3,2,85,8,2,1,3,1,3,1,3, - 1,3,1,3,1,3,1,3,1,3,3,3,95,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,105, - 8,3,1,3,1,3,1,3,3,3,110,8,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,120,8, - 4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,5,4,130,8,4,10,4,12,4,133,9,4,1,4,1, - 4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,145,8,5,1,5,1,5,1,5,1,5,5,5,151, - 8,5,10,5,12,5,154,9,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6, - 5,6,168,8,6,10,6,12,6,171,9,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7, - 1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,5,7,191,8,7,10,7,12,7,194,9,7,1,8,1,8, + 2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,68,8,0,1,1,1,1,1,1,1,1,4,1,74,8,1,11, + 1,12,1,75,1,1,1,1,1,1,1,1,4,1,82,8,1,11,1,12,1,83,3,1,86,8,1,1,2,1,2,1, + 2,1,2,1,2,3,2,93,8,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,103,8,3,1,3,1, + 3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,113,8,3,1,3,1,3,1,3,3,3,118,8,3,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,3,4,128,8,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,5, + 4,138,8,4,10,4,12,4,141,9,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3, + 5,153,8,5,1,5,1,5,1,5,1,5,5,5,159,8,5,10,5,12,5,162,9,5,1,5,1,5,1,6,1, + 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,5,6,176,8,6,10,6,12,6,179,9,6,1,7,1, + 7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,5,7, + 199,8,7,10,7,12,7,202,9,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,226,8,8,10,8,12,8,229,9, - 8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9, - 247,8,9,1,9,1,9,1,9,5,9,252,8,9,10,9,12,9,255,9,9,1,9,1,9,1,9,1,9,1,9, - 1,9,3,9,263,8,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1, - 10,1,10,1,10,1,10,1,10,1,10,3,10,282,8,10,1,11,1,11,1,11,1,11,1,11,1,11, - 1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,5,11,298,8,11,10,11,12,11,301, - 9,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,5,12,313,8,12,10, - 12,12,12,316,9,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,5, - 13,328,8,13,10,13,12,13,331,9,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1, - 14,1,14,1,14,1,14,1,14,1,14,1,14,5,14,347,8,14,10,14,12,14,350,9,14,1, - 15,1,15,1,15,1,15,1,15,1,15,3,15,358,8,15,1,16,1,16,1,16,1,16,1,16,1,16, - 3,16,366,8,16,1,16,1,16,1,16,3,16,371,8,16,1,17,1,17,1,17,1,17,1,17,1, - 17,1,18,1,18,1,18,1,18,1,18,1,18,3,18,385,8,18,1,19,1,19,1,19,1,19,1,19, - 1,19,5,19,393,8,19,10,19,12,19,396,9,19,1,19,1,19,1,20,1,20,1,20,1,20, - 1,20,1,20,5,20,406,8,20,10,20,12,20,409,9,20,3,20,411,8,20,1,21,1,21,1, - 21,1,21,1,21,3,21,418,8,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,426,8,21, - 5,21,428,8,21,10,21,12,21,431,9,21,3,21,433,8,21,1,22,1,22,1,22,1,22,1, - 22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1, + 8,1,8,5,8,234,8,8,10,8,12,8,237,9,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1, + 9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9,255,8,9,1,9,1,9,1,9,5,9,260,8,9,10,9, + 12,9,263,9,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9,271,8,9,1,9,1,9,1,10,1,10,1,10, + 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,290,8, + 10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1, + 11,5,11,306,8,11,10,11,12,11,309,9,11,1,12,1,12,1,12,1,12,1,12,1,12,1, + 12,1,12,1,12,1,12,5,12,321,8,12,10,12,12,12,324,9,12,1,13,1,13,1,13,1, + 13,1,13,1,13,1,13,1,13,1,13,1,13,5,13,336,8,13,10,13,12,13,339,9,13,1, + 14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,5, + 14,355,8,14,10,14,12,14,358,9,14,1,15,1,15,1,15,1,15,1,15,1,15,3,15,366, + 8,15,1,16,1,16,1,16,1,16,1,16,1,16,3,16,374,8,16,1,16,1,16,1,16,3,16,379, + 8,16,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,3,18, + 393,8,18,1,19,1,19,1,19,1,19,1,19,1,19,5,19,401,8,19,10,19,12,19,404,9, + 19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,5,20,414,8,20,10,20,12,20,417, + 9,20,3,20,419,8,20,1,21,1,21,1,21,1,21,1,21,3,21,426,8,21,1,21,1,21,1, + 21,1,21,1,21,1,21,3,21,434,8,21,5,21,436,8,21,10,21,12,21,439,9,21,3,21, + 441,8,21,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1, 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1, 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1, 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1, @@ -5952,403 +5972,406 @@ public StatementContext statement() { 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1, 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1, 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1, - 24,1,24,1,24,1,24,1,24,1,24,3,24,1355,8,24,1,25,1,25,1,25,1,25,1,25,0, - 0,26,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46, - 48,50,0,6,1,0,6,7,1,0,33,34,1,0,37,38,1,0,42,43,1,0,44,45,1,0,46,47,1581, - 0,59,1,0,0,0,2,77,1,0,0,0,4,79,1,0,0,0,6,109,1,0,0,0,8,111,1,0,0,0,10, - 136,1,0,0,0,12,157,1,0,0,0,14,172,1,0,0,0,16,195,1,0,0,0,18,230,1,0,0, - 0,20,281,1,0,0,0,22,283,1,0,0,0,24,302,1,0,0,0,26,317,1,0,0,0,28,332,1, - 0,0,0,30,351,1,0,0,0,32,370,1,0,0,0,34,372,1,0,0,0,36,384,1,0,0,0,38,386, - 1,0,0,0,40,410,1,0,0,0,42,432,1,0,0,0,44,434,1,0,0,0,46,440,1,0,0,0,48, - 1354,1,0,0,0,50,1356,1,0,0,0,52,53,3,48,24,0,53,54,5,1,0,0,54,55,6,0,-1, - 0,55,60,1,0,0,0,56,57,3,48,24,0,57,58,6,0,-1,0,58,60,1,0,0,0,59,52,1,0, - 0,0,59,56,1,0,0,0,60,1,1,0,0,0,61,62,5,2,0,0,62,63,3,0,0,0,63,64,6,1,-1, - 0,64,66,1,0,0,0,65,61,1,0,0,0,66,67,1,0,0,0,67,65,1,0,0,0,67,68,1,0,0, - 0,68,78,1,0,0,0,69,70,5,2,0,0,70,71,3,6,3,0,71,72,6,1,-1,0,72,74,1,0,0, - 0,73,69,1,0,0,0,74,75,1,0,0,0,75,73,1,0,0,0,75,76,1,0,0,0,76,78,1,0,0, - 0,77,65,1,0,0,0,77,73,1,0,0,0,78,3,1,0,0,0,79,80,3,0,0,0,80,84,6,2,-1, - 0,81,82,3,2,1,0,82,83,6,2,-1,0,83,85,1,0,0,0,84,81,1,0,0,0,84,85,1,0,0, - 0,85,5,1,0,0,0,86,87,5,3,0,0,87,88,3,4,2,0,88,89,6,3,-1,0,89,95,1,0,0, - 0,90,91,5,4,0,0,91,92,3,4,2,0,92,93,6,3,-1,0,93,95,1,0,0,0,94,86,1,0,0, - 0,94,90,1,0,0,0,95,110,1,0,0,0,96,97,5,3,0,0,97,98,3,6,3,0,98,99,6,3,-1, - 0,99,105,1,0,0,0,100,101,5,4,0,0,101,102,3,6,3,0,102,103,6,3,-1,0,103, - 105,1,0,0,0,104,96,1,0,0,0,104,100,1,0,0,0,105,110,1,0,0,0,106,107,3,4, - 2,0,107,108,6,3,-1,0,108,110,1,0,0,0,109,94,1,0,0,0,109,104,1,0,0,0,109, - 106,1,0,0,0,110,7,1,0,0,0,111,112,3,6,3,0,112,131,6,4,-1,0,113,119,5,5, - 0,0,114,115,7,0,0,0,115,120,6,4,-1,0,116,117,3,6,3,0,117,118,6,4,-1,0, - 118,120,1,0,0,0,119,114,1,0,0,0,119,116,1,0,0,0,120,130,1,0,0,0,121,122, - 5,8,0,0,122,123,3,6,3,0,123,124,6,4,-1,0,124,130,1,0,0,0,125,126,5,9,0, - 0,126,127,3,6,3,0,127,128,6,4,-1,0,128,130,1,0,0,0,129,113,1,0,0,0,129, - 121,1,0,0,0,129,125,1,0,0,0,130,133,1,0,0,0,131,129,1,0,0,0,131,132,1, - 0,0,0,132,134,1,0,0,0,133,131,1,0,0,0,134,135,6,4,-1,0,135,9,1,0,0,0,136, - 137,3,8,4,0,137,152,6,5,-1,0,138,144,5,4,0,0,139,140,7,0,0,0,140,145,6, - 5,-1,0,141,142,3,8,4,0,142,143,6,5,-1,0,143,145,1,0,0,0,144,139,1,0,0, - 0,144,141,1,0,0,0,145,151,1,0,0,0,146,147,5,3,0,0,147,148,3,8,4,0,148, - 149,6,5,-1,0,149,151,1,0,0,0,150,138,1,0,0,0,150,146,1,0,0,0,151,154,1, - 0,0,0,152,150,1,0,0,0,152,153,1,0,0,0,153,155,1,0,0,0,154,152,1,0,0,0, - 155,156,6,5,-1,0,156,11,1,0,0,0,157,158,3,10,5,0,158,169,6,6,-1,0,159, - 160,5,10,0,0,160,161,3,10,5,0,161,162,6,6,-1,0,162,168,1,0,0,0,163,164, - 5,11,0,0,164,165,3,10,5,0,165,166,6,6,-1,0,166,168,1,0,0,0,167,159,1,0, - 0,0,167,163,1,0,0,0,168,171,1,0,0,0,169,167,1,0,0,0,169,170,1,0,0,0,170, - 13,1,0,0,0,171,169,1,0,0,0,172,173,3,12,6,0,173,192,6,7,-1,0,174,175,5, - 12,0,0,175,176,3,12,6,0,176,177,6,7,-1,0,177,191,1,0,0,0,178,179,5,13, - 0,0,179,180,3,12,6,0,180,181,6,7,-1,0,181,191,1,0,0,0,182,183,5,14,0,0, - 183,184,3,12,6,0,184,185,6,7,-1,0,185,191,1,0,0,0,186,187,5,15,0,0,187, - 188,3,12,6,0,188,189,6,7,-1,0,189,191,1,0,0,0,190,174,1,0,0,0,190,178, - 1,0,0,0,190,182,1,0,0,0,190,186,1,0,0,0,191,194,1,0,0,0,192,190,1,0,0, - 0,192,193,1,0,0,0,193,15,1,0,0,0,194,192,1,0,0,0,195,196,3,14,7,0,196, - 227,6,8,-1,0,197,198,5,16,0,0,198,199,3,14,7,0,199,200,6,8,-1,0,200,226, - 1,0,0,0,201,202,5,17,0,0,202,203,3,14,7,0,203,204,6,8,-1,0,204,226,1,0, - 0,0,205,206,5,18,0,0,206,207,3,14,7,0,207,208,6,8,-1,0,208,226,1,0,0,0, - 209,210,5,19,0,0,210,211,3,14,7,0,211,212,6,8,-1,0,212,226,1,0,0,0,213, - 214,5,20,0,0,214,215,3,14,7,0,215,216,6,8,-1,0,216,226,1,0,0,0,217,218, - 5,21,0,0,218,219,3,14,7,0,219,220,6,8,-1,0,220,226,1,0,0,0,221,222,5,22, - 0,0,222,223,3,14,7,0,223,224,6,8,-1,0,224,226,1,0,0,0,225,197,1,0,0,0, - 225,201,1,0,0,0,225,205,1,0,0,0,225,209,1,0,0,0,225,213,1,0,0,0,225,217, - 1,0,0,0,225,221,1,0,0,0,226,229,1,0,0,0,227,225,1,0,0,0,227,228,1,0,0, - 0,228,17,1,0,0,0,229,227,1,0,0,0,230,231,3,16,8,0,231,253,6,9,-1,0,232, - 233,5,23,0,0,233,247,6,9,-1,0,234,235,5,24,0,0,235,247,6,9,-1,0,236,237, - 5,25,0,0,237,247,6,9,-1,0,238,239,5,26,0,0,239,247,6,9,-1,0,240,241,5, - 27,0,0,241,247,6,9,-1,0,242,243,5,28,0,0,243,247,6,9,-1,0,244,245,5,29, - 0,0,245,247,6,9,-1,0,246,232,1,0,0,0,246,234,1,0,0,0,246,236,1,0,0,0,246, - 238,1,0,0,0,246,240,1,0,0,0,246,242,1,0,0,0,246,244,1,0,0,0,247,248,1, - 0,0,0,248,249,3,16,8,0,249,250,6,9,-1,0,250,252,1,0,0,0,251,246,1,0,0, - 0,252,255,1,0,0,0,253,251,1,0,0,0,253,254,1,0,0,0,254,262,1,0,0,0,255, - 253,1,0,0,0,256,257,5,30,0,0,257,258,5,9,0,0,258,259,3,16,8,0,259,260, - 5,31,0,0,260,261,6,9,-1,0,261,263,1,0,0,0,262,256,1,0,0,0,262,263,1,0, - 0,0,263,264,1,0,0,0,264,265,6,9,-1,0,265,19,1,0,0,0,266,267,5,32,0,0,267, - 268,3,18,9,0,268,269,6,10,-1,0,269,282,1,0,0,0,270,271,5,32,0,0,271,272, - 3,20,10,0,272,273,6,10,-1,0,273,282,1,0,0,0,274,275,5,32,0,0,275,276,3, - 34,17,0,276,277,6,10,-1,0,277,282,1,0,0,0,278,279,3,18,9,0,279,280,6,10, - -1,0,280,282,1,0,0,0,281,266,1,0,0,0,281,270,1,0,0,0,281,274,1,0,0,0,281, - 278,1,0,0,0,282,21,1,0,0,0,283,284,3,20,10,0,284,299,6,11,-1,0,285,286, - 5,33,0,0,286,287,3,20,10,0,287,288,6,11,-1,0,288,298,1,0,0,0,289,290,5, - 34,0,0,290,291,3,20,10,0,291,292,6,11,-1,0,292,298,1,0,0,0,293,294,7,1, - 0,0,294,295,3,34,17,0,295,296,6,11,-1,0,296,298,1,0,0,0,297,285,1,0,0, - 0,297,289,1,0,0,0,297,293,1,0,0,0,298,301,1,0,0,0,299,297,1,0,0,0,299, - 300,1,0,0,0,300,23,1,0,0,0,301,299,1,0,0,0,302,303,3,22,11,0,303,314,6, - 12,-1,0,304,305,5,35,0,0,305,306,3,22,11,0,306,307,6,12,-1,0,307,313,1, - 0,0,0,308,309,5,35,0,0,309,310,3,34,17,0,310,311,6,12,-1,0,311,313,1,0, - 0,0,312,304,1,0,0,0,312,308,1,0,0,0,313,316,1,0,0,0,314,312,1,0,0,0,314, - 315,1,0,0,0,315,25,1,0,0,0,316,314,1,0,0,0,317,318,3,24,12,0,318,329,6, - 13,-1,0,319,320,5,36,0,0,320,321,3,24,12,0,321,322,6,13,-1,0,322,328,1, - 0,0,0,323,324,5,36,0,0,324,325,3,34,17,0,325,326,6,13,-1,0,326,328,1,0, - 0,0,327,319,1,0,0,0,327,323,1,0,0,0,328,331,1,0,0,0,329,327,1,0,0,0,329, - 330,1,0,0,0,330,27,1,0,0,0,331,329,1,0,0,0,332,333,3,26,13,0,333,348,6, - 14,-1,0,334,335,5,37,0,0,335,336,3,26,13,0,336,337,6,14,-1,0,337,347,1, - 0,0,0,338,339,5,38,0,0,339,340,3,26,13,0,340,341,6,14,-1,0,341,347,1,0, - 0,0,342,343,7,2,0,0,343,344,3,34,17,0,344,345,6,14,-1,0,345,347,1,0,0, - 0,346,334,1,0,0,0,346,338,1,0,0,0,346,342,1,0,0,0,347,350,1,0,0,0,348, - 346,1,0,0,0,348,349,1,0,0,0,349,29,1,0,0,0,350,348,1,0,0,0,351,352,3,28, - 14,0,352,357,6,15,-1,0,353,354,5,39,0,0,354,355,3,30,15,0,355,356,6,15, - -1,0,356,358,1,0,0,0,357,353,1,0,0,0,357,358,1,0,0,0,358,31,1,0,0,0,359, - 360,3,30,15,0,360,365,6,16,-1,0,361,362,5,40,0,0,362,363,3,32,16,0,363, - 364,6,16,-1,0,364,366,1,0,0,0,365,361,1,0,0,0,365,366,1,0,0,0,366,371, - 1,0,0,0,367,368,3,34,17,0,368,369,6,16,-1,0,369,371,1,0,0,0,370,359,1, - 0,0,0,370,367,1,0,0,0,371,33,1,0,0,0,372,373,3,36,18,0,373,374,3,38,19, - 0,374,375,5,41,0,0,375,376,3,32,16,0,376,377,6,17,-1,0,377,35,1,0,0,0, - 378,379,7,3,0,0,379,385,6,18,-1,0,380,381,7,4,0,0,381,385,6,18,-1,0,382, - 383,7,5,0,0,383,385,6,18,-1,0,384,378,1,0,0,0,384,380,1,0,0,0,384,382, - 1,0,0,0,385,37,1,0,0,0,386,387,3,16,8,0,387,394,6,19,-1,0,388,389,5,48, - 0,0,389,390,3,16,8,0,390,391,6,19,-1,0,391,393,1,0,0,0,392,388,1,0,0,0, - 393,396,1,0,0,0,394,392,1,0,0,0,394,395,1,0,0,0,395,397,1,0,0,0,396,394, - 1,0,0,0,397,398,6,19,-1,0,398,39,1,0,0,0,399,400,3,32,16,0,400,407,6,20, - -1,0,401,402,5,48,0,0,402,403,3,32,16,0,403,404,6,20,-1,0,404,406,1,0, - 0,0,405,401,1,0,0,0,406,409,1,0,0,0,407,405,1,0,0,0,407,408,1,0,0,0,408, - 411,1,0,0,0,409,407,1,0,0,0,410,399,1,0,0,0,410,411,1,0,0,0,411,41,1,0, - 0,0,412,413,3,32,16,0,413,414,6,21,-1,0,414,418,1,0,0,0,415,416,7,0,0, - 0,416,418,6,21,-1,0,417,412,1,0,0,0,417,415,1,0,0,0,418,429,1,0,0,0,419, - 425,5,48,0,0,420,421,3,32,16,0,421,422,6,21,-1,0,422,426,1,0,0,0,423,424, - 7,0,0,0,424,426,6,21,-1,0,425,420,1,0,0,0,425,423,1,0,0,0,426,428,1,0, - 0,0,427,419,1,0,0,0,428,431,1,0,0,0,429,427,1,0,0,0,429,430,1,0,0,0,430, - 433,1,0,0,0,431,429,1,0,0,0,432,417,1,0,0,0,432,433,1,0,0,0,433,43,1,0, - 0,0,434,435,3,32,16,0,435,436,6,22,-1,0,436,437,5,49,0,0,437,438,3,32, - 16,0,438,439,6,22,-1,0,439,45,1,0,0,0,440,441,3,32,16,0,441,442,6,23,-1, - 0,442,443,5,41,0,0,443,444,3,32,16,0,444,445,6,23,-1,0,445,47,1,0,0,0, - 446,447,5,50,0,0,447,1355,6,24,-1,0,448,449,5,51,0,0,449,1355,6,24,-1, - 0,450,451,5,232,0,0,451,1355,6,24,-1,0,452,453,5,229,0,0,453,1355,6,24, - -1,0,454,455,5,231,0,0,455,1355,6,24,-1,0,456,457,5,230,0,0,457,1355,6, - 24,-1,0,458,459,5,233,0,0,459,1355,6,24,-1,0,460,461,5,52,0,0,461,462, - 3,32,16,0,462,463,5,53,0,0,463,464,6,24,-1,0,464,1355,1,0,0,0,465,466, - 5,54,0,0,466,467,3,48,24,0,467,468,6,24,-1,0,468,1355,1,0,0,0,469,470, - 5,55,0,0,470,471,3,40,20,0,471,472,5,56,0,0,472,473,6,24,-1,0,473,1355, - 1,0,0,0,474,475,5,55,0,0,475,476,3,40,20,0,476,477,5,57,0,0,477,478,6, - 24,-1,0,478,1355,1,0,0,0,479,480,5,30,0,0,480,481,3,44,22,0,481,482,5, - 31,0,0,482,483,6,24,-1,0,483,1355,1,0,0,0,484,485,5,55,0,0,485,486,3,44, - 22,0,486,487,5,31,0,0,487,488,6,24,-1,0,488,1355,1,0,0,0,489,490,5,55, - 0,0,490,491,3,44,22,0,491,492,5,57,0,0,492,493,6,24,-1,0,493,1355,1,0, - 0,0,494,495,5,30,0,0,495,496,3,44,22,0,496,497,5,57,0,0,497,498,6,24,-1, - 0,498,1355,1,0,0,0,499,500,5,30,0,0,500,501,3,32,16,0,501,502,5,31,0,0, - 502,503,6,24,-1,0,503,1355,1,0,0,0,504,505,5,58,0,0,505,506,3,46,23,0, - 506,507,5,59,0,0,507,508,6,24,-1,0,508,1355,1,0,0,0,509,510,5,58,0,0,510, - 511,3,42,21,0,511,512,5,59,0,0,512,513,6,24,-1,0,513,1355,1,0,0,0,514, - 515,5,60,0,0,515,516,3,40,20,0,516,517,5,31,0,0,517,518,6,24,-1,0,518, - 1355,1,0,0,0,519,520,5,61,0,0,520,521,3,40,20,0,521,522,5,31,0,0,522,523, - 6,24,-1,0,523,1355,1,0,0,0,524,525,5,62,0,0,525,526,3,40,20,0,526,527, - 5,31,0,0,527,528,6,24,-1,0,528,1355,1,0,0,0,529,530,5,63,0,0,530,531,3, - 40,20,0,531,532,5,31,0,0,532,533,6,24,-1,0,533,1355,1,0,0,0,534,535,5, - 64,0,0,535,536,3,40,20,0,536,537,5,31,0,0,537,538,6,24,-1,0,538,1355,1, - 0,0,0,539,540,5,65,0,0,540,541,3,40,20,0,541,542,5,31,0,0,542,543,6,24, - -1,0,543,1355,1,0,0,0,544,545,5,66,0,0,545,546,3,40,20,0,546,547,5,31, - 0,0,547,548,6,24,-1,0,548,1355,1,0,0,0,549,550,5,67,0,0,550,551,3,40,20, - 0,551,552,5,31,0,0,552,553,6,24,-1,0,553,1355,1,0,0,0,554,555,5,68,0,0, - 555,556,3,40,20,0,556,557,5,31,0,0,557,558,6,24,-1,0,558,1355,1,0,0,0, - 559,560,5,69,0,0,560,561,3,40,20,0,561,562,5,31,0,0,562,563,6,24,-1,0, - 563,1355,1,0,0,0,564,565,5,70,0,0,565,566,3,40,20,0,566,567,5,31,0,0,567, - 568,6,24,-1,0,568,1355,1,0,0,0,569,570,5,71,0,0,570,571,3,40,20,0,571, - 572,5,31,0,0,572,573,6,24,-1,0,573,1355,1,0,0,0,574,575,5,72,0,0,575,576, - 3,40,20,0,576,577,5,31,0,0,577,578,6,24,-1,0,578,1355,1,0,0,0,579,580, - 5,73,0,0,580,581,3,40,20,0,581,582,5,31,0,0,582,583,6,24,-1,0,583,1355, - 1,0,0,0,584,585,5,74,0,0,585,586,3,40,20,0,586,587,5,31,0,0,587,588,6, - 24,-1,0,588,1355,1,0,0,0,589,590,5,75,0,0,590,591,3,40,20,0,591,592,5, - 31,0,0,592,593,6,24,-1,0,593,1355,1,0,0,0,594,595,5,76,0,0,595,596,3,40, - 20,0,596,597,5,31,0,0,597,598,6,24,-1,0,598,1355,1,0,0,0,599,600,5,77, - 0,0,600,601,3,40,20,0,601,602,5,31,0,0,602,603,6,24,-1,0,603,1355,1,0, - 0,0,604,605,5,78,0,0,605,606,3,40,20,0,606,607,5,31,0,0,607,608,6,24,-1, - 0,608,1355,1,0,0,0,609,610,5,79,0,0,610,611,3,40,20,0,611,612,5,31,0,0, - 612,613,6,24,-1,0,613,1355,1,0,0,0,614,615,5,80,0,0,615,616,3,40,20,0, - 616,617,5,31,0,0,617,618,6,24,-1,0,618,1355,1,0,0,0,619,620,5,81,0,0,620, - 621,3,40,20,0,621,622,5,31,0,0,622,623,6,24,-1,0,623,1355,1,0,0,0,624, - 625,5,82,0,0,625,626,3,40,20,0,626,627,5,31,0,0,627,628,6,24,-1,0,628, - 1355,1,0,0,0,629,630,5,83,0,0,630,631,3,40,20,0,631,632,5,31,0,0,632,633, - 6,24,-1,0,633,1355,1,0,0,0,634,635,5,84,0,0,635,636,3,40,20,0,636,637, - 5,31,0,0,637,638,6,24,-1,0,638,1355,1,0,0,0,639,640,5,85,0,0,640,641,3, - 40,20,0,641,642,5,31,0,0,642,643,6,24,-1,0,643,1355,1,0,0,0,644,645,5, - 86,0,0,645,646,3,40,20,0,646,647,5,31,0,0,647,648,6,24,-1,0,648,1355,1, - 0,0,0,649,650,5,87,0,0,650,651,3,40,20,0,651,652,5,31,0,0,652,653,6,24, - -1,0,653,1355,1,0,0,0,654,655,5,88,0,0,655,656,3,40,20,0,656,657,5,31, - 0,0,657,658,6,24,-1,0,658,1355,1,0,0,0,659,660,5,89,0,0,660,661,3,40,20, - 0,661,662,5,31,0,0,662,663,6,24,-1,0,663,1355,1,0,0,0,664,665,5,90,0,0, - 665,666,3,40,20,0,666,667,5,31,0,0,667,668,6,24,-1,0,668,1355,1,0,0,0, - 669,670,5,91,0,0,670,671,3,40,20,0,671,672,5,31,0,0,672,673,6,24,-1,0, - 673,1355,1,0,0,0,674,675,5,92,0,0,675,676,3,40,20,0,676,677,5,31,0,0,677, - 678,6,24,-1,0,678,1355,1,0,0,0,679,680,5,93,0,0,680,681,3,40,20,0,681, - 682,5,31,0,0,682,683,6,24,-1,0,683,1355,1,0,0,0,684,685,5,94,0,0,685,686, - 3,40,20,0,686,687,5,31,0,0,687,688,6,24,-1,0,688,1355,1,0,0,0,689,690, - 5,95,0,0,690,691,3,40,20,0,691,692,5,31,0,0,692,693,6,24,-1,0,693,1355, - 1,0,0,0,694,695,5,96,0,0,695,696,3,40,20,0,696,697,5,31,0,0,697,698,6, - 24,-1,0,698,1355,1,0,0,0,699,700,5,97,0,0,700,701,3,40,20,0,701,702,5, - 31,0,0,702,703,6,24,-1,0,703,1355,1,0,0,0,704,705,5,98,0,0,705,706,3,40, - 20,0,706,707,5,31,0,0,707,708,6,24,-1,0,708,1355,1,0,0,0,709,710,5,99, - 0,0,710,711,3,40,20,0,711,712,5,31,0,0,712,713,6,24,-1,0,713,1355,1,0, - 0,0,714,715,5,100,0,0,715,716,3,40,20,0,716,717,5,31,0,0,717,718,6,24, - -1,0,718,1355,1,0,0,0,719,720,5,101,0,0,720,721,3,40,20,0,721,722,5,31, - 0,0,722,723,6,24,-1,0,723,1355,1,0,0,0,724,725,5,102,0,0,725,726,3,40, - 20,0,726,727,5,31,0,0,727,728,6,24,-1,0,728,1355,1,0,0,0,729,730,5,103, - 0,0,730,731,3,40,20,0,731,732,5,31,0,0,732,733,6,24,-1,0,733,1355,1,0, - 0,0,734,735,5,104,0,0,735,736,3,40,20,0,736,737,5,31,0,0,737,738,6,24, - -1,0,738,1355,1,0,0,0,739,740,5,105,0,0,740,741,3,40,20,0,741,742,5,31, - 0,0,742,743,6,24,-1,0,743,1355,1,0,0,0,744,745,5,106,0,0,745,746,3,40, - 20,0,746,747,5,31,0,0,747,748,6,24,-1,0,748,1355,1,0,0,0,749,750,5,107, - 0,0,750,751,3,40,20,0,751,752,5,31,0,0,752,753,6,24,-1,0,753,1355,1,0, - 0,0,754,755,5,108,0,0,755,756,3,40,20,0,756,757,5,31,0,0,757,758,6,24, - -1,0,758,1355,1,0,0,0,759,760,5,109,0,0,760,761,3,40,20,0,761,762,5,31, - 0,0,762,763,6,24,-1,0,763,1355,1,0,0,0,764,765,5,110,0,0,765,766,3,40, - 20,0,766,767,5,31,0,0,767,768,6,24,-1,0,768,1355,1,0,0,0,769,770,5,111, - 0,0,770,771,3,40,20,0,771,772,5,31,0,0,772,773,6,24,-1,0,773,1355,1,0, - 0,0,774,775,5,112,0,0,775,776,3,40,20,0,776,777,5,31,0,0,777,778,6,24, - -1,0,778,1355,1,0,0,0,779,780,5,113,0,0,780,781,3,40,20,0,781,782,5,31, - 0,0,782,783,6,24,-1,0,783,1355,1,0,0,0,784,785,5,114,0,0,785,786,3,40, - 20,0,786,787,5,31,0,0,787,788,6,24,-1,0,788,1355,1,0,0,0,789,790,5,115, - 0,0,790,791,3,40,20,0,791,792,5,31,0,0,792,793,6,24,-1,0,793,1355,1,0, - 0,0,794,795,5,116,0,0,795,796,3,40,20,0,796,797,5,31,0,0,797,798,6,24, - -1,0,798,1355,1,0,0,0,799,800,5,117,0,0,800,801,3,40,20,0,801,802,5,31, - 0,0,802,803,6,24,-1,0,803,1355,1,0,0,0,804,805,5,118,0,0,805,806,3,40, - 20,0,806,807,5,31,0,0,807,808,6,24,-1,0,808,1355,1,0,0,0,809,810,5,119, - 0,0,810,811,3,40,20,0,811,812,5,31,0,0,812,813,6,24,-1,0,813,1355,1,0, - 0,0,814,815,5,120,0,0,815,816,3,40,20,0,816,817,5,31,0,0,817,818,6,24, - -1,0,818,1355,1,0,0,0,819,820,5,121,0,0,820,821,3,40,20,0,821,822,5,31, - 0,0,822,823,6,24,-1,0,823,1355,1,0,0,0,824,825,5,122,0,0,825,826,3,40, - 20,0,826,827,5,31,0,0,827,828,6,24,-1,0,828,1355,1,0,0,0,829,830,5,123, - 0,0,830,831,3,40,20,0,831,832,5,31,0,0,832,833,6,24,-1,0,833,1355,1,0, - 0,0,834,835,5,124,0,0,835,836,3,40,20,0,836,837,5,31,0,0,837,838,6,24, - -1,0,838,1355,1,0,0,0,839,840,5,125,0,0,840,841,3,40,20,0,841,842,5,31, - 0,0,842,843,6,24,-1,0,843,1355,1,0,0,0,844,845,5,126,0,0,845,846,3,40, - 20,0,846,847,5,31,0,0,847,848,6,24,-1,0,848,1355,1,0,0,0,849,850,5,127, - 0,0,850,851,3,40,20,0,851,852,5,31,0,0,852,853,6,24,-1,0,853,1355,1,0, - 0,0,854,855,5,128,0,0,855,856,3,40,20,0,856,857,5,31,0,0,857,858,6,24, - -1,0,858,1355,1,0,0,0,859,860,5,129,0,0,860,861,3,40,20,0,861,862,5,31, - 0,0,862,863,6,24,-1,0,863,1355,1,0,0,0,864,865,5,130,0,0,865,866,3,40, - 20,0,866,867,5,31,0,0,867,868,6,24,-1,0,868,1355,1,0,0,0,869,870,5,131, - 0,0,870,871,3,40,20,0,871,872,5,31,0,0,872,873,6,24,-1,0,873,1355,1,0, - 0,0,874,875,5,132,0,0,875,876,3,40,20,0,876,877,5,31,0,0,877,878,6,24, - -1,0,878,1355,1,0,0,0,879,880,5,133,0,0,880,881,3,40,20,0,881,882,5,31, - 0,0,882,883,6,24,-1,0,883,1355,1,0,0,0,884,885,5,134,0,0,885,886,3,40, - 20,0,886,887,5,31,0,0,887,888,6,24,-1,0,888,1355,1,0,0,0,889,890,5,135, - 0,0,890,891,3,40,20,0,891,892,5,31,0,0,892,893,6,24,-1,0,893,1355,1,0, - 0,0,894,895,5,136,0,0,895,896,3,40,20,0,896,897,5,31,0,0,897,898,6,24, - -1,0,898,1355,1,0,0,0,899,900,5,137,0,0,900,901,3,40,20,0,901,902,5,31, - 0,0,902,903,6,24,-1,0,903,1355,1,0,0,0,904,905,5,138,0,0,905,906,3,40, - 20,0,906,907,5,31,0,0,907,908,6,24,-1,0,908,1355,1,0,0,0,909,910,5,139, - 0,0,910,911,3,40,20,0,911,912,5,31,0,0,912,913,6,24,-1,0,913,1355,1,0, - 0,0,914,915,5,140,0,0,915,916,3,40,20,0,916,917,5,31,0,0,917,918,6,24, - -1,0,918,1355,1,0,0,0,919,920,5,141,0,0,920,921,3,40,20,0,921,922,5,31, - 0,0,922,923,6,24,-1,0,923,1355,1,0,0,0,924,925,5,142,0,0,925,926,3,40, - 20,0,926,927,5,31,0,0,927,928,6,24,-1,0,928,1355,1,0,0,0,929,930,5,143, - 0,0,930,931,3,40,20,0,931,932,5,31,0,0,932,933,6,24,-1,0,933,1355,1,0, - 0,0,934,935,5,144,0,0,935,936,3,40,20,0,936,937,5,31,0,0,937,938,6,24, - -1,0,938,1355,1,0,0,0,939,940,5,145,0,0,940,941,3,40,20,0,941,942,5,31, - 0,0,942,943,6,24,-1,0,943,1355,1,0,0,0,944,945,5,146,0,0,945,946,3,40, - 20,0,946,947,5,31,0,0,947,948,6,24,-1,0,948,1355,1,0,0,0,949,950,5,147, - 0,0,950,951,3,40,20,0,951,952,5,31,0,0,952,953,6,24,-1,0,953,1355,1,0, - 0,0,954,955,5,148,0,0,955,956,3,40,20,0,956,957,5,31,0,0,957,958,6,24, - -1,0,958,1355,1,0,0,0,959,960,5,149,0,0,960,961,3,40,20,0,961,962,5,31, - 0,0,962,963,6,24,-1,0,963,1355,1,0,0,0,964,965,5,150,0,0,965,966,3,40, - 20,0,966,967,5,31,0,0,967,968,6,24,-1,0,968,1355,1,0,0,0,969,970,5,151, - 0,0,970,971,3,40,20,0,971,972,5,31,0,0,972,973,6,24,-1,0,973,1355,1,0, - 0,0,974,975,5,152,0,0,975,976,3,40,20,0,976,977,5,31,0,0,977,978,6,24, - -1,0,978,1355,1,0,0,0,979,980,5,153,0,0,980,981,3,40,20,0,981,982,5,31, - 0,0,982,983,6,24,-1,0,983,1355,1,0,0,0,984,985,5,154,0,0,985,986,3,40, - 20,0,986,987,5,31,0,0,987,988,6,24,-1,0,988,1355,1,0,0,0,989,990,5,155, - 0,0,990,991,3,40,20,0,991,992,5,31,0,0,992,993,6,24,-1,0,993,1355,1,0, - 0,0,994,995,5,156,0,0,995,996,3,40,20,0,996,997,5,31,0,0,997,998,6,24, - -1,0,998,1355,1,0,0,0,999,1000,5,157,0,0,1000,1001,3,40,20,0,1001,1002, - 5,31,0,0,1002,1003,6,24,-1,0,1003,1355,1,0,0,0,1004,1005,5,158,0,0,1005, - 1006,3,40,20,0,1006,1007,5,31,0,0,1007,1008,6,24,-1,0,1008,1355,1,0,0, - 0,1009,1010,5,159,0,0,1010,1011,3,40,20,0,1011,1012,5,31,0,0,1012,1013, - 6,24,-1,0,1013,1355,1,0,0,0,1014,1015,5,160,0,0,1015,1016,3,40,20,0,1016, - 1017,5,31,0,0,1017,1018,6,24,-1,0,1018,1355,1,0,0,0,1019,1020,5,161,0, - 0,1020,1021,3,40,20,0,1021,1022,5,31,0,0,1022,1023,6,24,-1,0,1023,1355, - 1,0,0,0,1024,1025,5,162,0,0,1025,1026,3,40,20,0,1026,1027,5,31,0,0,1027, - 1028,6,24,-1,0,1028,1355,1,0,0,0,1029,1030,5,163,0,0,1030,1031,3,40,20, - 0,1031,1032,5,31,0,0,1032,1033,6,24,-1,0,1033,1355,1,0,0,0,1034,1035,5, - 164,0,0,1035,1036,3,40,20,0,1036,1037,5,31,0,0,1037,1038,6,24,-1,0,1038, - 1355,1,0,0,0,1039,1040,5,165,0,0,1040,1041,3,40,20,0,1041,1042,5,31,0, - 0,1042,1043,6,24,-1,0,1043,1355,1,0,0,0,1044,1045,5,166,0,0,1045,1046, - 3,40,20,0,1046,1047,5,31,0,0,1047,1048,6,24,-1,0,1048,1355,1,0,0,0,1049, - 1050,5,167,0,0,1050,1051,3,40,20,0,1051,1052,5,31,0,0,1052,1053,6,24,-1, - 0,1053,1355,1,0,0,0,1054,1055,5,168,0,0,1055,1056,3,40,20,0,1056,1057, - 5,31,0,0,1057,1058,6,24,-1,0,1058,1355,1,0,0,0,1059,1060,5,169,0,0,1060, - 1061,3,40,20,0,1061,1062,5,31,0,0,1062,1063,6,24,-1,0,1063,1355,1,0,0, - 0,1064,1065,5,170,0,0,1065,1066,3,40,20,0,1066,1067,5,31,0,0,1067,1068, - 6,24,-1,0,1068,1355,1,0,0,0,1069,1070,5,171,0,0,1070,1071,3,40,20,0,1071, - 1072,5,31,0,0,1072,1073,6,24,-1,0,1073,1355,1,0,0,0,1074,1075,5,172,0, - 0,1075,1076,3,40,20,0,1076,1077,5,31,0,0,1077,1078,6,24,-1,0,1078,1355, - 1,0,0,0,1079,1080,5,173,0,0,1080,1081,3,40,20,0,1081,1082,5,31,0,0,1082, - 1083,6,24,-1,0,1083,1355,1,0,0,0,1084,1085,5,174,0,0,1085,1086,3,40,20, - 0,1086,1087,5,31,0,0,1087,1088,6,24,-1,0,1088,1355,1,0,0,0,1089,1090,5, - 175,0,0,1090,1091,3,40,20,0,1091,1092,5,31,0,0,1092,1093,6,24,-1,0,1093, - 1355,1,0,0,0,1094,1095,5,176,0,0,1095,1096,3,40,20,0,1096,1097,5,31,0, - 0,1097,1098,6,24,-1,0,1098,1355,1,0,0,0,1099,1100,5,177,0,0,1100,1101, - 3,40,20,0,1101,1102,5,31,0,0,1102,1103,6,24,-1,0,1103,1355,1,0,0,0,1104, - 1105,5,178,0,0,1105,1106,3,40,20,0,1106,1107,5,31,0,0,1107,1108,6,24,-1, - 0,1108,1355,1,0,0,0,1109,1110,5,179,0,0,1110,1111,3,40,20,0,1111,1112, - 5,31,0,0,1112,1113,6,24,-1,0,1113,1355,1,0,0,0,1114,1115,5,180,0,0,1115, - 1116,3,40,20,0,1116,1117,5,31,0,0,1117,1118,6,24,-1,0,1118,1355,1,0,0, - 0,1119,1120,5,181,0,0,1120,1121,3,40,20,0,1121,1122,5,31,0,0,1122,1123, - 6,24,-1,0,1123,1355,1,0,0,0,1124,1125,5,182,0,0,1125,1126,3,40,20,0,1126, - 1127,5,31,0,0,1127,1128,6,24,-1,0,1128,1355,1,0,0,0,1129,1130,5,183,0, - 0,1130,1131,3,40,20,0,1131,1132,5,31,0,0,1132,1133,6,24,-1,0,1133,1355, - 1,0,0,0,1134,1135,5,184,0,0,1135,1136,3,40,20,0,1136,1137,5,31,0,0,1137, - 1138,6,24,-1,0,1138,1355,1,0,0,0,1139,1140,5,185,0,0,1140,1141,3,40,20, - 0,1141,1142,5,31,0,0,1142,1143,6,24,-1,0,1143,1355,1,0,0,0,1144,1145,5, - 186,0,0,1145,1146,3,40,20,0,1146,1147,5,31,0,0,1147,1148,6,24,-1,0,1148, - 1355,1,0,0,0,1149,1150,5,187,0,0,1150,1151,3,40,20,0,1151,1152,5,31,0, - 0,1152,1153,6,24,-1,0,1153,1355,1,0,0,0,1154,1155,5,188,0,0,1155,1156, - 3,40,20,0,1156,1157,5,31,0,0,1157,1158,6,24,-1,0,1158,1355,1,0,0,0,1159, - 1160,5,189,0,0,1160,1161,3,40,20,0,1161,1162,5,31,0,0,1162,1163,6,24,-1, - 0,1163,1355,1,0,0,0,1164,1165,5,190,0,0,1165,1166,3,40,20,0,1166,1167, - 5,31,0,0,1167,1168,6,24,-1,0,1168,1355,1,0,0,0,1169,1170,5,191,0,0,1170, - 1171,3,40,20,0,1171,1172,5,31,0,0,1172,1173,6,24,-1,0,1173,1355,1,0,0, - 0,1174,1175,5,192,0,0,1175,1176,3,40,20,0,1176,1177,5,31,0,0,1177,1178, - 6,24,-1,0,1178,1355,1,0,0,0,1179,1180,5,193,0,0,1180,1181,3,40,20,0,1181, - 1182,5,31,0,0,1182,1183,6,24,-1,0,1183,1355,1,0,0,0,1184,1185,5,194,0, - 0,1185,1186,3,40,20,0,1186,1187,5,31,0,0,1187,1188,6,24,-1,0,1188,1355, - 1,0,0,0,1189,1190,5,195,0,0,1190,1191,3,40,20,0,1191,1192,5,31,0,0,1192, - 1193,6,24,-1,0,1193,1355,1,0,0,0,1194,1195,5,196,0,0,1195,1196,3,40,20, - 0,1196,1197,5,31,0,0,1197,1198,6,24,-1,0,1198,1355,1,0,0,0,1199,1200,5, - 197,0,0,1200,1201,3,40,20,0,1201,1202,5,31,0,0,1202,1203,6,24,-1,0,1203, - 1355,1,0,0,0,1204,1205,5,198,0,0,1205,1206,3,40,20,0,1206,1207,5,31,0, - 0,1207,1208,6,24,-1,0,1208,1355,1,0,0,0,1209,1210,5,199,0,0,1210,1211, - 3,40,20,0,1211,1212,5,31,0,0,1212,1213,6,24,-1,0,1213,1355,1,0,0,0,1214, - 1215,5,200,0,0,1215,1216,3,40,20,0,1216,1217,5,31,0,0,1217,1218,6,24,-1, - 0,1218,1355,1,0,0,0,1219,1220,5,201,0,0,1220,1221,3,40,20,0,1221,1222, - 5,31,0,0,1222,1223,6,24,-1,0,1223,1355,1,0,0,0,1224,1225,5,202,0,0,1225, - 1226,3,40,20,0,1226,1227,5,31,0,0,1227,1228,6,24,-1,0,1228,1355,1,0,0, - 0,1229,1230,5,203,0,0,1230,1231,3,40,20,0,1231,1232,5,31,0,0,1232,1233, - 6,24,-1,0,1233,1355,1,0,0,0,1234,1235,5,204,0,0,1235,1236,3,40,20,0,1236, - 1237,5,31,0,0,1237,1238,6,24,-1,0,1238,1355,1,0,0,0,1239,1240,5,205,0, - 0,1240,1241,3,40,20,0,1241,1242,5,31,0,0,1242,1243,6,24,-1,0,1243,1355, - 1,0,0,0,1244,1245,5,206,0,0,1245,1246,3,40,20,0,1246,1247,5,31,0,0,1247, - 1248,6,24,-1,0,1248,1355,1,0,0,0,1249,1250,5,207,0,0,1250,1251,3,40,20, - 0,1251,1252,5,31,0,0,1252,1253,6,24,-1,0,1253,1355,1,0,0,0,1254,1255,5, - 208,0,0,1255,1256,3,40,20,0,1256,1257,5,31,0,0,1257,1258,6,24,-1,0,1258, - 1355,1,0,0,0,1259,1260,5,209,0,0,1260,1261,3,40,20,0,1261,1262,5,31,0, - 0,1262,1263,6,24,-1,0,1263,1355,1,0,0,0,1264,1265,5,210,0,0,1265,1266, - 3,40,20,0,1266,1267,5,31,0,0,1267,1268,6,24,-1,0,1268,1355,1,0,0,0,1269, - 1270,5,211,0,0,1270,1271,3,40,20,0,1271,1272,5,31,0,0,1272,1273,6,24,-1, - 0,1273,1355,1,0,0,0,1274,1275,5,212,0,0,1275,1276,3,40,20,0,1276,1277, - 5,31,0,0,1277,1278,6,24,-1,0,1278,1355,1,0,0,0,1279,1280,5,213,0,0,1280, - 1281,3,40,20,0,1281,1282,5,31,0,0,1282,1283,6,24,-1,0,1283,1355,1,0,0, - 0,1284,1285,5,214,0,0,1285,1286,3,40,20,0,1286,1287,5,31,0,0,1287,1288, - 6,24,-1,0,1288,1355,1,0,0,0,1289,1290,5,215,0,0,1290,1291,3,40,20,0,1291, - 1292,5,31,0,0,1292,1293,6,24,-1,0,1293,1355,1,0,0,0,1294,1295,5,216,0, - 0,1295,1296,3,40,20,0,1296,1297,5,31,0,0,1297,1298,6,24,-1,0,1298,1355, - 1,0,0,0,1299,1300,5,217,0,0,1300,1301,3,40,20,0,1301,1302,5,31,0,0,1302, - 1303,6,24,-1,0,1303,1355,1,0,0,0,1304,1305,5,218,0,0,1305,1306,3,40,20, - 0,1306,1307,5,31,0,0,1307,1308,6,24,-1,0,1308,1355,1,0,0,0,1309,1310,5, - 219,0,0,1310,1311,3,40,20,0,1311,1312,5,31,0,0,1312,1313,6,24,-1,0,1313, - 1355,1,0,0,0,1314,1315,5,220,0,0,1315,1316,3,40,20,0,1316,1317,5,31,0, - 0,1317,1318,6,24,-1,0,1318,1355,1,0,0,0,1319,1320,5,221,0,0,1320,1321, - 3,40,20,0,1321,1322,5,31,0,0,1322,1323,6,24,-1,0,1323,1355,1,0,0,0,1324, - 1325,5,222,0,0,1325,1326,3,40,20,0,1326,1327,5,31,0,0,1327,1328,6,24,-1, - 0,1328,1355,1,0,0,0,1329,1330,5,223,0,0,1330,1331,3,40,20,0,1331,1332, - 5,31,0,0,1332,1333,6,24,-1,0,1333,1355,1,0,0,0,1334,1335,5,224,0,0,1335, - 1336,3,40,20,0,1336,1337,5,31,0,0,1337,1338,6,24,-1,0,1338,1355,1,0,0, - 0,1339,1340,5,225,0,0,1340,1341,3,40,20,0,1341,1342,5,31,0,0,1342,1343, - 6,24,-1,0,1343,1355,1,0,0,0,1344,1345,5,226,0,0,1345,1346,3,40,20,0,1346, - 1347,5,31,0,0,1347,1348,6,24,-1,0,1348,1355,1,0,0,0,1349,1350,5,227,0, - 0,1350,1351,3,40,20,0,1351,1352,5,31,0,0,1352,1353,6,24,-1,0,1353,1355, - 1,0,0,0,1354,446,1,0,0,0,1354,448,1,0,0,0,1354,450,1,0,0,0,1354,452,1, - 0,0,0,1354,454,1,0,0,0,1354,456,1,0,0,0,1354,458,1,0,0,0,1354,460,1,0, - 0,0,1354,465,1,0,0,0,1354,469,1,0,0,0,1354,474,1,0,0,0,1354,479,1,0,0, - 0,1354,484,1,0,0,0,1354,489,1,0,0,0,1354,494,1,0,0,0,1354,499,1,0,0,0, - 1354,504,1,0,0,0,1354,509,1,0,0,0,1354,514,1,0,0,0,1354,519,1,0,0,0,1354, - 524,1,0,0,0,1354,529,1,0,0,0,1354,534,1,0,0,0,1354,539,1,0,0,0,1354,544, - 1,0,0,0,1354,549,1,0,0,0,1354,554,1,0,0,0,1354,559,1,0,0,0,1354,564,1, - 0,0,0,1354,569,1,0,0,0,1354,574,1,0,0,0,1354,579,1,0,0,0,1354,584,1,0, - 0,0,1354,589,1,0,0,0,1354,594,1,0,0,0,1354,599,1,0,0,0,1354,604,1,0,0, - 0,1354,609,1,0,0,0,1354,614,1,0,0,0,1354,619,1,0,0,0,1354,624,1,0,0,0, - 1354,629,1,0,0,0,1354,634,1,0,0,0,1354,639,1,0,0,0,1354,644,1,0,0,0,1354, - 649,1,0,0,0,1354,654,1,0,0,0,1354,659,1,0,0,0,1354,664,1,0,0,0,1354,669, - 1,0,0,0,1354,674,1,0,0,0,1354,679,1,0,0,0,1354,684,1,0,0,0,1354,689,1, - 0,0,0,1354,694,1,0,0,0,1354,699,1,0,0,0,1354,704,1,0,0,0,1354,709,1,0, - 0,0,1354,714,1,0,0,0,1354,719,1,0,0,0,1354,724,1,0,0,0,1354,729,1,0,0, - 0,1354,734,1,0,0,0,1354,739,1,0,0,0,1354,744,1,0,0,0,1354,749,1,0,0,0, - 1354,754,1,0,0,0,1354,759,1,0,0,0,1354,764,1,0,0,0,1354,769,1,0,0,0,1354, - 774,1,0,0,0,1354,779,1,0,0,0,1354,784,1,0,0,0,1354,789,1,0,0,0,1354,794, - 1,0,0,0,1354,799,1,0,0,0,1354,804,1,0,0,0,1354,809,1,0,0,0,1354,814,1, - 0,0,0,1354,819,1,0,0,0,1354,824,1,0,0,0,1354,829,1,0,0,0,1354,834,1,0, - 0,0,1354,839,1,0,0,0,1354,844,1,0,0,0,1354,849,1,0,0,0,1354,854,1,0,0, - 0,1354,859,1,0,0,0,1354,864,1,0,0,0,1354,869,1,0,0,0,1354,874,1,0,0,0, - 1354,879,1,0,0,0,1354,884,1,0,0,0,1354,889,1,0,0,0,1354,894,1,0,0,0,1354, - 899,1,0,0,0,1354,904,1,0,0,0,1354,909,1,0,0,0,1354,914,1,0,0,0,1354,919, - 1,0,0,0,1354,924,1,0,0,0,1354,929,1,0,0,0,1354,934,1,0,0,0,1354,939,1, - 0,0,0,1354,944,1,0,0,0,1354,949,1,0,0,0,1354,954,1,0,0,0,1354,959,1,0, - 0,0,1354,964,1,0,0,0,1354,969,1,0,0,0,1354,974,1,0,0,0,1354,979,1,0,0, - 0,1354,984,1,0,0,0,1354,989,1,0,0,0,1354,994,1,0,0,0,1354,999,1,0,0,0, - 1354,1004,1,0,0,0,1354,1009,1,0,0,0,1354,1014,1,0,0,0,1354,1019,1,0,0, - 0,1354,1024,1,0,0,0,1354,1029,1,0,0,0,1354,1034,1,0,0,0,1354,1039,1,0, - 0,0,1354,1044,1,0,0,0,1354,1049,1,0,0,0,1354,1054,1,0,0,0,1354,1059,1, - 0,0,0,1354,1064,1,0,0,0,1354,1069,1,0,0,0,1354,1074,1,0,0,0,1354,1079, - 1,0,0,0,1354,1084,1,0,0,0,1354,1089,1,0,0,0,1354,1094,1,0,0,0,1354,1099, - 1,0,0,0,1354,1104,1,0,0,0,1354,1109,1,0,0,0,1354,1114,1,0,0,0,1354,1119, - 1,0,0,0,1354,1124,1,0,0,0,1354,1129,1,0,0,0,1354,1134,1,0,0,0,1354,1139, - 1,0,0,0,1354,1144,1,0,0,0,1354,1149,1,0,0,0,1354,1154,1,0,0,0,1354,1159, - 1,0,0,0,1354,1164,1,0,0,0,1354,1169,1,0,0,0,1354,1174,1,0,0,0,1354,1179, - 1,0,0,0,1354,1184,1,0,0,0,1354,1189,1,0,0,0,1354,1194,1,0,0,0,1354,1199, - 1,0,0,0,1354,1204,1,0,0,0,1354,1209,1,0,0,0,1354,1214,1,0,0,0,1354,1219, - 1,0,0,0,1354,1224,1,0,0,0,1354,1229,1,0,0,0,1354,1234,1,0,0,0,1354,1239, - 1,0,0,0,1354,1244,1,0,0,0,1354,1249,1,0,0,0,1354,1254,1,0,0,0,1354,1259, - 1,0,0,0,1354,1264,1,0,0,0,1354,1269,1,0,0,0,1354,1274,1,0,0,0,1354,1279, - 1,0,0,0,1354,1284,1,0,0,0,1354,1289,1,0,0,0,1354,1294,1,0,0,0,1354,1299, - 1,0,0,0,1354,1304,1,0,0,0,1354,1309,1,0,0,0,1354,1314,1,0,0,0,1354,1319, - 1,0,0,0,1354,1324,1,0,0,0,1354,1329,1,0,0,0,1354,1334,1,0,0,0,1354,1339, - 1,0,0,0,1354,1344,1,0,0,0,1354,1349,1,0,0,0,1355,49,1,0,0,0,1356,1357, - 3,32,16,0,1357,1358,5,0,0,1,1358,1359,6,25,-1,0,1359,51,1,0,0,0,44,59, - 67,75,77,84,94,104,109,119,129,131,144,150,152,167,169,190,192,225,227, - 246,253,262,281,297,299,312,314,327,329,346,348,357,365,370,384,394,407, - 410,417,425,429,432,1354 + 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,1363,8, + 24,1,25,1,25,1,25,1,25,1,25,0,0,26,0,2,4,6,8,10,12,14,16,18,20,22,24,26, + 28,30,32,34,36,38,40,42,44,46,48,50,0,6,1,0,8,9,1,0,35,36,1,0,39,40,1, + 0,44,45,1,0,46,47,1,0,48,49,1591,0,67,1,0,0,0,2,85,1,0,0,0,4,87,1,0,0, + 0,6,117,1,0,0,0,8,119,1,0,0,0,10,144,1,0,0,0,12,165,1,0,0,0,14,180,1,0, + 0,0,16,203,1,0,0,0,18,238,1,0,0,0,20,289,1,0,0,0,22,291,1,0,0,0,24,310, + 1,0,0,0,26,325,1,0,0,0,28,340,1,0,0,0,30,359,1,0,0,0,32,378,1,0,0,0,34, + 380,1,0,0,0,36,392,1,0,0,0,38,394,1,0,0,0,40,418,1,0,0,0,42,440,1,0,0, + 0,44,442,1,0,0,0,46,448,1,0,0,0,48,1362,1,0,0,0,50,1364,1,0,0,0,52,53, + 3,48,24,0,53,54,5,1,0,0,54,55,6,0,-1,0,55,68,1,0,0,0,56,57,3,48,24,0,57, + 58,5,2,0,0,58,59,6,0,-1,0,59,68,1,0,0,0,60,61,3,48,24,0,61,62,5,3,0,0, + 62,63,6,0,-1,0,63,68,1,0,0,0,64,65,3,48,24,0,65,66,6,0,-1,0,66,68,1,0, + 0,0,67,52,1,0,0,0,67,56,1,0,0,0,67,60,1,0,0,0,67,64,1,0,0,0,68,1,1,0,0, + 0,69,70,5,4,0,0,70,71,3,0,0,0,71,72,6,1,-1,0,72,74,1,0,0,0,73,69,1,0,0, + 0,74,75,1,0,0,0,75,73,1,0,0,0,75,76,1,0,0,0,76,86,1,0,0,0,77,78,5,4,0, + 0,78,79,3,6,3,0,79,80,6,1,-1,0,80,82,1,0,0,0,81,77,1,0,0,0,82,83,1,0,0, + 0,83,81,1,0,0,0,83,84,1,0,0,0,84,86,1,0,0,0,85,73,1,0,0,0,85,81,1,0,0, + 0,86,3,1,0,0,0,87,88,3,0,0,0,88,92,6,2,-1,0,89,90,3,2,1,0,90,91,6,2,-1, + 0,91,93,1,0,0,0,92,89,1,0,0,0,92,93,1,0,0,0,93,5,1,0,0,0,94,95,5,5,0,0, + 95,96,3,4,2,0,96,97,6,3,-1,0,97,103,1,0,0,0,98,99,5,6,0,0,99,100,3,4,2, + 0,100,101,6,3,-1,0,101,103,1,0,0,0,102,94,1,0,0,0,102,98,1,0,0,0,103,118, + 1,0,0,0,104,105,5,5,0,0,105,106,3,6,3,0,106,107,6,3,-1,0,107,113,1,0,0, + 0,108,109,5,6,0,0,109,110,3,6,3,0,110,111,6,3,-1,0,111,113,1,0,0,0,112, + 104,1,0,0,0,112,108,1,0,0,0,113,118,1,0,0,0,114,115,3,4,2,0,115,116,6, + 3,-1,0,116,118,1,0,0,0,117,102,1,0,0,0,117,112,1,0,0,0,117,114,1,0,0,0, + 118,7,1,0,0,0,119,120,3,6,3,0,120,139,6,4,-1,0,121,127,5,7,0,0,122,123, + 7,0,0,0,123,128,6,4,-1,0,124,125,3,6,3,0,125,126,6,4,-1,0,126,128,1,0, + 0,0,127,122,1,0,0,0,127,124,1,0,0,0,128,138,1,0,0,0,129,130,5,10,0,0,130, + 131,3,6,3,0,131,132,6,4,-1,0,132,138,1,0,0,0,133,134,5,11,0,0,134,135, + 3,6,3,0,135,136,6,4,-1,0,136,138,1,0,0,0,137,121,1,0,0,0,137,129,1,0,0, + 0,137,133,1,0,0,0,138,141,1,0,0,0,139,137,1,0,0,0,139,140,1,0,0,0,140, + 142,1,0,0,0,141,139,1,0,0,0,142,143,6,4,-1,0,143,9,1,0,0,0,144,145,3,8, + 4,0,145,160,6,5,-1,0,146,152,5,6,0,0,147,148,7,0,0,0,148,153,6,5,-1,0, + 149,150,3,8,4,0,150,151,6,5,-1,0,151,153,1,0,0,0,152,147,1,0,0,0,152,149, + 1,0,0,0,153,159,1,0,0,0,154,155,5,5,0,0,155,156,3,8,4,0,156,157,6,5,-1, + 0,157,159,1,0,0,0,158,146,1,0,0,0,158,154,1,0,0,0,159,162,1,0,0,0,160, + 158,1,0,0,0,160,161,1,0,0,0,161,163,1,0,0,0,162,160,1,0,0,0,163,164,6, + 5,-1,0,164,11,1,0,0,0,165,166,3,10,5,0,166,177,6,6,-1,0,167,168,5,12,0, + 0,168,169,3,10,5,0,169,170,6,6,-1,0,170,176,1,0,0,0,171,172,5,13,0,0,172, + 173,3,10,5,0,173,174,6,6,-1,0,174,176,1,0,0,0,175,167,1,0,0,0,175,171, + 1,0,0,0,176,179,1,0,0,0,177,175,1,0,0,0,177,178,1,0,0,0,178,13,1,0,0,0, + 179,177,1,0,0,0,180,181,3,12,6,0,181,200,6,7,-1,0,182,183,5,14,0,0,183, + 184,3,12,6,0,184,185,6,7,-1,0,185,199,1,0,0,0,186,187,5,15,0,0,187,188, + 3,12,6,0,188,189,6,7,-1,0,189,199,1,0,0,0,190,191,5,16,0,0,191,192,3,12, + 6,0,192,193,6,7,-1,0,193,199,1,0,0,0,194,195,5,17,0,0,195,196,3,12,6,0, + 196,197,6,7,-1,0,197,199,1,0,0,0,198,182,1,0,0,0,198,186,1,0,0,0,198,190, + 1,0,0,0,198,194,1,0,0,0,199,202,1,0,0,0,200,198,1,0,0,0,200,201,1,0,0, + 0,201,15,1,0,0,0,202,200,1,0,0,0,203,204,3,14,7,0,204,235,6,8,-1,0,205, + 206,5,18,0,0,206,207,3,14,7,0,207,208,6,8,-1,0,208,234,1,0,0,0,209,210, + 5,19,0,0,210,211,3,14,7,0,211,212,6,8,-1,0,212,234,1,0,0,0,213,214,5,20, + 0,0,214,215,3,14,7,0,215,216,6,8,-1,0,216,234,1,0,0,0,217,218,5,21,0,0, + 218,219,3,14,7,0,219,220,6,8,-1,0,220,234,1,0,0,0,221,222,5,22,0,0,222, + 223,3,14,7,0,223,224,6,8,-1,0,224,234,1,0,0,0,225,226,5,23,0,0,226,227, + 3,14,7,0,227,228,6,8,-1,0,228,234,1,0,0,0,229,230,5,24,0,0,230,231,3,14, + 7,0,231,232,6,8,-1,0,232,234,1,0,0,0,233,205,1,0,0,0,233,209,1,0,0,0,233, + 213,1,0,0,0,233,217,1,0,0,0,233,221,1,0,0,0,233,225,1,0,0,0,233,229,1, + 0,0,0,234,237,1,0,0,0,235,233,1,0,0,0,235,236,1,0,0,0,236,17,1,0,0,0,237, + 235,1,0,0,0,238,239,3,16,8,0,239,261,6,9,-1,0,240,241,5,25,0,0,241,255, + 6,9,-1,0,242,243,5,26,0,0,243,255,6,9,-1,0,244,245,5,27,0,0,245,255,6, + 9,-1,0,246,247,5,28,0,0,247,255,6,9,-1,0,248,249,5,29,0,0,249,255,6,9, + -1,0,250,251,5,30,0,0,251,255,6,9,-1,0,252,253,5,31,0,0,253,255,6,9,-1, + 0,254,240,1,0,0,0,254,242,1,0,0,0,254,244,1,0,0,0,254,246,1,0,0,0,254, + 248,1,0,0,0,254,250,1,0,0,0,254,252,1,0,0,0,255,256,1,0,0,0,256,257,3, + 16,8,0,257,258,6,9,-1,0,258,260,1,0,0,0,259,254,1,0,0,0,260,263,1,0,0, + 0,261,259,1,0,0,0,261,262,1,0,0,0,262,270,1,0,0,0,263,261,1,0,0,0,264, + 265,5,32,0,0,265,266,5,11,0,0,266,267,3,16,8,0,267,268,5,33,0,0,268,269, + 6,9,-1,0,269,271,1,0,0,0,270,264,1,0,0,0,270,271,1,0,0,0,271,272,1,0,0, + 0,272,273,6,9,-1,0,273,19,1,0,0,0,274,275,5,34,0,0,275,276,3,18,9,0,276, + 277,6,10,-1,0,277,290,1,0,0,0,278,279,5,34,0,0,279,280,3,20,10,0,280,281, + 6,10,-1,0,281,290,1,0,0,0,282,283,5,34,0,0,283,284,3,34,17,0,284,285,6, + 10,-1,0,285,290,1,0,0,0,286,287,3,18,9,0,287,288,6,10,-1,0,288,290,1,0, + 0,0,289,274,1,0,0,0,289,278,1,0,0,0,289,282,1,0,0,0,289,286,1,0,0,0,290, + 21,1,0,0,0,291,292,3,20,10,0,292,307,6,11,-1,0,293,294,5,35,0,0,294,295, + 3,20,10,0,295,296,6,11,-1,0,296,306,1,0,0,0,297,298,5,36,0,0,298,299,3, + 20,10,0,299,300,6,11,-1,0,300,306,1,0,0,0,301,302,7,1,0,0,302,303,3,34, + 17,0,303,304,6,11,-1,0,304,306,1,0,0,0,305,293,1,0,0,0,305,297,1,0,0,0, + 305,301,1,0,0,0,306,309,1,0,0,0,307,305,1,0,0,0,307,308,1,0,0,0,308,23, + 1,0,0,0,309,307,1,0,0,0,310,311,3,22,11,0,311,322,6,12,-1,0,312,313,5, + 37,0,0,313,314,3,22,11,0,314,315,6,12,-1,0,315,321,1,0,0,0,316,317,5,37, + 0,0,317,318,3,34,17,0,318,319,6,12,-1,0,319,321,1,0,0,0,320,312,1,0,0, + 0,320,316,1,0,0,0,321,324,1,0,0,0,322,320,1,0,0,0,322,323,1,0,0,0,323, + 25,1,0,0,0,324,322,1,0,0,0,325,326,3,24,12,0,326,337,6,13,-1,0,327,328, + 5,38,0,0,328,329,3,24,12,0,329,330,6,13,-1,0,330,336,1,0,0,0,331,332,5, + 38,0,0,332,333,3,34,17,0,333,334,6,13,-1,0,334,336,1,0,0,0,335,327,1,0, + 0,0,335,331,1,0,0,0,336,339,1,0,0,0,337,335,1,0,0,0,337,338,1,0,0,0,338, + 27,1,0,0,0,339,337,1,0,0,0,340,341,3,26,13,0,341,356,6,14,-1,0,342,343, + 5,39,0,0,343,344,3,26,13,0,344,345,6,14,-1,0,345,355,1,0,0,0,346,347,5, + 40,0,0,347,348,3,26,13,0,348,349,6,14,-1,0,349,355,1,0,0,0,350,351,7,2, + 0,0,351,352,3,34,17,0,352,353,6,14,-1,0,353,355,1,0,0,0,354,342,1,0,0, + 0,354,346,1,0,0,0,354,350,1,0,0,0,355,358,1,0,0,0,356,354,1,0,0,0,356, + 357,1,0,0,0,357,29,1,0,0,0,358,356,1,0,0,0,359,360,3,28,14,0,360,365,6, + 15,-1,0,361,362,5,41,0,0,362,363,3,30,15,0,363,364,6,15,-1,0,364,366,1, + 0,0,0,365,361,1,0,0,0,365,366,1,0,0,0,366,31,1,0,0,0,367,368,3,30,15,0, + 368,373,6,16,-1,0,369,370,5,42,0,0,370,371,3,32,16,0,371,372,6,16,-1,0, + 372,374,1,0,0,0,373,369,1,0,0,0,373,374,1,0,0,0,374,379,1,0,0,0,375,376, + 3,34,17,0,376,377,6,16,-1,0,377,379,1,0,0,0,378,367,1,0,0,0,378,375,1, + 0,0,0,379,33,1,0,0,0,380,381,3,36,18,0,381,382,3,38,19,0,382,383,5,43, + 0,0,383,384,3,32,16,0,384,385,6,17,-1,0,385,35,1,0,0,0,386,387,7,3,0,0, + 387,393,6,18,-1,0,388,389,7,4,0,0,389,393,6,18,-1,0,390,391,7,5,0,0,391, + 393,6,18,-1,0,392,386,1,0,0,0,392,388,1,0,0,0,392,390,1,0,0,0,393,37,1, + 0,0,0,394,395,3,16,8,0,395,402,6,19,-1,0,396,397,5,50,0,0,397,398,3,16, + 8,0,398,399,6,19,-1,0,399,401,1,0,0,0,400,396,1,0,0,0,401,404,1,0,0,0, + 402,400,1,0,0,0,402,403,1,0,0,0,403,405,1,0,0,0,404,402,1,0,0,0,405,406, + 6,19,-1,0,406,39,1,0,0,0,407,408,3,32,16,0,408,415,6,20,-1,0,409,410,5, + 50,0,0,410,411,3,32,16,0,411,412,6,20,-1,0,412,414,1,0,0,0,413,409,1,0, + 0,0,414,417,1,0,0,0,415,413,1,0,0,0,415,416,1,0,0,0,416,419,1,0,0,0,417, + 415,1,0,0,0,418,407,1,0,0,0,418,419,1,0,0,0,419,41,1,0,0,0,420,421,3,32, + 16,0,421,422,6,21,-1,0,422,426,1,0,0,0,423,424,7,0,0,0,424,426,6,21,-1, + 0,425,420,1,0,0,0,425,423,1,0,0,0,426,437,1,0,0,0,427,433,5,50,0,0,428, + 429,3,32,16,0,429,430,6,21,-1,0,430,434,1,0,0,0,431,432,7,0,0,0,432,434, + 6,21,-1,0,433,428,1,0,0,0,433,431,1,0,0,0,434,436,1,0,0,0,435,427,1,0, + 0,0,436,439,1,0,0,0,437,435,1,0,0,0,437,438,1,0,0,0,438,441,1,0,0,0,439, + 437,1,0,0,0,440,425,1,0,0,0,440,441,1,0,0,0,441,43,1,0,0,0,442,443,3,32, + 16,0,443,444,6,22,-1,0,444,445,5,51,0,0,445,446,3,32,16,0,446,447,6,22, + -1,0,447,45,1,0,0,0,448,449,3,32,16,0,449,450,6,23,-1,0,450,451,5,43,0, + 0,451,452,3,32,16,0,452,453,6,23,-1,0,453,47,1,0,0,0,454,455,5,52,0,0, + 455,1363,6,24,-1,0,456,457,5,53,0,0,457,1363,6,24,-1,0,458,459,5,234,0, + 0,459,1363,6,24,-1,0,460,461,5,231,0,0,461,1363,6,24,-1,0,462,463,5,233, + 0,0,463,1363,6,24,-1,0,464,465,5,232,0,0,465,1363,6,24,-1,0,466,467,5, + 235,0,0,467,1363,6,24,-1,0,468,469,5,54,0,0,469,470,3,32,16,0,470,471, + 5,55,0,0,471,472,6,24,-1,0,472,1363,1,0,0,0,473,474,5,56,0,0,474,475,3, + 48,24,0,475,476,6,24,-1,0,476,1363,1,0,0,0,477,478,5,57,0,0,478,479,3, + 40,20,0,479,480,5,58,0,0,480,481,6,24,-1,0,481,1363,1,0,0,0,482,483,5, + 57,0,0,483,484,3,40,20,0,484,485,5,59,0,0,485,486,6,24,-1,0,486,1363,1, + 0,0,0,487,488,5,32,0,0,488,489,3,44,22,0,489,490,5,33,0,0,490,491,6,24, + -1,0,491,1363,1,0,0,0,492,493,5,57,0,0,493,494,3,44,22,0,494,495,5,33, + 0,0,495,496,6,24,-1,0,496,1363,1,0,0,0,497,498,5,57,0,0,498,499,3,44,22, + 0,499,500,5,59,0,0,500,501,6,24,-1,0,501,1363,1,0,0,0,502,503,5,32,0,0, + 503,504,3,44,22,0,504,505,5,59,0,0,505,506,6,24,-1,0,506,1363,1,0,0,0, + 507,508,5,32,0,0,508,509,3,32,16,0,509,510,5,33,0,0,510,511,6,24,-1,0, + 511,1363,1,0,0,0,512,513,5,60,0,0,513,514,3,46,23,0,514,515,5,61,0,0,515, + 516,6,24,-1,0,516,1363,1,0,0,0,517,518,5,60,0,0,518,519,3,42,21,0,519, + 520,5,61,0,0,520,521,6,24,-1,0,521,1363,1,0,0,0,522,523,5,62,0,0,523,524, + 3,40,20,0,524,525,5,33,0,0,525,526,6,24,-1,0,526,1363,1,0,0,0,527,528, + 5,63,0,0,528,529,3,40,20,0,529,530,5,33,0,0,530,531,6,24,-1,0,531,1363, + 1,0,0,0,532,533,5,64,0,0,533,534,3,40,20,0,534,535,5,33,0,0,535,536,6, + 24,-1,0,536,1363,1,0,0,0,537,538,5,65,0,0,538,539,3,40,20,0,539,540,5, + 33,0,0,540,541,6,24,-1,0,541,1363,1,0,0,0,542,543,5,66,0,0,543,544,3,40, + 20,0,544,545,5,33,0,0,545,546,6,24,-1,0,546,1363,1,0,0,0,547,548,5,67, + 0,0,548,549,3,40,20,0,549,550,5,33,0,0,550,551,6,24,-1,0,551,1363,1,0, + 0,0,552,553,5,68,0,0,553,554,3,40,20,0,554,555,5,33,0,0,555,556,6,24,-1, + 0,556,1363,1,0,0,0,557,558,5,69,0,0,558,559,3,40,20,0,559,560,5,33,0,0, + 560,561,6,24,-1,0,561,1363,1,0,0,0,562,563,5,70,0,0,563,564,3,40,20,0, + 564,565,5,33,0,0,565,566,6,24,-1,0,566,1363,1,0,0,0,567,568,5,71,0,0,568, + 569,3,40,20,0,569,570,5,33,0,0,570,571,6,24,-1,0,571,1363,1,0,0,0,572, + 573,5,72,0,0,573,574,3,40,20,0,574,575,5,33,0,0,575,576,6,24,-1,0,576, + 1363,1,0,0,0,577,578,5,73,0,0,578,579,3,40,20,0,579,580,5,33,0,0,580,581, + 6,24,-1,0,581,1363,1,0,0,0,582,583,5,74,0,0,583,584,3,40,20,0,584,585, + 5,33,0,0,585,586,6,24,-1,0,586,1363,1,0,0,0,587,588,5,75,0,0,588,589,3, + 40,20,0,589,590,5,33,0,0,590,591,6,24,-1,0,591,1363,1,0,0,0,592,593,5, + 76,0,0,593,594,3,40,20,0,594,595,5,33,0,0,595,596,6,24,-1,0,596,1363,1, + 0,0,0,597,598,5,77,0,0,598,599,3,40,20,0,599,600,5,33,0,0,600,601,6,24, + -1,0,601,1363,1,0,0,0,602,603,5,78,0,0,603,604,3,40,20,0,604,605,5,33, + 0,0,605,606,6,24,-1,0,606,1363,1,0,0,0,607,608,5,79,0,0,608,609,3,40,20, + 0,609,610,5,33,0,0,610,611,6,24,-1,0,611,1363,1,0,0,0,612,613,5,80,0,0, + 613,614,3,40,20,0,614,615,5,33,0,0,615,616,6,24,-1,0,616,1363,1,0,0,0, + 617,618,5,81,0,0,618,619,3,40,20,0,619,620,5,33,0,0,620,621,6,24,-1,0, + 621,1363,1,0,0,0,622,623,5,82,0,0,623,624,3,40,20,0,624,625,5,33,0,0,625, + 626,6,24,-1,0,626,1363,1,0,0,0,627,628,5,83,0,0,628,629,3,40,20,0,629, + 630,5,33,0,0,630,631,6,24,-1,0,631,1363,1,0,0,0,632,633,5,84,0,0,633,634, + 3,40,20,0,634,635,5,33,0,0,635,636,6,24,-1,0,636,1363,1,0,0,0,637,638, + 5,85,0,0,638,639,3,40,20,0,639,640,5,33,0,0,640,641,6,24,-1,0,641,1363, + 1,0,0,0,642,643,5,86,0,0,643,644,3,40,20,0,644,645,5,33,0,0,645,646,6, + 24,-1,0,646,1363,1,0,0,0,647,648,5,87,0,0,648,649,3,40,20,0,649,650,5, + 33,0,0,650,651,6,24,-1,0,651,1363,1,0,0,0,652,653,5,88,0,0,653,654,3,40, + 20,0,654,655,5,33,0,0,655,656,6,24,-1,0,656,1363,1,0,0,0,657,658,5,89, + 0,0,658,659,3,40,20,0,659,660,5,33,0,0,660,661,6,24,-1,0,661,1363,1,0, + 0,0,662,663,5,90,0,0,663,664,3,40,20,0,664,665,5,33,0,0,665,666,6,24,-1, + 0,666,1363,1,0,0,0,667,668,5,91,0,0,668,669,3,40,20,0,669,670,5,33,0,0, + 670,671,6,24,-1,0,671,1363,1,0,0,0,672,673,5,92,0,0,673,674,3,40,20,0, + 674,675,5,33,0,0,675,676,6,24,-1,0,676,1363,1,0,0,0,677,678,5,93,0,0,678, + 679,3,40,20,0,679,680,5,33,0,0,680,681,6,24,-1,0,681,1363,1,0,0,0,682, + 683,5,94,0,0,683,684,3,40,20,0,684,685,5,33,0,0,685,686,6,24,-1,0,686, + 1363,1,0,0,0,687,688,5,95,0,0,688,689,3,40,20,0,689,690,5,33,0,0,690,691, + 6,24,-1,0,691,1363,1,0,0,0,692,693,5,96,0,0,693,694,3,40,20,0,694,695, + 5,33,0,0,695,696,6,24,-1,0,696,1363,1,0,0,0,697,698,5,97,0,0,698,699,3, + 40,20,0,699,700,5,33,0,0,700,701,6,24,-1,0,701,1363,1,0,0,0,702,703,5, + 98,0,0,703,704,3,40,20,0,704,705,5,33,0,0,705,706,6,24,-1,0,706,1363,1, + 0,0,0,707,708,5,99,0,0,708,709,3,40,20,0,709,710,5,33,0,0,710,711,6,24, + -1,0,711,1363,1,0,0,0,712,713,5,100,0,0,713,714,3,40,20,0,714,715,5,33, + 0,0,715,716,6,24,-1,0,716,1363,1,0,0,0,717,718,5,101,0,0,718,719,3,40, + 20,0,719,720,5,33,0,0,720,721,6,24,-1,0,721,1363,1,0,0,0,722,723,5,102, + 0,0,723,724,3,40,20,0,724,725,5,33,0,0,725,726,6,24,-1,0,726,1363,1,0, + 0,0,727,728,5,103,0,0,728,729,3,40,20,0,729,730,5,33,0,0,730,731,6,24, + -1,0,731,1363,1,0,0,0,732,733,5,104,0,0,733,734,3,40,20,0,734,735,5,33, + 0,0,735,736,6,24,-1,0,736,1363,1,0,0,0,737,738,5,105,0,0,738,739,3,40, + 20,0,739,740,5,33,0,0,740,741,6,24,-1,0,741,1363,1,0,0,0,742,743,5,106, + 0,0,743,744,3,40,20,0,744,745,5,33,0,0,745,746,6,24,-1,0,746,1363,1,0, + 0,0,747,748,5,107,0,0,748,749,3,40,20,0,749,750,5,33,0,0,750,751,6,24, + -1,0,751,1363,1,0,0,0,752,753,5,108,0,0,753,754,3,40,20,0,754,755,5,33, + 0,0,755,756,6,24,-1,0,756,1363,1,0,0,0,757,758,5,109,0,0,758,759,3,40, + 20,0,759,760,5,33,0,0,760,761,6,24,-1,0,761,1363,1,0,0,0,762,763,5,110, + 0,0,763,764,3,40,20,0,764,765,5,33,0,0,765,766,6,24,-1,0,766,1363,1,0, + 0,0,767,768,5,111,0,0,768,769,3,40,20,0,769,770,5,33,0,0,770,771,6,24, + -1,0,771,1363,1,0,0,0,772,773,5,112,0,0,773,774,3,40,20,0,774,775,5,33, + 0,0,775,776,6,24,-1,0,776,1363,1,0,0,0,777,778,5,113,0,0,778,779,3,40, + 20,0,779,780,5,33,0,0,780,781,6,24,-1,0,781,1363,1,0,0,0,782,783,5,114, + 0,0,783,784,3,40,20,0,784,785,5,33,0,0,785,786,6,24,-1,0,786,1363,1,0, + 0,0,787,788,5,115,0,0,788,789,3,40,20,0,789,790,5,33,0,0,790,791,6,24, + -1,0,791,1363,1,0,0,0,792,793,5,116,0,0,793,794,3,40,20,0,794,795,5,33, + 0,0,795,796,6,24,-1,0,796,1363,1,0,0,0,797,798,5,117,0,0,798,799,3,40, + 20,0,799,800,5,33,0,0,800,801,6,24,-1,0,801,1363,1,0,0,0,802,803,5,118, + 0,0,803,804,3,40,20,0,804,805,5,33,0,0,805,806,6,24,-1,0,806,1363,1,0, + 0,0,807,808,5,119,0,0,808,809,3,40,20,0,809,810,5,33,0,0,810,811,6,24, + -1,0,811,1363,1,0,0,0,812,813,5,120,0,0,813,814,3,40,20,0,814,815,5,33, + 0,0,815,816,6,24,-1,0,816,1363,1,0,0,0,817,818,5,121,0,0,818,819,3,40, + 20,0,819,820,5,33,0,0,820,821,6,24,-1,0,821,1363,1,0,0,0,822,823,5,122, + 0,0,823,824,3,40,20,0,824,825,5,33,0,0,825,826,6,24,-1,0,826,1363,1,0, + 0,0,827,828,5,123,0,0,828,829,3,40,20,0,829,830,5,33,0,0,830,831,6,24, + -1,0,831,1363,1,0,0,0,832,833,5,124,0,0,833,834,3,40,20,0,834,835,5,33, + 0,0,835,836,6,24,-1,0,836,1363,1,0,0,0,837,838,5,125,0,0,838,839,3,40, + 20,0,839,840,5,33,0,0,840,841,6,24,-1,0,841,1363,1,0,0,0,842,843,5,126, + 0,0,843,844,3,40,20,0,844,845,5,33,0,0,845,846,6,24,-1,0,846,1363,1,0, + 0,0,847,848,5,127,0,0,848,849,3,40,20,0,849,850,5,33,0,0,850,851,6,24, + -1,0,851,1363,1,0,0,0,852,853,5,128,0,0,853,854,3,40,20,0,854,855,5,33, + 0,0,855,856,6,24,-1,0,856,1363,1,0,0,0,857,858,5,129,0,0,858,859,3,40, + 20,0,859,860,5,33,0,0,860,861,6,24,-1,0,861,1363,1,0,0,0,862,863,5,130, + 0,0,863,864,3,40,20,0,864,865,5,33,0,0,865,866,6,24,-1,0,866,1363,1,0, + 0,0,867,868,5,131,0,0,868,869,3,40,20,0,869,870,5,33,0,0,870,871,6,24, + -1,0,871,1363,1,0,0,0,872,873,5,132,0,0,873,874,3,40,20,0,874,875,5,33, + 0,0,875,876,6,24,-1,0,876,1363,1,0,0,0,877,878,5,133,0,0,878,879,3,40, + 20,0,879,880,5,33,0,0,880,881,6,24,-1,0,881,1363,1,0,0,0,882,883,5,134, + 0,0,883,884,3,40,20,0,884,885,5,33,0,0,885,886,6,24,-1,0,886,1363,1,0, + 0,0,887,888,5,135,0,0,888,889,3,40,20,0,889,890,5,33,0,0,890,891,6,24, + -1,0,891,1363,1,0,0,0,892,893,5,136,0,0,893,894,3,40,20,0,894,895,5,33, + 0,0,895,896,6,24,-1,0,896,1363,1,0,0,0,897,898,5,137,0,0,898,899,3,40, + 20,0,899,900,5,33,0,0,900,901,6,24,-1,0,901,1363,1,0,0,0,902,903,5,138, + 0,0,903,904,3,40,20,0,904,905,5,33,0,0,905,906,6,24,-1,0,906,1363,1,0, + 0,0,907,908,5,139,0,0,908,909,3,40,20,0,909,910,5,33,0,0,910,911,6,24, + -1,0,911,1363,1,0,0,0,912,913,5,140,0,0,913,914,3,40,20,0,914,915,5,33, + 0,0,915,916,6,24,-1,0,916,1363,1,0,0,0,917,918,5,141,0,0,918,919,3,40, + 20,0,919,920,5,33,0,0,920,921,6,24,-1,0,921,1363,1,0,0,0,922,923,5,142, + 0,0,923,924,3,40,20,0,924,925,5,33,0,0,925,926,6,24,-1,0,926,1363,1,0, + 0,0,927,928,5,143,0,0,928,929,3,40,20,0,929,930,5,33,0,0,930,931,6,24, + -1,0,931,1363,1,0,0,0,932,933,5,144,0,0,933,934,3,40,20,0,934,935,5,33, + 0,0,935,936,6,24,-1,0,936,1363,1,0,0,0,937,938,5,145,0,0,938,939,3,40, + 20,0,939,940,5,33,0,0,940,941,6,24,-1,0,941,1363,1,0,0,0,942,943,5,146, + 0,0,943,944,3,40,20,0,944,945,5,33,0,0,945,946,6,24,-1,0,946,1363,1,0, + 0,0,947,948,5,147,0,0,948,949,3,40,20,0,949,950,5,33,0,0,950,951,6,24, + -1,0,951,1363,1,0,0,0,952,953,5,148,0,0,953,954,3,40,20,0,954,955,5,33, + 0,0,955,956,6,24,-1,0,956,1363,1,0,0,0,957,958,5,149,0,0,958,959,3,40, + 20,0,959,960,5,33,0,0,960,961,6,24,-1,0,961,1363,1,0,0,0,962,963,5,150, + 0,0,963,964,3,40,20,0,964,965,5,33,0,0,965,966,6,24,-1,0,966,1363,1,0, + 0,0,967,968,5,151,0,0,968,969,3,40,20,0,969,970,5,33,0,0,970,971,6,24, + -1,0,971,1363,1,0,0,0,972,973,5,152,0,0,973,974,3,40,20,0,974,975,5,33, + 0,0,975,976,6,24,-1,0,976,1363,1,0,0,0,977,978,5,153,0,0,978,979,3,40, + 20,0,979,980,5,33,0,0,980,981,6,24,-1,0,981,1363,1,0,0,0,982,983,5,154, + 0,0,983,984,3,40,20,0,984,985,5,33,0,0,985,986,6,24,-1,0,986,1363,1,0, + 0,0,987,988,5,155,0,0,988,989,3,40,20,0,989,990,5,33,0,0,990,991,6,24, + -1,0,991,1363,1,0,0,0,992,993,5,156,0,0,993,994,3,40,20,0,994,995,5,33, + 0,0,995,996,6,24,-1,0,996,1363,1,0,0,0,997,998,5,157,0,0,998,999,3,40, + 20,0,999,1000,5,33,0,0,1000,1001,6,24,-1,0,1001,1363,1,0,0,0,1002,1003, + 5,158,0,0,1003,1004,3,40,20,0,1004,1005,5,33,0,0,1005,1006,6,24,-1,0,1006, + 1363,1,0,0,0,1007,1008,5,159,0,0,1008,1009,3,40,20,0,1009,1010,5,33,0, + 0,1010,1011,6,24,-1,0,1011,1363,1,0,0,0,1012,1013,5,160,0,0,1013,1014, + 3,40,20,0,1014,1015,5,33,0,0,1015,1016,6,24,-1,0,1016,1363,1,0,0,0,1017, + 1018,5,161,0,0,1018,1019,3,40,20,0,1019,1020,5,33,0,0,1020,1021,6,24,-1, + 0,1021,1363,1,0,0,0,1022,1023,5,162,0,0,1023,1024,3,40,20,0,1024,1025, + 5,33,0,0,1025,1026,6,24,-1,0,1026,1363,1,0,0,0,1027,1028,5,163,0,0,1028, + 1029,3,40,20,0,1029,1030,5,33,0,0,1030,1031,6,24,-1,0,1031,1363,1,0,0, + 0,1032,1033,5,164,0,0,1033,1034,3,40,20,0,1034,1035,5,33,0,0,1035,1036, + 6,24,-1,0,1036,1363,1,0,0,0,1037,1038,5,165,0,0,1038,1039,3,40,20,0,1039, + 1040,5,33,0,0,1040,1041,6,24,-1,0,1041,1363,1,0,0,0,1042,1043,5,166,0, + 0,1043,1044,3,40,20,0,1044,1045,5,33,0,0,1045,1046,6,24,-1,0,1046,1363, + 1,0,0,0,1047,1048,5,167,0,0,1048,1049,3,40,20,0,1049,1050,5,33,0,0,1050, + 1051,6,24,-1,0,1051,1363,1,0,0,0,1052,1053,5,168,0,0,1053,1054,3,40,20, + 0,1054,1055,5,33,0,0,1055,1056,6,24,-1,0,1056,1363,1,0,0,0,1057,1058,5, + 169,0,0,1058,1059,3,40,20,0,1059,1060,5,33,0,0,1060,1061,6,24,-1,0,1061, + 1363,1,0,0,0,1062,1063,5,170,0,0,1063,1064,3,40,20,0,1064,1065,5,33,0, + 0,1065,1066,6,24,-1,0,1066,1363,1,0,0,0,1067,1068,5,171,0,0,1068,1069, + 3,40,20,0,1069,1070,5,33,0,0,1070,1071,6,24,-1,0,1071,1363,1,0,0,0,1072, + 1073,5,172,0,0,1073,1074,3,40,20,0,1074,1075,5,33,0,0,1075,1076,6,24,-1, + 0,1076,1363,1,0,0,0,1077,1078,5,173,0,0,1078,1079,3,40,20,0,1079,1080, + 5,33,0,0,1080,1081,6,24,-1,0,1081,1363,1,0,0,0,1082,1083,5,174,0,0,1083, + 1084,3,40,20,0,1084,1085,5,33,0,0,1085,1086,6,24,-1,0,1086,1363,1,0,0, + 0,1087,1088,5,175,0,0,1088,1089,3,40,20,0,1089,1090,5,33,0,0,1090,1091, + 6,24,-1,0,1091,1363,1,0,0,0,1092,1093,5,176,0,0,1093,1094,3,40,20,0,1094, + 1095,5,33,0,0,1095,1096,6,24,-1,0,1096,1363,1,0,0,0,1097,1098,5,177,0, + 0,1098,1099,3,40,20,0,1099,1100,5,33,0,0,1100,1101,6,24,-1,0,1101,1363, + 1,0,0,0,1102,1103,5,178,0,0,1103,1104,3,40,20,0,1104,1105,5,33,0,0,1105, + 1106,6,24,-1,0,1106,1363,1,0,0,0,1107,1108,5,179,0,0,1108,1109,3,40,20, + 0,1109,1110,5,33,0,0,1110,1111,6,24,-1,0,1111,1363,1,0,0,0,1112,1113,5, + 180,0,0,1113,1114,3,40,20,0,1114,1115,5,33,0,0,1115,1116,6,24,-1,0,1116, + 1363,1,0,0,0,1117,1118,5,181,0,0,1118,1119,3,40,20,0,1119,1120,5,33,0, + 0,1120,1121,6,24,-1,0,1121,1363,1,0,0,0,1122,1123,5,182,0,0,1123,1124, + 3,40,20,0,1124,1125,5,33,0,0,1125,1126,6,24,-1,0,1126,1363,1,0,0,0,1127, + 1128,5,183,0,0,1128,1129,3,40,20,0,1129,1130,5,33,0,0,1130,1131,6,24,-1, + 0,1131,1363,1,0,0,0,1132,1133,5,184,0,0,1133,1134,3,40,20,0,1134,1135, + 5,33,0,0,1135,1136,6,24,-1,0,1136,1363,1,0,0,0,1137,1138,5,185,0,0,1138, + 1139,3,40,20,0,1139,1140,5,33,0,0,1140,1141,6,24,-1,0,1141,1363,1,0,0, + 0,1142,1143,5,186,0,0,1143,1144,3,40,20,0,1144,1145,5,33,0,0,1145,1146, + 6,24,-1,0,1146,1363,1,0,0,0,1147,1148,5,187,0,0,1148,1149,3,40,20,0,1149, + 1150,5,33,0,0,1150,1151,6,24,-1,0,1151,1363,1,0,0,0,1152,1153,5,188,0, + 0,1153,1154,3,40,20,0,1154,1155,5,33,0,0,1155,1156,6,24,-1,0,1156,1363, + 1,0,0,0,1157,1158,5,189,0,0,1158,1159,3,40,20,0,1159,1160,5,33,0,0,1160, + 1161,6,24,-1,0,1161,1363,1,0,0,0,1162,1163,5,190,0,0,1163,1164,3,40,20, + 0,1164,1165,5,33,0,0,1165,1166,6,24,-1,0,1166,1363,1,0,0,0,1167,1168,5, + 191,0,0,1168,1169,3,40,20,0,1169,1170,5,33,0,0,1170,1171,6,24,-1,0,1171, + 1363,1,0,0,0,1172,1173,5,192,0,0,1173,1174,3,40,20,0,1174,1175,5,33,0, + 0,1175,1176,6,24,-1,0,1176,1363,1,0,0,0,1177,1178,5,193,0,0,1178,1179, + 3,40,20,0,1179,1180,5,33,0,0,1180,1181,6,24,-1,0,1181,1363,1,0,0,0,1182, + 1183,5,194,0,0,1183,1184,3,40,20,0,1184,1185,5,33,0,0,1185,1186,6,24,-1, + 0,1186,1363,1,0,0,0,1187,1188,5,195,0,0,1188,1189,3,40,20,0,1189,1190, + 5,33,0,0,1190,1191,6,24,-1,0,1191,1363,1,0,0,0,1192,1193,5,196,0,0,1193, + 1194,3,40,20,0,1194,1195,5,33,0,0,1195,1196,6,24,-1,0,1196,1363,1,0,0, + 0,1197,1198,5,197,0,0,1198,1199,3,40,20,0,1199,1200,5,33,0,0,1200,1201, + 6,24,-1,0,1201,1363,1,0,0,0,1202,1203,5,198,0,0,1203,1204,3,40,20,0,1204, + 1205,5,33,0,0,1205,1206,6,24,-1,0,1206,1363,1,0,0,0,1207,1208,5,199,0, + 0,1208,1209,3,40,20,0,1209,1210,5,33,0,0,1210,1211,6,24,-1,0,1211,1363, + 1,0,0,0,1212,1213,5,200,0,0,1213,1214,3,40,20,0,1214,1215,5,33,0,0,1215, + 1216,6,24,-1,0,1216,1363,1,0,0,0,1217,1218,5,201,0,0,1218,1219,3,40,20, + 0,1219,1220,5,33,0,0,1220,1221,6,24,-1,0,1221,1363,1,0,0,0,1222,1223,5, + 202,0,0,1223,1224,3,40,20,0,1224,1225,5,33,0,0,1225,1226,6,24,-1,0,1226, + 1363,1,0,0,0,1227,1228,5,203,0,0,1228,1229,3,40,20,0,1229,1230,5,33,0, + 0,1230,1231,6,24,-1,0,1231,1363,1,0,0,0,1232,1233,5,204,0,0,1233,1234, + 3,40,20,0,1234,1235,5,33,0,0,1235,1236,6,24,-1,0,1236,1363,1,0,0,0,1237, + 1238,5,205,0,0,1238,1239,3,40,20,0,1239,1240,5,33,0,0,1240,1241,6,24,-1, + 0,1241,1363,1,0,0,0,1242,1243,5,206,0,0,1243,1244,3,40,20,0,1244,1245, + 5,33,0,0,1245,1246,6,24,-1,0,1246,1363,1,0,0,0,1247,1248,5,207,0,0,1248, + 1249,3,40,20,0,1249,1250,5,33,0,0,1250,1251,6,24,-1,0,1251,1363,1,0,0, + 0,1252,1253,5,208,0,0,1253,1254,3,40,20,0,1254,1255,5,33,0,0,1255,1256, + 6,24,-1,0,1256,1363,1,0,0,0,1257,1258,5,209,0,0,1258,1259,3,40,20,0,1259, + 1260,5,33,0,0,1260,1261,6,24,-1,0,1261,1363,1,0,0,0,1262,1263,5,210,0, + 0,1263,1264,3,40,20,0,1264,1265,5,33,0,0,1265,1266,6,24,-1,0,1266,1363, + 1,0,0,0,1267,1268,5,211,0,0,1268,1269,3,40,20,0,1269,1270,5,33,0,0,1270, + 1271,6,24,-1,0,1271,1363,1,0,0,0,1272,1273,5,212,0,0,1273,1274,3,40,20, + 0,1274,1275,5,33,0,0,1275,1276,6,24,-1,0,1276,1363,1,0,0,0,1277,1278,5, + 213,0,0,1278,1279,3,40,20,0,1279,1280,5,33,0,0,1280,1281,6,24,-1,0,1281, + 1363,1,0,0,0,1282,1283,5,214,0,0,1283,1284,3,40,20,0,1284,1285,5,33,0, + 0,1285,1286,6,24,-1,0,1286,1363,1,0,0,0,1287,1288,5,215,0,0,1288,1289, + 3,40,20,0,1289,1290,5,33,0,0,1290,1291,6,24,-1,0,1291,1363,1,0,0,0,1292, + 1293,5,216,0,0,1293,1294,3,40,20,0,1294,1295,5,33,0,0,1295,1296,6,24,-1, + 0,1296,1363,1,0,0,0,1297,1298,5,217,0,0,1298,1299,3,40,20,0,1299,1300, + 5,33,0,0,1300,1301,6,24,-1,0,1301,1363,1,0,0,0,1302,1303,5,218,0,0,1303, + 1304,3,40,20,0,1304,1305,5,33,0,0,1305,1306,6,24,-1,0,1306,1363,1,0,0, + 0,1307,1308,5,219,0,0,1308,1309,3,40,20,0,1309,1310,5,33,0,0,1310,1311, + 6,24,-1,0,1311,1363,1,0,0,0,1312,1313,5,220,0,0,1313,1314,3,40,20,0,1314, + 1315,5,33,0,0,1315,1316,6,24,-1,0,1316,1363,1,0,0,0,1317,1318,5,221,0, + 0,1318,1319,3,40,20,0,1319,1320,5,33,0,0,1320,1321,6,24,-1,0,1321,1363, + 1,0,0,0,1322,1323,5,222,0,0,1323,1324,3,40,20,0,1324,1325,5,33,0,0,1325, + 1326,6,24,-1,0,1326,1363,1,0,0,0,1327,1328,5,223,0,0,1328,1329,3,40,20, + 0,1329,1330,5,33,0,0,1330,1331,6,24,-1,0,1331,1363,1,0,0,0,1332,1333,5, + 224,0,0,1333,1334,3,40,20,0,1334,1335,5,33,0,0,1335,1336,6,24,-1,0,1336, + 1363,1,0,0,0,1337,1338,5,225,0,0,1338,1339,3,40,20,0,1339,1340,5,33,0, + 0,1340,1341,6,24,-1,0,1341,1363,1,0,0,0,1342,1343,5,226,0,0,1343,1344, + 3,40,20,0,1344,1345,5,33,0,0,1345,1346,6,24,-1,0,1346,1363,1,0,0,0,1347, + 1348,5,227,0,0,1348,1349,3,40,20,0,1349,1350,5,33,0,0,1350,1351,6,24,-1, + 0,1351,1363,1,0,0,0,1352,1353,5,228,0,0,1353,1354,3,40,20,0,1354,1355, + 5,33,0,0,1355,1356,6,24,-1,0,1356,1363,1,0,0,0,1357,1358,5,229,0,0,1358, + 1359,3,40,20,0,1359,1360,5,33,0,0,1360,1361,6,24,-1,0,1361,1363,1,0,0, + 0,1362,454,1,0,0,0,1362,456,1,0,0,0,1362,458,1,0,0,0,1362,460,1,0,0,0, + 1362,462,1,0,0,0,1362,464,1,0,0,0,1362,466,1,0,0,0,1362,468,1,0,0,0,1362, + 473,1,0,0,0,1362,477,1,0,0,0,1362,482,1,0,0,0,1362,487,1,0,0,0,1362,492, + 1,0,0,0,1362,497,1,0,0,0,1362,502,1,0,0,0,1362,507,1,0,0,0,1362,512,1, + 0,0,0,1362,517,1,0,0,0,1362,522,1,0,0,0,1362,527,1,0,0,0,1362,532,1,0, + 0,0,1362,537,1,0,0,0,1362,542,1,0,0,0,1362,547,1,0,0,0,1362,552,1,0,0, + 0,1362,557,1,0,0,0,1362,562,1,0,0,0,1362,567,1,0,0,0,1362,572,1,0,0,0, + 1362,577,1,0,0,0,1362,582,1,0,0,0,1362,587,1,0,0,0,1362,592,1,0,0,0,1362, + 597,1,0,0,0,1362,602,1,0,0,0,1362,607,1,0,0,0,1362,612,1,0,0,0,1362,617, + 1,0,0,0,1362,622,1,0,0,0,1362,627,1,0,0,0,1362,632,1,0,0,0,1362,637,1, + 0,0,0,1362,642,1,0,0,0,1362,647,1,0,0,0,1362,652,1,0,0,0,1362,657,1,0, + 0,0,1362,662,1,0,0,0,1362,667,1,0,0,0,1362,672,1,0,0,0,1362,677,1,0,0, + 0,1362,682,1,0,0,0,1362,687,1,0,0,0,1362,692,1,0,0,0,1362,697,1,0,0,0, + 1362,702,1,0,0,0,1362,707,1,0,0,0,1362,712,1,0,0,0,1362,717,1,0,0,0,1362, + 722,1,0,0,0,1362,727,1,0,0,0,1362,732,1,0,0,0,1362,737,1,0,0,0,1362,742, + 1,0,0,0,1362,747,1,0,0,0,1362,752,1,0,0,0,1362,757,1,0,0,0,1362,762,1, + 0,0,0,1362,767,1,0,0,0,1362,772,1,0,0,0,1362,777,1,0,0,0,1362,782,1,0, + 0,0,1362,787,1,0,0,0,1362,792,1,0,0,0,1362,797,1,0,0,0,1362,802,1,0,0, + 0,1362,807,1,0,0,0,1362,812,1,0,0,0,1362,817,1,0,0,0,1362,822,1,0,0,0, + 1362,827,1,0,0,0,1362,832,1,0,0,0,1362,837,1,0,0,0,1362,842,1,0,0,0,1362, + 847,1,0,0,0,1362,852,1,0,0,0,1362,857,1,0,0,0,1362,862,1,0,0,0,1362,867, + 1,0,0,0,1362,872,1,0,0,0,1362,877,1,0,0,0,1362,882,1,0,0,0,1362,887,1, + 0,0,0,1362,892,1,0,0,0,1362,897,1,0,0,0,1362,902,1,0,0,0,1362,907,1,0, + 0,0,1362,912,1,0,0,0,1362,917,1,0,0,0,1362,922,1,0,0,0,1362,927,1,0,0, + 0,1362,932,1,0,0,0,1362,937,1,0,0,0,1362,942,1,0,0,0,1362,947,1,0,0,0, + 1362,952,1,0,0,0,1362,957,1,0,0,0,1362,962,1,0,0,0,1362,967,1,0,0,0,1362, + 972,1,0,0,0,1362,977,1,0,0,0,1362,982,1,0,0,0,1362,987,1,0,0,0,1362,992, + 1,0,0,0,1362,997,1,0,0,0,1362,1002,1,0,0,0,1362,1007,1,0,0,0,1362,1012, + 1,0,0,0,1362,1017,1,0,0,0,1362,1022,1,0,0,0,1362,1027,1,0,0,0,1362,1032, + 1,0,0,0,1362,1037,1,0,0,0,1362,1042,1,0,0,0,1362,1047,1,0,0,0,1362,1052, + 1,0,0,0,1362,1057,1,0,0,0,1362,1062,1,0,0,0,1362,1067,1,0,0,0,1362,1072, + 1,0,0,0,1362,1077,1,0,0,0,1362,1082,1,0,0,0,1362,1087,1,0,0,0,1362,1092, + 1,0,0,0,1362,1097,1,0,0,0,1362,1102,1,0,0,0,1362,1107,1,0,0,0,1362,1112, + 1,0,0,0,1362,1117,1,0,0,0,1362,1122,1,0,0,0,1362,1127,1,0,0,0,1362,1132, + 1,0,0,0,1362,1137,1,0,0,0,1362,1142,1,0,0,0,1362,1147,1,0,0,0,1362,1152, + 1,0,0,0,1362,1157,1,0,0,0,1362,1162,1,0,0,0,1362,1167,1,0,0,0,1362,1172, + 1,0,0,0,1362,1177,1,0,0,0,1362,1182,1,0,0,0,1362,1187,1,0,0,0,1362,1192, + 1,0,0,0,1362,1197,1,0,0,0,1362,1202,1,0,0,0,1362,1207,1,0,0,0,1362,1212, + 1,0,0,0,1362,1217,1,0,0,0,1362,1222,1,0,0,0,1362,1227,1,0,0,0,1362,1232, + 1,0,0,0,1362,1237,1,0,0,0,1362,1242,1,0,0,0,1362,1247,1,0,0,0,1362,1252, + 1,0,0,0,1362,1257,1,0,0,0,1362,1262,1,0,0,0,1362,1267,1,0,0,0,1362,1272, + 1,0,0,0,1362,1277,1,0,0,0,1362,1282,1,0,0,0,1362,1287,1,0,0,0,1362,1292, + 1,0,0,0,1362,1297,1,0,0,0,1362,1302,1,0,0,0,1362,1307,1,0,0,0,1362,1312, + 1,0,0,0,1362,1317,1,0,0,0,1362,1322,1,0,0,0,1362,1327,1,0,0,0,1362,1332, + 1,0,0,0,1362,1337,1,0,0,0,1362,1342,1,0,0,0,1362,1347,1,0,0,0,1362,1352, + 1,0,0,0,1362,1357,1,0,0,0,1363,49,1,0,0,0,1364,1365,3,32,16,0,1365,1366, + 5,0,0,1,1366,1367,6,25,-1,0,1367,51,1,0,0,0,44,67,75,83,85,92,102,112, + 117,127,137,139,152,158,160,175,177,198,200,233,235,254,261,270,289,305, + 307,320,322,335,337,354,356,365,373,378,392,402,415,418,425,433,437,440, + 1362 }; public static readonly ATN _ATN = diff --git a/Sources/AngouriMath/Core/Domains.Classes.cs b/Sources/AngouriMath/Core/Domains.Classes.cs index a0d0a4c38..747e69a65 100644 --- a/Sources/AngouriMath/Core/Domains.Classes.cs +++ b/Sources/AngouriMath/Core/Domains.Classes.cs @@ -214,6 +214,16 @@ partial record Arccotanf internal override Domain DefaultCodomain => Domain.Complex; } + partial record DoubleFactorialf + { + // An integer or 1/3 and the like below -1, all rational, but a node's codomain says what + // it may be, and Complex is what the factorial says too. + /// + public override Domain Codomain { get; protected init; } = Domain.Complex; + /// + internal override Domain DefaultCodomain => Domain.Complex; + } + partial record Factorialf { /// diff --git a/Sources/AngouriMath/Core/Entity/Continuous/Entity.Continuous.Factorial.Classes.cs b/Sources/AngouriMath/Core/Entity/Continuous/Entity.Continuous.Factorial.Classes.cs index 67e8aa036..7e7bf4b01 100644 --- a/Sources/AngouriMath/Core/Entity/Continuous/Entity.Continuous.Factorial.Classes.cs +++ b/Sources/AngouriMath/Core/Entity/Continuous/Entity.Continuous.Factorial.Classes.cs @@ -30,6 +30,32 @@ public sealed partial record Factorialf(Entity Argument) : Function, IUnaryNode protected override Entity[] InitDirectChildren() => new[] { Argument }; } + /// + /// The double factorial n!!: the product of the positive integers up to n with its + /// parity, n (n - 2) (n - 4) ..., which is not (n!)!. + /// + /// + /// Defined on the integers but the negative even ones: 0!! and (-1)!! are the empty + /// product 1, and below them n!! = (n + 2)!!/(n + 2), so (-3)!! is + /// -1 and (-5)!! is 1/3. Off the integers it has no value: the extension + /// through the gamma function does not give 0!! = 1, so no extension is the double + /// factorial's. https://github.com/asc-community/AngouriMath/issues/2182 + /// + public sealed partial record DoubleFactorialf(Entity Argument) : Function, IUnaryNode + { + private DoubleFactorialf New(Entity argument) => ReferenceEquals(Argument, argument) ? this : new(argument) { Codomain = Codomain }; + // Written as the factorial is, a postfix after its argument. + internal override Priority Priority => Priority.Factorial; + + /// + public Entity NodeChild => Argument; + + /// + public override Entity Replace(Func func) => func(New(Argument.Replace(func))); + /// + protected override Entity[] InitDirectChildren() => new[] { Argument }; + } + /// /// A node of the binomial coefficient binomial(n, k), "n choose k". /// diff --git a/Sources/AngouriMath/Core/Serialization/Entity.Serialization.cs b/Sources/AngouriMath/Core/Serialization/Entity.Serialization.cs index 84bf68f21..86ec85bd3 100644 --- a/Sources/AngouriMath/Core/Serialization/Entity.Serialization.cs +++ b/Sources/AngouriMath/Core/Serialization/Entity.Serialization.cs @@ -123,6 +123,7 @@ [EntityJsonConverter] partial record SpecialSet [EntityJsonConverter] partial record Iversonf; [EntityJsonConverter] partial record Conjugatef; [EntityJsonConverter] partial record Argf; + [EntityJsonConverter] partial record DoubleFactorialf; [EntityJsonConverter] partial record Ref; [EntityJsonConverter] partial record Imf; [EntityJsonConverter] partial record Alephf; diff --git a/Sources/AngouriMath/Core/Transformations/Matching/MatchPattern.cs b/Sources/AngouriMath/Core/Transformations/Matching/MatchPattern.cs index 43a00d584..9e1d89590 100644 --- a/Sources/AngouriMath/Core/Transformations/Matching/MatchPattern.cs +++ b/Sources/AngouriMath/Core/Transformations/Matching/MatchPattern.cs @@ -475,6 +475,7 @@ internal abstract bool ETryBuild( [typeof(Entity.Iversonf)] = (1, static c => new Entity.Iversonf(c[0])), [typeof(Entity.Conjugatef)] = (1, static c => new Entity.Conjugatef(c[0])), [typeof(Entity.Argf)] = (1, static c => new Entity.Argf(c[0])), + [typeof(Entity.DoubleFactorialf)] = (1, static c => new Entity.DoubleFactorialf(c[0])), [typeof(Entity.Ref)] = (1, static c => new Entity.Ref(c[0])), [typeof(Entity.Imf)] = (1, static c => new Entity.Imf(c[0])), [typeof(Entity.Alephf)] = (1, static c => new Entity.Alephf(c[0])), diff --git a/Sources/AngouriMath/Docs/Contributing/WritingARule.md b/Sources/AngouriMath/Docs/Contributing/WritingARule.md index e1b42efc4..12a2cc306 100644 --- a/Sources/AngouriMath/Docs/Contributing/WritingARule.md +++ b/Sources/AngouriMath/Docs/Contributing/WritingARule.md @@ -110,7 +110,7 @@ itself, and needs no `when:` to say so. It is also strictly more specific than ` the ordering knows about — see below. **Matchable is not the same as buildable.** A pattern can be *matched* against any node type, but a -pattern used as a **replacement** must be one the library can construct: there are **67** such types. +pattern used as a **replacement** must be one the library can construct: there are **68** such types. Two families are deliberately absent, and neither is an oversight: - **binders** — `Lambda`, `Set.ConditionalSet`. They bind a variable, and `DirectChildren` renames it diff --git a/Sources/AngouriMath/Docs/Usage/Syntax.md b/Sources/AngouriMath/Docs/Usage/Syntax.md index a5f3f1802..8af6ee492 100644 --- a/Sources/AngouriMath/Docs/Usage/Syntax.md +++ b/Sources/AngouriMath/Docs/Usage/Syntax.md @@ -268,7 +268,7 @@ which is `e ^ x`. **Powers and logarithms** — `sqrt` `cbrt` `sqr` `pow(a, b)` `exp` `ln` `log(base, x)`. `log` with one argument is base 10, so `log(100)` is 2; `log10` and `log2` say it in the name. -**Other** — `abs` `signum` `sgn` `sign` `phi` `gamma` `factorial` (or postfix `!`); `prime(n)` +**Other** — `abs` `signum` `sgn` `sign` `phi` `gamma` `factorial` (or postfix `!`), and the double factorial as the postfix `n!!`, `n (n - 2) (n - 4) ...` down to 1 or 2, which is not `(n!)!` (`7!!` is `105`, `0!!` and `(-1)!!` are `1`, `(-5)!!` is `1/3`, and it has no value at a negative even integer or off the integers; `n!!!`, the triple factorial, is refused); `prime(n)` for the `n`-th prime (`prime(25)` is `97`, `NaN` off the positive whole numbers, left as written for a symbol or an index past a million); `valuation(n, p)` for the `p`-adic valuation, the exponent of the prime `p` in `n` (`valuation(12, 2)` is `2`, `valuation(12, 5)` is `0`, `+oo` at diff --git a/Sources/AngouriMath/Functions/Continuous/Solvers/EquationSolver/InvertNode.Classes.cs b/Sources/AngouriMath/Functions/Continuous/Solvers/EquationSolver/InvertNode.Classes.cs index 715984062..5ad4cd1f9 100644 --- a/Sources/AngouriMath/Functions/Continuous/Solvers/EquationSolver/InvertNode.Classes.cs +++ b/Sources/AngouriMath/Functions/Continuous/Solvers/EquationSolver/InvertNode.Classes.cs @@ -388,6 +388,13 @@ partial record Imf null; } + partial record DoubleFactorialf + { + // An integer argument found among finitely many by a value: not inverted. Left unsolved. + private protected override IEnumerable? InvertNode(Entity value, Entity x) => + null; + } + partial record Argf { // Where the argument is a value is a ray, a set of points no list of values of x is. diff --git a/Sources/AngouriMath/Functions/Evaluation/Evaluation.Continuous/Evaluation.Continuous.Arithmetics.Classes.cs b/Sources/AngouriMath/Functions/Evaluation/Evaluation.Continuous/Evaluation.Continuous.Arithmetics.Classes.cs index 11aa8b855..378c6ca64 100644 --- a/Sources/AngouriMath/Functions/Evaluation/Evaluation.Continuous/Evaluation.Continuous.Arithmetics.Classes.cs +++ b/Sources/AngouriMath/Functions/Evaluation/Evaluation.Continuous/Evaluation.Continuous.Arithmetics.Classes.cs @@ -473,6 +473,52 @@ when a.Evaled is Real below && below > 0 && below < 1 (@this, a, b) => ((Logf)@this).New(a, b), isExact); } + public partial record DoubleFactorialf + { + // Defined on the integers but the negative even ones. + private protected override Entity IntrinsicCondition => + Argument.In(MathS.Sets.Z) & (Argument >= -1 | !new Dividesf(Integer.Create(2), Argument)); + + // The largest argument multiplied out exactly. Past it the node is kept, as a whole power + // with a huge exponent is: https://github.com/asc-community/AngouriMath/issues/1448 + private const int MaxExactArgument = 10000; + + // n (n - 2) ... down to 1 or 2, and 0!! = (-1)!! = 1. Below that n!! = (n + 2)!!/(n + 2), so + // (-3)!! is -1 and (-5)!! is 1/3; a negative even n has none. Off the integers there is no + // value: the gamma extension does not give 0!! = 1, so no extension is this function's. + private static Entity? OfANumber(Complex number) + { + PeterO.Numbers.EInteger whole; + if (number is Integer integer) + whole = integer.EInteger; + else if (number is Real { EDecimal: var value } && value.IsFinite && value.IsInteger()) + whole = value.ToEInteger(); + else + return Real.NaN; + if (whole.Abs().CompareTo(PeterO.Numbers.EInteger.FromInt32(MaxExactArgument)) > 0) + return null; + var n = whole.ToInt32Checked(); + if (n >= 0) + { + var product = PeterO.Numbers.EInteger.One; + for (var k = n; k > 1; k -= 2) + product *= k; + return Integer.Create(product); + } + if (n % 2 == 0) + return Real.NaN; + var denominator = PeterO.Numbers.EInteger.One; + for (var j = n + 2; j <= -1; j += 2) + denominator *= j; + return Rational.Create(PeterO.Numbers.EInteger.One, denominator); + } + + /// + protected override Entity InnerSimplify(bool isExact) + => ExpandOnOneArgument(Argument, a => a is Complex number ? OfANumber(number) : null, + (@this, a) => ((DoubleFactorialf)@this).New(a), isExact); + } + public partial record Factorialf { // Factorial is defined for non-negative integers in the traditional sense, diff --git a/Sources/AngouriMath/Functions/Output/Latex/Latex.Arithmetics.Classes.cs b/Sources/AngouriMath/Functions/Output/Latex/Latex.Arithmetics.Classes.cs index dc4bb28a8..413bcb9cb 100644 --- a/Sources/AngouriMath/Functions/Output/Latex/Latex.Arithmetics.Classes.cs +++ b/Sources/AngouriMath/Functions/Output/Latex/Latex.Arithmetics.Classes.cs @@ -73,13 +73,17 @@ private protected override string LatexizeNode() or Complex { ImaginaryPart.IsZero: false, LatexPriority: >= Priority.Mul } /* don't combine upright "i" with an upright variable*/, Variable { IsLatexUprightFormatted: true } or Number { LatexPriority: >= Priority.Mul } or Factorialf(Number { LatexPriority: Priority.Leaf } or Variable { IsLatexUprightFormatted: true }) + or DoubleFactorialf(Number { LatexPriority: Priority.Leaf } or Variable { IsLatexUprightFormatted: true }) or Powf(Number { LatexPriority: Priority.Leaf } or Variable { IsLatexUprightFormatted: true } - or Factorialf(Number { LatexPriority: Priority.Leaf } or Variable { IsLatexUprightFormatted: true }), _)) => false, + or Factorialf(Number { LatexPriority: Priority.Leaf } or Variable { IsLatexUprightFormatted: true }) + or DoubleFactorialf(Number { LatexPriority: Priority.Leaf } or Variable { IsLatexUprightFormatted: true }), _)) => false, // 2 * (3/4) instead of 2 (3/4) which is a mixed number (= 2 + 3/4) (Number { LatexPriority: Priority.Leaf }, { LatexPriority: Priority.Div }) => false, // 2 * 3 instead of 2 3 (= 23), 2 * 3^4 instead of 2 3^4 (= 23^4), but "(2+i) 2", "2 (2+i)" and "2 (2+i)^2" are fine with the parentheses - so we have the LatexPriority check. (_, Number { LatexPriority: >= Priority.Mul } or Factorialf(Number { LatexPriority: Priority.Leaf }) - or Powf(Number { LatexPriority: Priority.Leaf } or Factorialf(Number { LatexPriority: Priority.Leaf }), _)) => false, // Keep the \cdot in "f(x) \cdot -2" "f(x) \cdot 2i" "f(x) \cdot -2i" + or DoubleFactorialf(Number { LatexPriority: Priority.Leaf }) + or Powf(Number { LatexPriority: Priority.Leaf } or Factorialf(Number { LatexPriority: Priority.Leaf }) + or DoubleFactorialf(Number { LatexPriority: Priority.Leaf }), _)) => false, // Keep the \cdot in "f(x) \cdot -2" "f(x) \cdot 2i" "f(x) \cdot -2i" (var left, var right) => left.LatexPriority >= right.LatexPriority && !(left.LatexPriority == Priority.Div && right.LatexPriority == Priority.Div) // Without \cdot, the fraction lines may appear too closely together. } ? $@"{prevOut} {currOut}" : $@"{prevOut} \cdot {currOut}"; @@ -144,6 +148,13 @@ private protected override string LatexizeNode() } } + public partial record DoubleFactorialf + { + /// + private protected override string LatexizeNode() => + Argument.Latexize(Argument.LatexPriority <= LatexPriority) + "!!"; + } + public partial record Factorialf { /// diff --git a/Sources/AngouriMath/Functions/Output/ToString/ToString.Arithmetics.Classes.cs b/Sources/AngouriMath/Functions/Output/ToString/ToString.Arithmetics.Classes.cs index 178fba7f6..b5d8250b1 100644 --- a/Sources/AngouriMath/Functions/Output/ToString/ToString.Arithmetics.Classes.cs +++ b/Sources/AngouriMath/Functions/Output/ToString/ToString.Arithmetics.Classes.cs @@ -343,6 +343,14 @@ public partial record Binomialf public override string ToString() => Stringize(); } + public partial record DoubleFactorialf + { + /// + private protected override string StringizeNode() => Argument.Stringize(Argument.Priority <= Priority) + "!!"; + /// + public override string ToString() => Stringize(); + } + public partial record Factorialf { /// diff --git a/Sources/AngouriMath/Functions/Output/ToSympy/ToSympy.Arithmetics.Classes.cs b/Sources/AngouriMath/Functions/Output/ToSympy/ToSympy.Arithmetics.Classes.cs index d48e9ccd5..6d877aca7 100644 --- a/Sources/AngouriMath/Functions/Output/ToSympy/ToSympy.Arithmetics.Classes.cs +++ b/Sources/AngouriMath/Functions/Output/ToSympy/ToSympy.Arithmetics.Classes.cs @@ -98,6 +98,11 @@ public partial record Imf internal override string ToSymPy() => $"sympy.im({Argument.ToSymPy()})"; } + public partial record DoubleFactorialf + { + internal override string ToSymPy() => $"sympy.factorial2({Argument.ToSymPy()})"; + } + public partial record Argf { internal override string ToSymPy() => $"sympy.arg({Argument.ToSymPy()})"; diff --git a/Sources/AngouriMath/Functions/Substitute.cs b/Sources/AngouriMath/Functions/Substitute.cs index 77fe5d6fa..fa2ae88ab 100644 --- a/Sources/AngouriMath/Functions/Substitute.cs +++ b/Sources/AngouriMath/Functions/Substitute.cs @@ -202,6 +202,13 @@ public override Entity Substitute(Entity x, Entity value) => this == x ? value : New(Argument.Substitute(x, value)); } + partial record DoubleFactorialf + { + /// + public override Entity Substitute(Entity x, Entity value) + => this == x ? value : New(Argument.Substitute(x, value)); + } + partial record Argf { /// diff --git a/Sources/AngouriMath/Functions/TreeAnalyzer/Sort.Classes.cs b/Sources/AngouriMath/Functions/TreeAnalyzer/Sort.Classes.cs index cc8448c3b..67be1763c 100644 --- a/Sources/AngouriMath/Functions/TreeAnalyzer/Sort.Classes.cs +++ b/Sources/AngouriMath/Functions/TreeAnalyzer/Sort.Classes.cs @@ -255,6 +255,12 @@ private protected override string SortHashName(SortLevel level) => Choice(level, "im_", "im_", "im_"); } + public partial record DoubleFactorialf + { + private protected override string SortHashName(SortLevel level) + => Choice(level, "doublefactorial_", "doublefactorial_", "doublefactorial_"); + } + public partial record Argf { private protected override string SortHashName(SortLevel level) diff --git a/Sources/MCP/AngouriMath.Mcp/Resources.cs b/Sources/MCP/AngouriMath.Mcp/Resources.cs index 36570b43f..02711bd9e 100644 --- a/Sources/MCP/AngouriMath.Mcp/Resources.cs +++ b/Sources/MCP/AngouriMath.Mcp/Resources.cs @@ -96,7 +96,7 @@ that every response returns. - complex numbers: `conjugate`, also spelled `conj`; `arg`, the principal argument in `(-pi, pi]`; `Re` and `Im`, also spelled `re`, `im`, `real` and `imag`, `Im(x + i y)` being `y` - `floor ceil ceiling round min max gcd lcm` - - `gamma factorial binomial phi prime valuation` + - `gamma factorial binomial phi prime valuation`, and the postfix `n!` and `n!!` (the double factorial, not `(n!)!`) - special functions: `erf erfc erfi Ei li Si Ci Shi Chi`, `digamma(z)` and `polygamma(n, z)`, and `gamma(a, z)`, the upper incomplete gamma function - sets: `card powerset union intersection complement image preimage domain aleph diff --git a/Sources/Tests/AotSmokeTest/Program.cs b/Sources/Tests/AotSmokeTest/Program.cs index fdae7e2f0..2b6d97b3b 100644 --- a/Sources/Tests/AotSmokeTest/Program.cs +++ b/Sources/Tests/AotSmokeTest/Program.cs @@ -114,6 +114,10 @@ private static void Parsing() CheckClose("conj(z) z at z = 3 + 4i", At(conjugate, "z", new Complex(3, 4)), 25); var argument = MathS.FromString("arg(z)"); CheckClose("arg at z = -1", At(argument, "z", -1), Math.PI); + + // The double factorial is a postfix the parser builds. https://github.com/asc-community/AngouriMath/issues/2182 + var doubleFactorial = MathS.FromString("x!! + 0"); + CheckClose("x!! at x = 7", At(doubleFactorial, "x", 7), 105); } private static void Simplification() diff --git a/Sources/Tests/UnitTests/Common/PublicApi.txt b/Sources/Tests/UnitTests/Common/PublicApi.txt index b1d775bb1..87e90d342 100644 --- a/Sources/Tests/UnitTests/Common/PublicApi.txt +++ b/Sources/Tests/UnitTests/Common/PublicApi.txt @@ -978,6 +978,25 @@ AngouriMath.Entity+Dividesf.ToString() : System.String AngouriMath.Entity+Dividesf.ctor(AngouriMath.Entity, AngouriMath.Entity) AngouriMath.Entity+Dividesf.op_Equality(AngouriMath.Entity+Dividesf, AngouriMath.Entity+Dividesf) : System.Boolean AngouriMath.Entity+Dividesf.op_Inequality(AngouriMath.Entity+Dividesf, AngouriMath.Entity+Dividesf) : System.Boolean +AngouriMath.Entity+DoubleFactorialf.$() : AngouriMath.Entity+DoubleFactorialf +AngouriMath.Entity+DoubleFactorialf.Argument { } : AngouriMath.Entity +AngouriMath.Entity+DoubleFactorialf.Codomain { } : AngouriMath.Core.Domain +AngouriMath.Entity+DoubleFactorialf.Deconstruct(AngouriMath.Entity&) : System.Void +AngouriMath.Entity+DoubleFactorialf.EqualityContract { } : System.Type +AngouriMath.Entity+DoubleFactorialf.Equals(AngouriMath.Entity+DoubleFactorialf) : System.Boolean +AngouriMath.Entity+DoubleFactorialf.Equals(AngouriMath.Entity+Function) : System.Boolean +AngouriMath.Entity+DoubleFactorialf.Equals(System.Object) : System.Boolean +AngouriMath.Entity+DoubleFactorialf.GetHashCode() : System.Int32 +AngouriMath.Entity+DoubleFactorialf.InitDirectChildren() : AngouriMath.Entity[] +AngouriMath.Entity+DoubleFactorialf.InnerSimplify(System.Boolean) : AngouriMath.Entity +AngouriMath.Entity+DoubleFactorialf.NodeChild { } : AngouriMath.Entity +AngouriMath.Entity+DoubleFactorialf.PrintMembers(System.Text.StringBuilder) : System.Boolean +AngouriMath.Entity+DoubleFactorialf.Replace(System.Func) : AngouriMath.Entity +AngouriMath.Entity+DoubleFactorialf.Substitute(AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity +AngouriMath.Entity+DoubleFactorialf.ToString() : System.String +AngouriMath.Entity+DoubleFactorialf.ctor(AngouriMath.Entity) +AngouriMath.Entity+DoubleFactorialf.op_Equality(AngouriMath.Entity+DoubleFactorialf, AngouriMath.Entity+DoubleFactorialf) : System.Boolean +AngouriMath.Entity+DoubleFactorialf.op_Inequality(AngouriMath.Entity+DoubleFactorialf, AngouriMath.Entity+DoubleFactorialf) : System.Boolean AngouriMath.Entity+Eif.$() : AngouriMath.Entity+Eif AngouriMath.Entity+Eif.Argument { } : AngouriMath.Entity AngouriMath.Entity+Eif.Codomain { } : AngouriMath.Core.Domain @@ -3310,6 +3329,7 @@ AngouriMath.MathS.Derivative(AngouriMath.Entity, AngouriMath.Entity, System.Int3 AngouriMath.MathS.Det(AngouriMath.Entity+Matrix) : AngouriMath.Entity AngouriMath.MathS.Digamma(AngouriMath.Entity) : AngouriMath.Entity AngouriMath.MathS.Disjunction(AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity +AngouriMath.MathS.DoubleFactorial(AngouriMath.Entity) : AngouriMath.Entity AngouriMath.MathS.Ei(AngouriMath.Entity) : AngouriMath.Entity AngouriMath.MathS.Equality(AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity AngouriMath.MathS.Equations(AngouriMath.Entity[]) : AngouriMath.Core.EquationSystem @@ -3510,6 +3530,7 @@ class AngouriMath.Entity+Cotanf class AngouriMath.Entity+Derivativef class AngouriMath.Entity+Divf class AngouriMath.Entity+Dividesf +class AngouriMath.Entity+DoubleFactorialf class AngouriMath.Entity+Eif class AngouriMath.Entity+Equalsf class AngouriMath.Entity+Erfcf diff --git a/Sources/Tests/UnitTests/Convenience/DoubleFactorialTest.cs b/Sources/Tests/UnitTests/Convenience/DoubleFactorialTest.cs new file mode 100644 index 000000000..de2e16e32 --- /dev/null +++ b/Sources/Tests/UnitTests/Convenience/DoubleFactorialTest.cs @@ -0,0 +1,93 @@ +// +// Copyright (c) 2019-2026 Angouri. +// AngouriMath is licensed under MIT. +// Details: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md. +// Website: https://am.angouri.org. +// + +using AngouriMath; +using AngouriMath.Core.Exceptions; +using AngouriMath.Extensions; +using Xunit; +using static AngouriMath.Entity; +using static AngouriMath.Entity.Number; + +namespace AngouriMath.Tests.Convenience +{ + /// + /// The double factorial is the postfix n!!, as mathematics writes it and as the factorial + /// is the postfix n!. 5!! was a parse error. + /// #2182 + /// + [Trait("Area", "Convenience")] + public sealed class DoubleFactorialTest + { + [Fact] + public void TwoMarksAreTheDoubleFactorialAndNotTheFactorialTwice() + { + Assert.Equal(new DoubleFactorialf("n"), "n!!".ToEntity()); + Assert.Equal(new Factorialf(new Factorialf("n")), "(n!)!".ToEntity()); + Assert.Equal(new Factorialf(new DoubleFactorialf("n")), "(n!!)!".ToEntity()); + Assert.Equal(new DoubleFactorialf("x + 1".ToEntity()), "(x + 1)!!".ToEntity()); + } + + /// Three marks are the triple factorial in the literature, refused rather than read as (n!!)!. + [Fact] + public void ThreeMarksAreRefused() + => Assert.Throws(() => "n!!!".ToEntity()); + + /// + /// The product of the positive integers up to n with its parity; 0!! and + /// (-1)!! are the empty product, and below them n!! = (n + 2)!!/(n + 2). + /// + [Theory] + [InlineData("0!!", "1")] + [InlineData("1!!", "1")] + [InlineData("2!!", "2")] + [InlineData("7!!", "105")] + [InlineData("8!!", "384")] + [InlineData("(-1)!!", "1")] + [InlineData("(-3)!!", "-1")] + [InlineData("(-5)!!", "1/3")] + [InlineData("(-7)!!", "-1/15")] + public void ItIsComputedOnTheIntegers(string written, string expected) + => Assert.Equal(expected.ToEntity().InnerSimplified, written.ToEntity().InnerSimplified); + + /// + /// A negative even integer has none, and nothing off the integers has one: the extension + /// through the gamma function does not give 0!! = 1. + /// + [Theory] + [InlineData("(-2)!!")] + [InlineData("(-4)!!")] + [InlineData("(5/2)!!")] + [InlineData("i!!")] + public void ItHasNoValueOffItsDomain(string written) + => Assert.Equal(MathS.NaN, written.ToEntity().InnerSimplified); + + /// n! = n!! (n - 1)!!. + [Theory] + [InlineData(1)] + [InlineData(6)] + [InlineData(9)] + [InlineData(20)] + public void TheFactorialIsTheProductOfTwoNeighbours(int n) + => Assert.Equal(new Factorialf(n).Evaled, (new DoubleFactorialf(n) * new DoubleFactorialf(n - 1)).InnerSimplified); + + [Fact] + public void ASymbolKeepsTheNode() + => Assert.IsType("n!!".ToEntity().InnerSimplified); + + [Theory] + [InlineData("n!!", "n!!", "n!!", "sympy.factorial2(n)")] + [InlineData("(x + 1)!!", "(x + 1)!!", @"\left(x+1\right)!!", "sympy.factorial2(x + 1)")] + public void ItIsWrittenAsTwoMarks(string written, string stringized, string latex, string sympy) + { + var parsed = written.ToEntity(); + Assert.Equal(stringized, parsed.Stringize()); + Assert.Equal(parsed, parsed.Stringize().ToEntity()); + Assert.Equal(latex, parsed.Latexize()); + Assert.Equal(sympy, parsed.ToSymPy()); + } + } +} diff --git a/Sources/Tests/UnitTests/Convenience/FromStringTest.cs b/Sources/Tests/UnitTests/Convenience/FromStringTest.cs index 5b5fa206e..6db7bd21c 100644 --- a/Sources/Tests/UnitTests/Convenience/FromStringTest.cs +++ b/Sources/Tests/UnitTests/Convenience/FromStringTest.cs @@ -148,7 +148,8 @@ public void TestFormula8() [Fact] public void TestFormula18() => Assert.Equal(x * y, FromString("x y")); [Fact] public void TestFormula19() => Assert.Equal(x * MathS.Sqrt(3), FromString("x sqrt(3)")); [Fact] public void TestFormula20() => Assert.Equal(Factorial(x), FromString("x!")); - [Fact] public void TestFormula21() => Assert.Throws(() => FromString("x!!")); + // The double factorial, which was a parse error: https://github.com/asc-community/AngouriMath/issues/2182 + [Fact] public void TestFormula21() => Assert.Equal(MathS.DoubleFactorial(x), FromString("x!!")); [Fact] public void TestFormula22() => Assert.Equal(Factorial(Sin(x)), FromString("sin(x)!")); [Fact] public void TestFormula23() => Assert.Equal(Pow(2, MathS.Factorial(3)), FromString("2^3!")); [Fact] public void TestFormula24() => Assert.Equal(Pow(MathS.Factorial(2), MathS.Factorial(3)), FromString("2!^3!")); diff --git a/Sources/Tests/UnitTests/Core/Transformations/RuleAuthoringGuideTest.cs b/Sources/Tests/UnitTests/Core/Transformations/RuleAuthoringGuideTest.cs index 13c83ef4a..35d67181d 100644 --- a/Sources/Tests/UnitTests/Core/Transformations/RuleAuthoringGuideTest.cs +++ b/Sources/Tests/UnitTests/Core/Transformations/RuleAuthoringGuideTest.cs @@ -79,7 +79,7 @@ public void TheIdentityIsNotTheName() [Fact] public void ThePatternLanguage() - => Stated(67, MatchPattern.BuildableNodeTypes.Count, "the number of buildable node types"); + => Stated(68, MatchPattern.BuildableNodeTypes.Count, "the number of buildable node types"); [Fact] public void ReplacementAPatternOrCode()