diff --git a/BREAKING-CHANGES.md b/BREAKING-CHANGES.md
index 47f838101..39310a5bf 100644
--- a/BREAKING-CHANGES.md
+++ b/BREAKING-CHANGES.md
@@ -78,6 +78,21 @@ as `a - b = 0`, as a statement's own solve reads it: `"x + 1 = 3".Solve("x")` wa
| `MathS.Equations("x + y = 3", "x - y = 1").Solve("x", "y")` | `null` | `[[2, 1]]` |
| `MathS.Equations("x + y = 3", "x - y = 1").ToString()` | `x + y = 3 = 0` and `x - y = 1 = 0` | `x + y - 3 = 0` and `x - y - 1 = 0` |
+### The polygamma functions, and the derivative of the factorial
+
+**Silent: a new reading, and an answer where there was none.**
+- **New functions.** `polygamma(n, z)` and `digamma(z)` are the polygamma functions `psi^(n)(z)`, the `(n + 1)`-th derivatives of `ln Gamma(z)`, and the digamma function, which is `polygamma(0, z)`. Neither name was recognised, so each was read as a product with an undeclared variable.
+- **Evaluation.** Each is evaluated to the working precision anywhere in the complex plane but at `0, -1, -2, ...`, its poles, where it is `NaN`.
+- **Derivatives.** Each order differentiates to the next. The derivative of `x!`, which was left unevaluated, is `x! * digamma(x + 1)` ([#171](https://github.com/asc-community/AngouriMath/issues/171)).
+
+| Input | Was (2.6.0) | Now |
+|---|---|---|
+| `"digamma(1)".ToEntity()` | `digamma * 1`, the variable `digamma` | `digamma(1)`, which evaluates to `-0.5772156649015328…` |
+| `"digamma(x)".ToEntity()` | `digamma * x` | `digamma(x)` |
+| `"polygamma(1, 1)".ToEntity()` | an `UnhandledParseException` | `polygamma(1, 1)`, which evaluates to `1.6449340668482264…` |
+| `"x!".ToEntity().Differentiate("x")` | `derivative(x!, x)`, unevaluated | `x! * digamma(x + 1)` |
+| `"gamma(x)".ToEntity().Differentiate("x")` | `derivative((x - 1)!, x)` | `(x - 1)! * digamma(x - 1 + 1)` |
+
### Numerical equality is to half the evaluation's digits
**Silent: wrong answers.** `MathS.UnsafeAndInternal.AreEqualNumerically` evaluated both sides at its check points and
diff --git a/Sources/.editorconfig b/Sources/.editorconfig
index 414ded9ab..46679c092 100644
--- a/Sources/.editorconfig
+++ b/Sources/.editorconfig
@@ -696,6 +696,12 @@ file_header_template=\nCopyright (c) 2019-2026 Angouri.\nAngouriMath is licensed
[AngouriMath/Core/Entity/Continuous/Number/ExponentialIntegrals.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
+[AngouriMath/Core/Entity/Continuous/Number/Polygamma.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
+
+[AngouriMath/Core/Entity/Continuous/Entity.Continuous.Polygamma.Classes.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
+
[AngouriMath/Core/Entity/Continuous/Entity.Continuous.ExponentialIntegrals.Classes.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 615559fa9..3b01c00dc 100644
--- a/Sources/AngouriMath/Convenience/MathS.cs
+++ b/Sources/AngouriMath/Convenience/MathS.cs
@@ -1455,6 +1455,25 @@ public static Entity VectorLength(Matrix v)
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Entity Li(Entity a) => new Lif(a);
+ /// The polygamma function, psi^(n)(z), the (n + 1)-th derivative of ln Gamma(z)
+ /// The order n, a whole number n >= 0
+ /// The argument, any complex number but 0, -1, -2, ..., its poles
+ /// The node
+ ///
+ /// psi^(0) is the digamma function, Gamma'(z)/Gamma(z), which is what the derivative of
+ /// x! is written with: (x!)' = x! psi(x + 1). Each order is the derivative of the one before.
+ /// https://github.com/asc-community/AngouriMath/issues/171
+ ///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static Entity Polygamma(Entity order, Entity argument) => new Polygammaf(order, argument);
+
+ /// The digamma function, psi(z) = Gamma'(z)/Gamma(z), which is polygamma(0, z)
+ /// The argument, any complex number but 0, -1, -2, ..., its poles
+ /// The node of order 0
+ /// https://github.com/asc-community/AngouriMath/issues/171
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static Entity Digamma(Entity argument) => new Polygammaf(Integer.Zero, argument);
+
/// The sine integral, Si(z) = int_0^z sin(t)/t dt
/// The argument, any complex number
/// The node
diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMath.g b/Sources/AngouriMath/Core/Antlr/AngouriMath.g
index e4576d85c..a9f238176 100644
--- a/Sources/AngouriMath/Core/Antlr/AngouriMath.g
+++ b/Sources/AngouriMath/Core/Antlr/AngouriMath.g
@@ -616,6 +616,9 @@ atom returns[Entity value]
/* The exponential and logarithmic integrals. https://github.com/asc-community/AngouriMath/issues/1501 */
| 'Ei(' args = function_arguments ')' { Assert("Ei", 1, $args.list.Count); $value = MathS.Ei($args.list[0]); }
| 'li(' args = function_arguments ')' { Assert("li", 1, $args.list.Count); $value = MathS.Li($args.list[0]); }
+ /* The polygamma functions, and the digamma function, which is the one of order 0. https://github.com/asc-community/AngouriMath/issues/171 */
+ | 'polygamma(' args = function_arguments ')' { Assert("polygamma", 2, $args.list.Count); $value = MathS.Polygamma($args.list[0], $args.list[1]); }
+ | 'digamma(' args = function_arguments ')' { Assert("digamma", 1, $args.list.Count); $value = MathS.Digamma($args.list[0]); }
/* The trigonometric and hyperbolic integrals. https://github.com/asc-community/AngouriMath/issues/1501 */
| 'Si(' args = function_arguments ')' { Assert("Si", 1, $args.list.Count); $value = MathS.Si($args.list[0]); }
| 'Ci(' args = function_arguments ')' { Assert("Ci", 1, $args.list.Count); $value = MathS.Ci($args.list[0]); }
diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMath.interp b/Sources/AngouriMath/Core/Antlr/AngouriMath.interp
index e721e835b..f0f2875d3 100644
--- a/Sources/AngouriMath/Core/Antlr/AngouriMath.interp
+++ b/Sources/AngouriMath/Core/Antlr/AngouriMath.interp
@@ -173,6 +173,8 @@ null
'erfi('
'Ei('
'li('
+'polygamma('
+'digamma('
'Si('
'Ci('
'Shi('
@@ -377,6 +379,8 @@ null
null
null
null
+null
+null
NEWLINE
NUMBER
SPECIALSET
@@ -416,4 +420,4 @@ statement
atn:
-[4, 1, 191, 1141, 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, 3, 24, 1135, 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, 1317, 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, 1134, 1, 0, 0, 0, 50, 1136, 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, 1135, 6, 24, -1, 0, 448, 449, 5, 51, 0, 0, 449, 1135, 6, 24, -1, 0, 450, 451, 5, 188, 0, 0, 451, 1135, 6, 24, -1, 0, 452, 453, 5, 185, 0, 0, 453, 1135, 6, 24, -1, 0, 454, 455, 5, 187, 0, 0, 455, 1135, 6, 24, -1, 0, 456, 457, 5, 186, 0, 0, 457, 1135, 6, 24, -1, 0, 458, 459, 5, 189, 0, 0, 459, 1135, 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, 1135, 1, 0, 0, 0, 465, 466, 5, 54, 0, 0, 466, 467, 3, 48, 24, 0, 467, 468, 6, 24, -1, 0, 468, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 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, 1135, 1, 0, 0, 0, 1134, 446, 1, 0, 0, 0, 1134, 448, 1, 0, 0, 0, 1134, 450, 1, 0, 0, 0, 1134, 452, 1, 0, 0, 0, 1134, 454, 1, 0, 0, 0, 1134, 456, 1, 0, 0, 0, 1134, 458, 1, 0, 0, 0, 1134, 460, 1, 0, 0, 0, 1134, 465, 1, 0, 0, 0, 1134, 469, 1, 0, 0, 0, 1134, 474, 1, 0, 0, 0, 1134, 479, 1, 0, 0, 0, 1134, 484, 1, 0, 0, 0, 1134, 489, 1, 0, 0, 0, 1134, 494, 1, 0, 0, 0, 1134, 499, 1, 0, 0, 0, 1134, 504, 1, 0, 0, 0, 1134, 509, 1, 0, 0, 0, 1134, 514, 1, 0, 0, 0, 1134, 519, 1, 0, 0, 0, 1134, 524, 1, 0, 0, 0, 1134, 529, 1, 0, 0, 0, 1134, 534, 1, 0, 0, 0, 1134, 539, 1, 0, 0, 0, 1134, 544, 1, 0, 0, 0, 1134, 549, 1, 0, 0, 0, 1134, 554, 1, 0, 0, 0, 1134, 559, 1, 0, 0, 0, 1134, 564, 1, 0, 0, 0, 1134, 569, 1, 0, 0, 0, 1134, 574, 1, 0, 0, 0, 1134, 579, 1, 0, 0, 0, 1134, 584, 1, 0, 0, 0, 1134, 589, 1, 0, 0, 0, 1134, 594, 1, 0, 0, 0, 1134, 599, 1, 0, 0, 0, 1134, 604, 1, 0, 0, 0, 1134, 609, 1, 0, 0, 0, 1134, 614, 1, 0, 0, 0, 1134, 619, 1, 0, 0, 0, 1134, 624, 1, 0, 0, 0, 1134, 629, 1, 0, 0, 0, 1134, 634, 1, 0, 0, 0, 1134, 639, 1, 0, 0, 0, 1134, 644, 1, 0, 0, 0, 1134, 649, 1, 0, 0, 0, 1134, 654, 1, 0, 0, 0, 1134, 659, 1, 0, 0, 0, 1134, 664, 1, 0, 0, 0, 1134, 669, 1, 0, 0, 0, 1134, 674, 1, 0, 0, 0, 1134, 679, 1, 0, 0, 0, 1134, 684, 1, 0, 0, 0, 1134, 689, 1, 0, 0, 0, 1134, 694, 1, 0, 0, 0, 1134, 699, 1, 0, 0, 0, 1134, 704, 1, 0, 0, 0, 1134, 709, 1, 0, 0, 0, 1134, 714, 1, 0, 0, 0, 1134, 719, 1, 0, 0, 0, 1134, 724, 1, 0, 0, 0, 1134, 729, 1, 0, 0, 0, 1134, 734, 1, 0, 0, 0, 1134, 739, 1, 0, 0, 0, 1134, 744, 1, 0, 0, 0, 1134, 749, 1, 0, 0, 0, 1134, 754, 1, 0, 0, 0, 1134, 759, 1, 0, 0, 0, 1134, 764, 1, 0, 0, 0, 1134, 769, 1, 0, 0, 0, 1134, 774, 1, 0, 0, 0, 1134, 779, 1, 0, 0, 0, 1134, 784, 1, 0, 0, 0, 1134, 789, 1, 0, 0, 0, 1134, 794, 1, 0, 0, 0, 1134, 799, 1, 0, 0, 0, 1134, 804, 1, 0, 0, 0, 1134, 809, 1, 0, 0, 0, 1134, 814, 1, 0, 0, 0, 1134, 819, 1, 0, 0, 0, 1134, 824, 1, 0, 0, 0, 1134, 829, 1, 0, 0, 0, 1134, 834, 1, 0, 0, 0, 1134, 839, 1, 0, 0, 0, 1134, 844, 1, 0, 0, 0, 1134, 849, 1, 0, 0, 0, 1134, 854, 1, 0, 0, 0, 1134, 859, 1, 0, 0, 0, 1134, 864, 1, 0, 0, 0, 1134, 869, 1, 0, 0, 0, 1134, 874, 1, 0, 0, 0, 1134, 879, 1, 0, 0, 0, 1134, 884, 1, 0, 0, 0, 1134, 889, 1, 0, 0, 0, 1134, 894, 1, 0, 0, 0, 1134, 899, 1, 0, 0, 0, 1134, 904, 1, 0, 0, 0, 1134, 909, 1, 0, 0, 0, 1134, 914, 1, 0, 0, 0, 1134, 919, 1, 0, 0, 0, 1134, 924, 1, 0, 0, 0, 1134, 929, 1, 0, 0, 0, 1134, 934, 1, 0, 0, 0, 1134, 939, 1, 0, 0, 0, 1134, 944, 1, 0, 0, 0, 1134, 949, 1, 0, 0, 0, 1134, 954, 1, 0, 0, 0, 1134, 959, 1, 0, 0, 0, 1134, 964, 1, 0, 0, 0, 1134, 969, 1, 0, 0, 0, 1134, 974, 1, 0, 0, 0, 1134, 979, 1, 0, 0, 0, 1134, 984, 1, 0, 0, 0, 1134, 989, 1, 0, 0, 0, 1134, 994, 1, 0, 0, 0, 1134, 999, 1, 0, 0, 0, 1134, 1004, 1, 0, 0, 0, 1134, 1009, 1, 0, 0, 0, 1134, 1014, 1, 0, 0, 0, 1134, 1019, 1, 0, 0, 0, 1134, 1024, 1, 0, 0, 0, 1134, 1029, 1, 0, 0, 0, 1134, 1034, 1, 0, 0, 0, 1134, 1039, 1, 0, 0, 0, 1134, 1044, 1, 0, 0, 0, 1134, 1049, 1, 0, 0, 0, 1134, 1054, 1, 0, 0, 0, 1134, 1059, 1, 0, 0, 0, 1134, 1064, 1, 0, 0, 0, 1134, 1069, 1, 0, 0, 0, 1134, 1074, 1, 0, 0, 0, 1134, 1079, 1, 0, 0, 0, 1134, 1084, 1, 0, 0, 0, 1134, 1089, 1, 0, 0, 0, 1134, 1094, 1, 0, 0, 0, 1134, 1099, 1, 0, 0, 0, 1134, 1104, 1, 0, 0, 0, 1134, 1109, 1, 0, 0, 0, 1134, 1114, 1, 0, 0, 0, 1134, 1119, 1, 0, 0, 0, 1134, 1124, 1, 0, 0, 0, 1134, 1129, 1, 0, 0, 0, 1135, 49, 1, 0, 0, 0, 1136, 1137, 3, 32, 16, 0, 1137, 1138, 5, 0, 0, 1, 1138, 1139, 6, 25, -1, 0, 1139, 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, 1134]
\ No newline at end of file
+[4, 1, 193, 1151, 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, 3, 24, 1145, 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, 1329, 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, 1144, 1, 0, 0, 0, 50, 1146, 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, 1145, 6, 24, -1, 0, 448, 449, 5, 51, 0, 0, 449, 1145, 6, 24, -1, 0, 450, 451, 5, 190, 0, 0, 451, 1145, 6, 24, -1, 0, 452, 453, 5, 187, 0, 0, 453, 1145, 6, 24, -1, 0, 454, 455, 5, 189, 0, 0, 455, 1145, 6, 24, -1, 0, 456, 457, 5, 188, 0, 0, 457, 1145, 6, 24, -1, 0, 458, 459, 5, 191, 0, 0, 459, 1145, 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, 1145, 1, 0, 0, 0, 465, 466, 5, 54, 0, 0, 466, 467, 3, 48, 24, 0, 467, 468, 6, 24, -1, 0, 468, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 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, 1145, 1, 0, 0, 0, 1144, 446, 1, 0, 0, 0, 1144, 448, 1, 0, 0, 0, 1144, 450, 1, 0, 0, 0, 1144, 452, 1, 0, 0, 0, 1144, 454, 1, 0, 0, 0, 1144, 456, 1, 0, 0, 0, 1144, 458, 1, 0, 0, 0, 1144, 460, 1, 0, 0, 0, 1144, 465, 1, 0, 0, 0, 1144, 469, 1, 0, 0, 0, 1144, 474, 1, 0, 0, 0, 1144, 479, 1, 0, 0, 0, 1144, 484, 1, 0, 0, 0, 1144, 489, 1, 0, 0, 0, 1144, 494, 1, 0, 0, 0, 1144, 499, 1, 0, 0, 0, 1144, 504, 1, 0, 0, 0, 1144, 509, 1, 0, 0, 0, 1144, 514, 1, 0, 0, 0, 1144, 519, 1, 0, 0, 0, 1144, 524, 1, 0, 0, 0, 1144, 529, 1, 0, 0, 0, 1144, 534, 1, 0, 0, 0, 1144, 539, 1, 0, 0, 0, 1144, 544, 1, 0, 0, 0, 1144, 549, 1, 0, 0, 0, 1144, 554, 1, 0, 0, 0, 1144, 559, 1, 0, 0, 0, 1144, 564, 1, 0, 0, 0, 1144, 569, 1, 0, 0, 0, 1144, 574, 1, 0, 0, 0, 1144, 579, 1, 0, 0, 0, 1144, 584, 1, 0, 0, 0, 1144, 589, 1, 0, 0, 0, 1144, 594, 1, 0, 0, 0, 1144, 599, 1, 0, 0, 0, 1144, 604, 1, 0, 0, 0, 1144, 609, 1, 0, 0, 0, 1144, 614, 1, 0, 0, 0, 1144, 619, 1, 0, 0, 0, 1144, 624, 1, 0, 0, 0, 1144, 629, 1, 0, 0, 0, 1144, 634, 1, 0, 0, 0, 1144, 639, 1, 0, 0, 0, 1144, 644, 1, 0, 0, 0, 1144, 649, 1, 0, 0, 0, 1144, 654, 1, 0, 0, 0, 1144, 659, 1, 0, 0, 0, 1144, 664, 1, 0, 0, 0, 1144, 669, 1, 0, 0, 0, 1144, 674, 1, 0, 0, 0, 1144, 679, 1, 0, 0, 0, 1144, 684, 1, 0, 0, 0, 1144, 689, 1, 0, 0, 0, 1144, 694, 1, 0, 0, 0, 1144, 699, 1, 0, 0, 0, 1144, 704, 1, 0, 0, 0, 1144, 709, 1, 0, 0, 0, 1144, 714, 1, 0, 0, 0, 1144, 719, 1, 0, 0, 0, 1144, 724, 1, 0, 0, 0, 1144, 729, 1, 0, 0, 0, 1144, 734, 1, 0, 0, 0, 1144, 739, 1, 0, 0, 0, 1144, 744, 1, 0, 0, 0, 1144, 749, 1, 0, 0, 0, 1144, 754, 1, 0, 0, 0, 1144, 759, 1, 0, 0, 0, 1144, 764, 1, 0, 0, 0, 1144, 769, 1, 0, 0, 0, 1144, 774, 1, 0, 0, 0, 1144, 779, 1, 0, 0, 0, 1144, 784, 1, 0, 0, 0, 1144, 789, 1, 0, 0, 0, 1144, 794, 1, 0, 0, 0, 1144, 799, 1, 0, 0, 0, 1144, 804, 1, 0, 0, 0, 1144, 809, 1, 0, 0, 0, 1144, 814, 1, 0, 0, 0, 1144, 819, 1, 0, 0, 0, 1144, 824, 1, 0, 0, 0, 1144, 829, 1, 0, 0, 0, 1144, 834, 1, 0, 0, 0, 1144, 839, 1, 0, 0, 0, 1144, 844, 1, 0, 0, 0, 1144, 849, 1, 0, 0, 0, 1144, 854, 1, 0, 0, 0, 1144, 859, 1, 0, 0, 0, 1144, 864, 1, 0, 0, 0, 1144, 869, 1, 0, 0, 0, 1144, 874, 1, 0, 0, 0, 1144, 879, 1, 0, 0, 0, 1144, 884, 1, 0, 0, 0, 1144, 889, 1, 0, 0, 0, 1144, 894, 1, 0, 0, 0, 1144, 899, 1, 0, 0, 0, 1144, 904, 1, 0, 0, 0, 1144, 909, 1, 0, 0, 0, 1144, 914, 1, 0, 0, 0, 1144, 919, 1, 0, 0, 0, 1144, 924, 1, 0, 0, 0, 1144, 929, 1, 0, 0, 0, 1144, 934, 1, 0, 0, 0, 1144, 939, 1, 0, 0, 0, 1144, 944, 1, 0, 0, 0, 1144, 949, 1, 0, 0, 0, 1144, 954, 1, 0, 0, 0, 1144, 959, 1, 0, 0, 0, 1144, 964, 1, 0, 0, 0, 1144, 969, 1, 0, 0, 0, 1144, 974, 1, 0, 0, 0, 1144, 979, 1, 0, 0, 0, 1144, 984, 1, 0, 0, 0, 1144, 989, 1, 0, 0, 0, 1144, 994, 1, 0, 0, 0, 1144, 999, 1, 0, 0, 0, 1144, 1004, 1, 0, 0, 0, 1144, 1009, 1, 0, 0, 0, 1144, 1014, 1, 0, 0, 0, 1144, 1019, 1, 0, 0, 0, 1144, 1024, 1, 0, 0, 0, 1144, 1029, 1, 0, 0, 0, 1144, 1034, 1, 0, 0, 0, 1144, 1039, 1, 0, 0, 0, 1144, 1044, 1, 0, 0, 0, 1144, 1049, 1, 0, 0, 0, 1144, 1054, 1, 0, 0, 0, 1144, 1059, 1, 0, 0, 0, 1144, 1064, 1, 0, 0, 0, 1144, 1069, 1, 0, 0, 0, 1144, 1074, 1, 0, 0, 0, 1144, 1079, 1, 0, 0, 0, 1144, 1084, 1, 0, 0, 0, 1144, 1089, 1, 0, 0, 0, 1144, 1094, 1, 0, 0, 0, 1144, 1099, 1, 0, 0, 0, 1144, 1104, 1, 0, 0, 0, 1144, 1109, 1, 0, 0, 0, 1144, 1114, 1, 0, 0, 0, 1144, 1119, 1, 0, 0, 0, 1144, 1124, 1, 0, 0, 0, 1144, 1129, 1, 0, 0, 0, 1144, 1134, 1, 0, 0, 0, 1144, 1139, 1, 0, 0, 0, 1145, 49, 1, 0, 0, 0, 1146, 1147, 3, 32, 16, 0, 1147, 1148, 5, 0, 0, 1, 1148, 1149, 6, 25, -1, 0, 1149, 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, 1144]
\ No newline at end of file
diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMath.tokens b/Sources/AngouriMath/Core/Antlr/AngouriMath.tokens
index d3b5bc330..5539119a5 100644
--- a/Sources/AngouriMath/Core/Antlr/AngouriMath.tokens
+++ b/Sources/AngouriMath/Core/Antlr/AngouriMath.tokens
@@ -181,14 +181,16 @@ T__179=180
T__180=181
T__181=182
T__182=183
-NEWLINE=184
-NUMBER=185
-SPECIALSET=186
-BOOLEAN=187
-NAN=188
-VARIABLE=189
-COMMENT=190
-WS=191
+T__183=184
+T__184=185
+NEWLINE=186
+NUMBER=187
+SPECIALSET=188
+BOOLEAN=189
+NAN=190
+VARIABLE=191
+COMMENT=192
+WS=193
'!'=1
'^'=2
'-'=3
@@ -362,14 +364,16 @@ WS=191
'erfi('=171
'Ei('=172
'li('=173
-'Si('=174
-'Ci('=175
-'Shi('=176
-'Chi('=177
-'trunc('=178
-'conjugate('=179
-'domain('=180
-'piecewise('=181
-'apply('=182
-'lambda('=183
-'NaN'=188
+'polygamma('=174
+'digamma('=175
+'Si('=176
+'Ci('=177
+'Shi('=178
+'Chi('=179
+'trunc('=180
+'conjugate('=181
+'domain('=182
+'piecewise('=183
+'apply('=184
+'lambda('=185
+'NaN'=190
diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.cs b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.cs
index b99beaf4f..feb40f2c2 100644
--- a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.cs
+++ b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.cs
@@ -61,8 +61,9 @@ public const int
T__161=162, T__162=163, T__163=164, T__164=165, T__165=166, T__166=167,
T__167=168, T__168=169, T__169=170, T__170=171, T__171=172, T__172=173,
T__173=174, T__174=175, T__175=176, T__176=177, T__177=178, T__178=179,
- T__179=180, T__180=181, T__181=182, T__182=183, NEWLINE=184, NUMBER=185,
- SPECIALSET=186, BOOLEAN=187, NAN=188, VARIABLE=189, COMMENT=190, WS=191;
+ T__179=180, T__180=181, T__181=182, T__182=183, T__183=184, T__184=185,
+ NEWLINE=186, NUMBER=187, SPECIALSET=188, BOOLEAN=189, NAN=190, VARIABLE=191,
+ COMMENT=192, WS=193;
public static string[] channelNames = {
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
};
@@ -96,8 +97,8 @@ public const int
"T__161", "T__162", "T__163", "T__164", "T__165", "T__166", "T__167",
"T__168", "T__169", "T__170", "T__171", "T__172", "T__173", "T__174",
"T__175", "T__176", "T__177", "T__178", "T__179", "T__180", "T__181",
- "T__182", "NEWLINE", "EXPONENT", "NUMBER", "SPECIALSET", "BOOLEAN", "NAN",
- "VARIABLE", "COMMENT", "WS"
+ "T__182", "T__183", "T__184", "NEWLINE", "EXPONENT", "NUMBER", "SPECIALSET",
+ "BOOLEAN", "NAN", "VARIABLE", "COMMENT", "WS"
};
@@ -144,8 +145,9 @@ public AngouriMathLexer(ICharStream input, TextWriter output, TextWriter errorOu
"'preimage('", "'floor('", "'ceil('", "'ceiling('", "'round('", "'min('",
"'max('", "'argmax('", "'argmin('", "'gcd('", "'lcm('", "'binomial('",
"'iverson('", "'aleph('", "'erf('", "'erfc('", "'erfi('", "'Ei('", "'li('",
- "'Si('", "'Ci('", "'Shi('", "'Chi('", "'trunc('", "'conjugate('", "'domain('",
- "'piecewise('", "'apply('", "'lambda('", null, null, null, null, "'NaN'"
+ "'polygamma('", "'digamma('", "'Si('", "'Ci('", "'Shi('", "'Chi('", "'trunc('",
+ "'conjugate('", "'domain('", "'piecewise('", "'apply('", "'lambda('",
+ null, null, null, null, "'NaN'"
};
private static readonly string[] _SymbolicNames = {
null, null, null, null, null, null, null, null, null, null, null, null,
@@ -163,8 +165,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,
- null, null, null, null, "NEWLINE", "NUMBER", "SPECIALSET", "BOOLEAN",
- "NAN", "VARIABLE", "COMMENT", "WS"
+ null, null, null, null, null, null, "NEWLINE", "NUMBER", "SPECIALSET",
+ "BOOLEAN", "NAN", "VARIABLE", "COMMENT", "WS"
};
public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
@@ -194,7 +196,7 @@ static AngouriMathLexer() {
}
}
private static int[] _serializedATN = {
- 4,0,191,1635,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,193,1659,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,
@@ -223,108 +225,110 @@ static AngouriMathLexer() {
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,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,174,1,174,
- 1,174,1,174,1,175,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,
- 1,177,1,177,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,
- 1,178,1,178,1,178,1,178,1,178,1,178,1,179,1,179,1,179,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,181,1,181,1,182,1,182,1,182,1,182,
- 1,182,1,182,1,182,1,182,1,183,3,183,1489,8,183,1,183,4,183,1492,8,183,
- 11,183,12,183,1493,1,183,1,183,1,184,1,184,3,184,1500,8,184,1,184,4,184,
- 1503,8,184,11,184,12,184,1504,1,185,4,185,1508,8,185,11,185,12,185,1509,
- 1,185,1,185,5,185,1514,8,185,10,185,12,185,1517,9,185,1,185,3,185,1520,
- 8,185,1,185,3,185,1523,8,185,1,185,3,185,1526,8,185,1,185,4,185,1529,8,
- 185,11,185,12,185,1530,1,185,3,185,1534,8,185,1,185,3,185,1537,8,185,1,
- 185,3,185,1540,8,185,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,
- 186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,3,186,1560,8,
- 186,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,
- 1,187,1,187,1,187,1,187,1,187,1,187,1,187,3,187,1580,8,187,1,188,1,188,
- 1,188,1,188,1,189,4,189,1587,8,189,11,189,12,189,1588,1,189,1,189,4,189,
- 1593,8,189,11,189,12,189,1594,3,189,1597,8,189,1,190,1,190,1,190,1,190,
- 5,190,1603,8,190,10,190,12,190,1606,9,190,1,190,3,190,1609,8,190,1,190,
- 3,190,1612,8,190,1,190,1,190,1,190,1,190,5,190,1618,8,190,10,190,12,190,
- 1621,9,190,1,190,1,190,3,190,1625,8,190,1,190,1,190,1,191,4,191,1630,8,
- 191,11,191,12,191,1631,1,191,1,191,1,1619,0,192,1,1,3,2,5,3,7,4,9,5,11,
+ 7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,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,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,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,183,1,183,1,184,1,184,1,184,
+ 1,184,1,184,1,184,1,184,1,184,1,185,3,185,1513,8,185,1,185,4,185,1516,
+ 8,185,11,185,12,185,1517,1,185,1,185,1,186,1,186,3,186,1524,8,186,1,186,
+ 4,186,1527,8,186,11,186,12,186,1528,1,187,4,187,1532,8,187,11,187,12,187,
+ 1533,1,187,1,187,5,187,1538,8,187,10,187,12,187,1541,9,187,1,187,3,187,
+ 1544,8,187,1,187,3,187,1547,8,187,1,187,3,187,1550,8,187,1,187,4,187,1553,
+ 8,187,11,187,12,187,1554,1,187,3,187,1558,8,187,1,187,3,187,1561,8,187,
+ 1,187,3,187,1564,8,187,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,
+ 1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,3,188,1584,
+ 8,188,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,
+ 1,189,1,189,1,189,1,189,1,189,1,189,1,189,3,189,1604,8,189,1,190,1,190,
+ 1,190,1,190,1,191,4,191,1611,8,191,11,191,12,191,1612,1,191,1,191,4,191,
+ 1617,8,191,11,191,12,191,1618,3,191,1621,8,191,1,192,1,192,1,192,1,192,
+ 5,192,1627,8,192,10,192,12,192,1630,9,192,1,192,3,192,1633,8,192,1,192,
+ 3,192,1636,8,192,1,192,1,192,1,192,1,192,5,192,1642,8,192,10,192,12,192,
+ 1645,9,192,1,192,1,192,3,192,1649,8,192,1,192,1,192,1,193,4,193,1654,8,
+ 193,11,193,12,193,1655,1,193,1,193,1,1643,0,194,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,
@@ -343,419 +347,426 @@ static AngouriMathLexer() {
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,0,371,185,373,186,375,187,377,188,379,189,381,190,383,191,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,1666,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,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,1,385,1,0,0,0,3,387,1,0,0,0,5,389,1,0,0,0,
- 7,391,1,0,0,0,9,393,1,0,0,0,11,395,1,0,0,0,13,399,1,0,0,0,15,401,1,0,0,
- 0,17,403,1,0,0,0,19,407,1,0,0,0,21,417,1,0,0,0,23,420,1,0,0,0,25,426,1,
- 0,0,0,27,429,1,0,0,0,29,441,1,0,0,0,31,443,1,0,0,0,33,446,1,0,0,0,35,453,
- 1,0,0,0,37,455,1,0,0,0,39,464,1,0,0,0,41,466,1,0,0,0,43,474,1,0,0,0,45,
- 476,1,0,0,0,47,479,1,0,0,0,49,482,1,0,0,0,51,484,1,0,0,0,53,486,1,0,0,
- 0,55,488,1,0,0,0,57,491,1,0,0,0,59,493,1,0,0,0,61,495,1,0,0,0,63,497,1,
- 0,0,0,65,501,1,0,0,0,67,505,1,0,0,0,69,507,1,0,0,0,71,511,1,0,0,0,73,514,
- 1,0,0,0,75,522,1,0,0,0,77,525,1,0,0,0,79,534,1,0,0,0,81,537,1,0,0,0,83,
- 539,1,0,0,0,85,546,1,0,0,0,87,548,1,0,0,0,89,556,1,0,0,0,91,559,1,0,0,
- 0,93,566,1,0,0,0,95,568,1,0,0,0,97,570,1,0,0,0,99,572,1,0,0,0,101,576,
- 1,0,0,0,103,580,1,0,0,0,105,583,1,0,0,0,107,586,1,0,0,0,109,588,1,0,0,
- 0,111,590,1,0,0,0,113,593,1,0,0,0,115,595,1,0,0,0,117,597,1,0,0,0,119,
- 599,1,0,0,0,121,604,1,0,0,0,123,611,1,0,0,0,125,617,1,0,0,0,127,622,1,
- 0,0,0,129,628,1,0,0,0,131,634,1,0,0,0,133,639,1,0,0,0,135,643,1,0,0,0,
- 137,648,1,0,0,0,139,653,1,0,0,0,141,658,1,0,0,0,143,663,1,0,0,0,145,670,
- 1,0,0,0,147,675,1,0,0,0,149,680,1,0,0,0,151,687,1,0,0,0,153,692,1,0,0,
- 0,155,700,1,0,0,0,157,708,1,0,0,0,159,716,1,0,0,0,161,726,1,0,0,0,163,
- 734,1,0,0,0,165,744,1,0,0,0,167,752,1,0,0,0,169,758,1,0,0,0,171,764,1,
- 0,0,0,173,770,1,0,0,0,175,776,1,0,0,0,177,784,1,0,0,0,179,790,1,0,0,0,
- 181,798,1,0,0,0,183,804,1,0,0,0,185,812,1,0,0,0,187,818,1,0,0,0,189,822,
- 1,0,0,0,191,828,1,0,0,0,193,832,1,0,0,0,195,838,1,0,0,0,197,842,1,0,0,
- 0,199,850,1,0,0,0,201,856,1,0,0,0,203,861,1,0,0,0,205,867,1,0,0,0,207,
- 872,1,0,0,0,209,880,1,0,0,0,211,886,1,0,0,0,213,893,1,0,0,0,215,901,1,
- 0,0,0,217,907,1,0,0,0,219,916,1,0,0,0,221,923,1,0,0,0,223,931,1,0,0,0,
- 225,937,1,0,0,0,227,946,1,0,0,0,229,953,1,0,0,0,231,961,1,0,0,0,233,967,
- 1,0,0,0,235,976,1,0,0,0,237,983,1,0,0,0,239,991,1,0,0,0,241,1000,1,0,0,
- 0,243,1010,1,0,0,0,245,1017,1,0,0,0,247,1028,1,0,0,0,249,1035,1,0,0,0,
- 251,1043,1,0,0,0,253,1050,1,0,0,0,255,1059,1,0,0,0,257,1068,1,0,0,0,259,
- 1078,1,0,0,0,261,1086,1,0,0,0,263,1097,1,0,0,0,265,1104,1,0,0,0,267,1115,
- 1,0,0,0,269,1122,1,0,0,0,271,1134,1,0,0,0,273,1144,1,0,0,0,275,1151,1,
- 0,0,0,277,1162,1,0,0,0,279,1174,1,0,0,0,281,1179,1,0,0,0,283,1188,1,0,
- 0,0,285,1196,1,0,0,0,287,1201,1,0,0,0,289,1207,1,0,0,0,291,1212,1,0,0,
- 0,293,1217,1,0,0,0,295,1224,1,0,0,0,297,1235,1,0,0,0,299,1241,1,0,0,0,
- 301,1251,1,0,0,0,303,1258,1,0,0,0,305,1272,1,0,0,0,307,1284,1,0,0,0,309,
- 1291,1,0,0,0,311,1301,1,0,0,0,313,1308,1,0,0,0,315,1314,1,0,0,0,317,1323,
- 1,0,0,0,319,1330,1,0,0,0,321,1335,1,0,0,0,323,1340,1,0,0,0,325,1348,1,
- 0,0,0,327,1356,1,0,0,0,329,1361,1,0,0,0,331,1366,1,0,0,0,333,1376,1,0,
- 0,0,335,1385,1,0,0,0,337,1392,1,0,0,0,339,1397,1,0,0,0,341,1403,1,0,0,
- 0,343,1409,1,0,0,0,345,1413,1,0,0,0,347,1417,1,0,0,0,349,1421,1,0,0,0,
- 351,1425,1,0,0,0,353,1430,1,0,0,0,355,1435,1,0,0,0,357,1442,1,0,0,0,359,
- 1453,1,0,0,0,361,1461,1,0,0,0,363,1472,1,0,0,0,365,1479,1,0,0,0,367,1491,
- 1,0,0,0,369,1497,1,0,0,0,371,1539,1,0,0,0,373,1559,1,0,0,0,375,1579,1,
- 0,0,0,377,1581,1,0,0,0,379,1586,1,0,0,0,381,1624,1,0,0,0,383,1629,1,0,
- 0,0,385,386,5,33,0,0,386,2,1,0,0,0,387,388,5,94,0,0,388,4,1,0,0,0,389,
- 390,5,45,0,0,390,6,1,0,0,0,391,392,5,43,0,0,392,8,1,0,0,0,393,394,5,42,
- 0,0,394,10,1,0,0,0,395,396,5,46,0,0,396,397,5,46,0,0,397,398,5,46,0,0,
- 398,12,1,0,0,0,399,400,5,8230,0,0,400,14,1,0,0,0,401,402,5,47,0,0,402,
- 16,1,0,0,0,403,404,5,109,0,0,404,405,5,111,0,0,405,406,5,100,0,0,406,18,
- 1,0,0,0,407,408,5,105,0,0,408,409,5,110,0,0,409,410,5,116,0,0,410,411,
- 5,101,0,0,411,412,5,114,0,0,412,413,5,115,0,0,413,414,5,101,0,0,414,415,
- 5,99,0,0,415,416,5,116,0,0,416,20,1,0,0,0,417,418,5,47,0,0,418,419,5,92,
- 0,0,419,22,1,0,0,0,420,421,5,117,0,0,421,422,5,110,0,0,422,423,5,105,0,
- 0,423,424,5,116,0,0,424,425,5,101,0,0,425,24,1,0,0,0,426,427,5,92,0,0,
- 427,428,5,47,0,0,428,26,1,0,0,0,429,430,5,115,0,0,430,431,5,101,0,0,431,
- 432,5,116,0,0,432,433,5,115,0,0,433,434,5,117,0,0,434,435,5,98,0,0,435,
- 436,5,116,0,0,436,437,5,114,0,0,437,438,5,97,0,0,438,439,5,99,0,0,439,
- 440,5,116,0,0,440,28,1,0,0,0,441,442,5,92,0,0,442,30,1,0,0,0,443,444,5,
- 105,0,0,444,445,5,110,0,0,445,32,1,0,0,0,446,447,5,115,0,0,447,448,5,117,
- 0,0,448,449,5,98,0,0,449,450,5,115,0,0,450,451,5,101,0,0,451,452,5,116,
- 0,0,452,34,1,0,0,0,453,454,5,8838,0,0,454,36,1,0,0,0,455,456,5,115,0,0,
- 456,457,5,117,0,0,457,458,5,112,0,0,458,459,5,101,0,0,459,460,5,114,0,
- 0,460,461,5,115,0,0,461,462,5,101,0,0,462,463,5,116,0,0,463,38,1,0,0,0,
- 464,465,5,8839,0,0,465,40,1,0,0,0,466,467,5,100,0,0,467,468,5,105,0,0,
- 468,469,5,118,0,0,469,470,5,105,0,0,470,471,5,100,0,0,471,472,5,101,0,
- 0,472,473,5,115,0,0,473,42,1,0,0,0,474,475,5,124,0,0,475,44,1,0,0,0,476,
- 477,5,62,0,0,477,478,5,61,0,0,478,46,1,0,0,0,479,480,5,60,0,0,480,481,
- 5,61,0,0,481,48,1,0,0,0,482,483,5,62,0,0,483,50,1,0,0,0,484,485,5,60,0,
- 0,485,52,1,0,0,0,486,487,5,61,0,0,487,54,1,0,0,0,488,489,5,60,0,0,489,
- 490,5,62,0,0,490,56,1,0,0,0,491,492,5,8801,0,0,492,58,1,0,0,0,493,494,
- 5,40,0,0,494,60,1,0,0,0,495,496,5,41,0,0,496,62,1,0,0,0,497,498,5,110,
- 0,0,498,499,5,111,0,0,499,500,5,116,0,0,500,64,1,0,0,0,501,502,5,97,0,
- 0,502,503,5,110,0,0,503,504,5,100,0,0,504,66,1,0,0,0,505,506,5,38,0,0,
- 506,68,1,0,0,0,507,508,5,120,0,0,508,509,5,111,0,0,509,510,5,114,0,0,510,
- 70,1,0,0,0,511,512,5,111,0,0,512,513,5,114,0,0,513,72,1,0,0,0,514,515,
- 5,105,0,0,515,516,5,109,0,0,516,517,5,112,0,0,517,518,5,108,0,0,518,519,
- 5,105,0,0,519,520,5,101,0,0,520,521,5,115,0,0,521,74,1,0,0,0,522,523,5,
- 45,0,0,523,524,5,62,0,0,524,76,1,0,0,0,525,526,5,112,0,0,526,527,5,114,
- 0,0,527,528,5,111,0,0,528,529,5,118,0,0,529,530,5,105,0,0,530,531,5,100,
- 0,0,531,532,5,101,0,0,532,533,5,100,0,0,533,78,1,0,0,0,534,535,5,61,0,
- 0,535,536,5,62,0,0,536,80,1,0,0,0,537,538,5,58,0,0,538,82,1,0,0,0,539,
- 540,5,102,0,0,540,541,5,111,0,0,541,542,5,114,0,0,542,543,5,97,0,0,543,
- 544,5,108,0,0,544,545,5,108,0,0,545,84,1,0,0,0,546,547,5,8704,0,0,547,
- 86,1,0,0,0,548,549,5,101,0,0,549,550,5,120,0,0,550,551,5,105,0,0,551,552,
- 5,115,0,0,552,553,5,116,0,0,553,554,5,115,0,0,554,555,5,33,0,0,555,88,
- 1,0,0,0,556,557,5,8707,0,0,557,558,5,33,0,0,558,90,1,0,0,0,559,560,5,101,
- 0,0,560,561,5,120,0,0,561,562,5,105,0,0,562,563,5,115,0,0,563,564,5,116,
- 0,0,564,565,5,115,0,0,565,92,1,0,0,0,566,567,5,8707,0,0,567,94,1,0,0,0,
- 568,569,5,44,0,0,569,96,1,0,0,0,570,571,5,59,0,0,571,98,1,0,0,0,572,573,
- 5,43,0,0,573,574,5,111,0,0,574,575,5,111,0,0,575,100,1,0,0,0,576,577,5,
- 45,0,0,577,578,5,111,0,0,578,579,5,111,0,0,579,102,1,0,0,0,580,581,5,40,
- 0,0,581,582,5,124,0,0,582,104,1,0,0,0,583,584,5,124,0,0,584,585,5,41,0,
- 0,585,106,1,0,0,0,586,587,5,35,0,0,587,108,1,0,0,0,588,589,5,91,0,0,589,
- 110,1,0,0,0,590,591,5,93,0,0,591,592,5,84,0,0,592,112,1,0,0,0,593,594,
- 5,93,0,0,594,114,1,0,0,0,595,596,5,123,0,0,596,116,1,0,0,0,597,598,5,125,
- 0,0,598,118,1,0,0,0,599,600,5,108,0,0,600,601,5,111,0,0,601,602,5,103,
- 0,0,602,603,5,40,0,0,603,120,1,0,0,0,604,605,5,108,0,0,605,606,5,111,0,
- 0,606,607,5,103,0,0,607,608,5,49,0,0,608,609,5,48,0,0,609,610,5,40,0,0,
- 610,122,1,0,0,0,611,612,5,108,0,0,612,613,5,111,0,0,613,614,5,103,0,0,
- 614,615,5,50,0,0,615,616,5,40,0,0,616,124,1,0,0,0,617,618,5,112,0,0,618,
- 619,5,111,0,0,619,620,5,119,0,0,620,621,5,40,0,0,621,126,1,0,0,0,622,623,
- 5,115,0,0,623,624,5,113,0,0,624,625,5,114,0,0,625,626,5,116,0,0,626,627,
- 5,40,0,0,627,128,1,0,0,0,628,629,5,99,0,0,629,630,5,98,0,0,630,631,5,114,
- 0,0,631,632,5,116,0,0,632,633,5,40,0,0,633,130,1,0,0,0,634,635,5,115,0,
- 0,635,636,5,113,0,0,636,637,5,114,0,0,637,638,5,40,0,0,638,132,1,0,0,0,
- 639,640,5,108,0,0,640,641,5,110,0,0,641,642,5,40,0,0,642,134,1,0,0,0,643,
- 644,5,101,0,0,644,645,5,120,0,0,645,646,5,112,0,0,646,647,5,40,0,0,647,
- 136,1,0,0,0,648,649,5,115,0,0,649,650,5,105,0,0,650,651,5,110,0,0,651,
- 652,5,40,0,0,652,138,1,0,0,0,653,654,5,99,0,0,654,655,5,111,0,0,655,656,
- 5,115,0,0,656,657,5,40,0,0,657,140,1,0,0,0,658,659,5,116,0,0,659,660,5,
- 97,0,0,660,661,5,110,0,0,661,662,5,40,0,0,662,142,1,0,0,0,663,664,5,99,
- 0,0,664,665,5,111,0,0,665,666,5,116,0,0,666,667,5,97,0,0,667,668,5,110,
- 0,0,668,669,5,40,0,0,669,144,1,0,0,0,670,671,5,99,0,0,671,672,5,111,0,
- 0,672,673,5,116,0,0,673,674,5,40,0,0,674,146,1,0,0,0,675,676,5,115,0,0,
- 676,677,5,101,0,0,677,678,5,99,0,0,678,679,5,40,0,0,679,148,1,0,0,0,680,
- 681,5,99,0,0,681,682,5,111,0,0,682,683,5,115,0,0,683,684,5,101,0,0,684,
- 685,5,99,0,0,685,686,5,40,0,0,686,150,1,0,0,0,687,688,5,99,0,0,688,689,
- 5,115,0,0,689,690,5,99,0,0,690,691,5,40,0,0,691,152,1,0,0,0,692,693,5,
- 97,0,0,693,694,5,114,0,0,694,695,5,99,0,0,695,696,5,115,0,0,696,697,5,
- 105,0,0,697,698,5,110,0,0,698,699,5,40,0,0,699,154,1,0,0,0,700,701,5,97,
- 0,0,701,702,5,114,0,0,702,703,5,99,0,0,703,704,5,99,0,0,704,705,5,111,
- 0,0,705,706,5,115,0,0,706,707,5,40,0,0,707,156,1,0,0,0,708,709,5,97,0,
- 0,709,710,5,114,0,0,710,711,5,99,0,0,711,712,5,116,0,0,712,713,5,97,0,
- 0,713,714,5,110,0,0,714,715,5,40,0,0,715,158,1,0,0,0,716,717,5,97,0,0,
- 717,718,5,114,0,0,718,719,5,99,0,0,719,720,5,99,0,0,720,721,5,111,0,0,
- 721,722,5,116,0,0,722,723,5,97,0,0,723,724,5,110,0,0,724,725,5,40,0,0,
- 725,160,1,0,0,0,726,727,5,97,0,0,727,728,5,114,0,0,728,729,5,99,0,0,729,
- 730,5,115,0,0,730,731,5,101,0,0,731,732,5,99,0,0,732,733,5,40,0,0,733,
- 162,1,0,0,0,734,735,5,97,0,0,735,736,5,114,0,0,736,737,5,99,0,0,737,738,
- 5,99,0,0,738,739,5,111,0,0,739,740,5,115,0,0,740,741,5,101,0,0,741,742,
- 5,99,0,0,742,743,5,40,0,0,743,164,1,0,0,0,744,745,5,97,0,0,745,746,5,114,
- 0,0,746,747,5,99,0,0,747,748,5,99,0,0,748,749,5,115,0,0,749,750,5,99,0,
- 0,750,751,5,40,0,0,751,166,1,0,0,0,752,753,5,97,0,0,753,754,5,99,0,0,754,
- 755,5,115,0,0,755,756,5,99,0,0,756,757,5,40,0,0,757,168,1,0,0,0,758,759,
- 5,97,0,0,759,760,5,115,0,0,760,761,5,105,0,0,761,762,5,110,0,0,762,763,
- 5,40,0,0,763,170,1,0,0,0,764,765,5,97,0,0,765,766,5,99,0,0,766,767,5,111,
- 0,0,767,768,5,115,0,0,768,769,5,40,0,0,769,172,1,0,0,0,770,771,5,97,0,
- 0,771,772,5,116,0,0,772,773,5,97,0,0,773,774,5,110,0,0,774,775,5,40,0,
- 0,775,174,1,0,0,0,776,777,5,97,0,0,777,778,5,99,0,0,778,779,5,111,0,0,
- 779,780,5,116,0,0,780,781,5,97,0,0,781,782,5,110,0,0,782,783,5,40,0,0,
- 783,176,1,0,0,0,784,785,5,97,0,0,785,786,5,115,0,0,786,787,5,101,0,0,787,
- 788,5,99,0,0,788,789,5,40,0,0,789,178,1,0,0,0,790,791,5,97,0,0,791,792,
- 5,99,0,0,792,793,5,111,0,0,793,794,5,115,0,0,794,795,5,101,0,0,795,796,
- 5,99,0,0,796,797,5,40,0,0,797,180,1,0,0,0,798,799,5,97,0,0,799,800,5,99,
- 0,0,800,801,5,111,0,0,801,802,5,116,0,0,802,803,5,40,0,0,803,182,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,40,0,0,811,184,1,0,0,0,812,
- 813,5,115,0,0,813,814,5,105,0,0,814,815,5,110,0,0,815,816,5,104,0,0,816,
- 817,5,40,0,0,817,186,1,0,0,0,818,819,5,115,0,0,819,820,5,104,0,0,820,821,
- 5,40,0,0,821,188,1,0,0,0,822,823,5,99,0,0,823,824,5,111,0,0,824,825,5,
- 115,0,0,825,826,5,104,0,0,826,827,5,40,0,0,827,190,1,0,0,0,828,829,5,99,
- 0,0,829,830,5,104,0,0,830,831,5,40,0,0,831,192,1,0,0,0,832,833,5,116,0,
- 0,833,834,5,97,0,0,834,835,5,110,0,0,835,836,5,104,0,0,836,837,5,40,0,
- 0,837,194,1,0,0,0,838,839,5,116,0,0,839,840,5,104,0,0,840,841,5,40,0,0,
- 841,196,1,0,0,0,842,843,5,99,0,0,843,844,5,111,0,0,844,845,5,116,0,0,845,
- 846,5,97,0,0,846,847,5,110,0,0,847,848,5,104,0,0,848,849,5,40,0,0,849,
- 198,1,0,0,0,850,851,5,99,0,0,851,852,5,111,0,0,852,853,5,116,0,0,853,854,
- 5,104,0,0,854,855,5,40,0,0,855,200,1,0,0,0,856,857,5,99,0,0,857,858,5,
- 116,0,0,858,859,5,104,0,0,859,860,5,40,0,0,860,202,1,0,0,0,861,862,5,115,
- 0,0,862,863,5,101,0,0,863,864,5,99,0,0,864,865,5,104,0,0,865,866,5,40,
- 0,0,866,204,1,0,0,0,867,868,5,115,0,0,868,869,5,99,0,0,869,870,5,104,0,
- 0,870,871,5,40,0,0,871,206,1,0,0,0,872,873,5,99,0,0,873,874,5,111,0,0,
- 874,875,5,115,0,0,875,876,5,101,0,0,876,877,5,99,0,0,877,878,5,104,0,0,
- 878,879,5,40,0,0,879,208,1,0,0,0,880,881,5,99,0,0,881,882,5,115,0,0,882,
- 883,5,99,0,0,883,884,5,104,0,0,884,885,5,40,0,0,885,210,1,0,0,0,886,887,
- 5,97,0,0,887,888,5,115,0,0,888,889,5,105,0,0,889,890,5,110,0,0,890,891,
- 5,104,0,0,891,892,5,40,0,0,892,212,1,0,0,0,893,894,5,97,0,0,894,895,5,
- 114,0,0,895,896,5,115,0,0,896,897,5,105,0,0,897,898,5,110,0,0,898,899,
- 5,104,0,0,899,900,5,40,0,0,900,214,1,0,0,0,901,902,5,97,0,0,902,903,5,
- 114,0,0,903,904,5,115,0,0,904,905,5,104,0,0,905,906,5,40,0,0,906,216,1,
- 0,0,0,907,908,5,97,0,0,908,909,5,114,0,0,909,910,5,99,0,0,910,911,5,115,
- 0,0,911,912,5,105,0,0,912,913,5,110,0,0,913,914,5,104,0,0,914,915,5,40,
- 0,0,915,218,1,0,0,0,916,917,5,97,0,0,917,918,5,99,0,0,918,919,5,111,0,
- 0,919,920,5,115,0,0,920,921,5,104,0,0,921,922,5,40,0,0,922,220,1,0,0,0,
- 923,924,5,97,0,0,924,925,5,114,0,0,925,926,5,99,0,0,926,927,5,111,0,0,
- 927,928,5,115,0,0,928,929,5,104,0,0,929,930,5,40,0,0,930,222,1,0,0,0,931,
- 932,5,97,0,0,932,933,5,114,0,0,933,934,5,99,0,0,934,935,5,104,0,0,935,
- 936,5,40,0,0,936,224,1,0,0,0,937,938,5,97,0,0,938,939,5,114,0,0,939,940,
- 5,99,0,0,940,941,5,99,0,0,941,942,5,111,0,0,942,943,5,115,0,0,943,944,
- 5,104,0,0,944,945,5,40,0,0,945,226,1,0,0,0,946,947,5,97,0,0,947,948,5,
- 116,0,0,948,949,5,97,0,0,949,950,5,110,0,0,950,951,5,104,0,0,951,952,5,
- 40,0,0,952,228,1,0,0,0,953,954,5,97,0,0,954,955,5,114,0,0,955,956,5,116,
- 0,0,956,957,5,97,0,0,957,958,5,110,0,0,958,959,5,104,0,0,959,960,5,40,
- 0,0,960,230,1,0,0,0,961,962,5,97,0,0,962,963,5,114,0,0,963,964,5,116,0,
- 0,964,965,5,104,0,0,965,966,5,40,0,0,966,232,1,0,0,0,967,968,5,97,0,0,
- 968,969,5,114,0,0,969,970,5,99,0,0,970,971,5,116,0,0,971,972,5,97,0,0,
- 972,973,5,110,0,0,973,974,5,104,0,0,974,975,5,40,0,0,975,234,1,0,0,0,976,
- 977,5,97,0,0,977,978,5,99,0,0,978,979,5,111,0,0,979,980,5,116,0,0,980,
- 981,5,104,0,0,981,982,5,40,0,0,982,236,1,0,0,0,983,984,5,97,0,0,984,985,
- 5,114,0,0,985,986,5,99,0,0,986,987,5,111,0,0,987,988,5,116,0,0,988,989,
- 5,104,0,0,989,990,5,40,0,0,990,238,1,0,0,0,991,992,5,97,0,0,992,993,5,
- 99,0,0,993,994,5,111,0,0,994,995,5,116,0,0,995,996,5,97,0,0,996,997,5,
- 110,0,0,997,998,5,104,0,0,998,999,5,40,0,0,999,240,1,0,0,0,1000,1001,5,
- 97,0,0,1001,1002,5,114,0,0,1002,1003,5,99,0,0,1003,1004,5,111,0,0,1004,
- 1005,5,116,0,0,1005,1006,5,97,0,0,1006,1007,5,110,0,0,1007,1008,5,104,
- 0,0,1008,1009,5,40,0,0,1009,242,1,0,0,0,1010,1011,5,97,0,0,1011,1012,5,
- 114,0,0,1012,1013,5,99,0,0,1013,1014,5,116,0,0,1014,1015,5,104,0,0,1015,
- 1016,5,40,0,0,1016,244,1,0,0,0,1017,1018,5,97,0,0,1018,1019,5,114,0,0,
- 1019,1020,5,99,0,0,1020,1021,5,99,0,0,1021,1022,5,111,0,0,1022,1023,5,
- 116,0,0,1023,1024,5,97,0,0,1024,1025,5,110,0,0,1025,1026,5,104,0,0,1026,
- 1027,5,40,0,0,1027,246,1,0,0,0,1028,1029,5,97,0,0,1029,1030,5,115,0,0,
- 1030,1031,5,101,0,0,1031,1032,5,99,0,0,1032,1033,5,104,0,0,1033,1034,5,
- 40,0,0,1034,248,1,0,0,0,1035,1036,5,97,0,0,1036,1037,5,114,0,0,1037,1038,
- 5,115,0,0,1038,1039,5,101,0,0,1039,1040,5,99,0,0,1040,1041,5,104,0,0,1041,
- 1042,5,40,0,0,1042,250,1,0,0,0,1043,1044,5,97,0,0,1044,1045,5,114,0,0,
- 1045,1046,5,115,0,0,1046,1047,5,99,0,0,1047,1048,5,104,0,0,1048,1049,5,
- 40,0,0,1049,252,1,0,0,0,1050,1051,5,97,0,0,1051,1052,5,114,0,0,1052,1053,
- 5,99,0,0,1053,1054,5,115,0,0,1054,1055,5,101,0,0,1055,1056,5,99,0,0,1056,
- 1057,5,104,0,0,1057,1058,5,40,0,0,1058,254,1,0,0,0,1059,1060,5,97,0,0,
- 1060,1061,5,99,0,0,1061,1062,5,111,0,0,1062,1063,5,115,0,0,1063,1064,5,
- 101,0,0,1064,1065,5,99,0,0,1065,1066,5,104,0,0,1066,1067,5,40,0,0,1067,
- 256,1,0,0,0,1068,1069,5,97,0,0,1069,1070,5,114,0,0,1070,1071,5,99,0,0,
- 1071,1072,5,111,0,0,1072,1073,5,115,0,0,1073,1074,5,101,0,0,1074,1075,
- 5,99,0,0,1075,1076,5,104,0,0,1076,1077,5,40,0,0,1077,258,1,0,0,0,1078,
- 1079,5,97,0,0,1079,1080,5,114,0,0,1080,1081,5,99,0,0,1081,1082,5,115,0,
- 0,1082,1083,5,99,0,0,1083,1084,5,104,0,0,1084,1085,5,40,0,0,1085,260,1,
- 0,0,0,1086,1087,5,97,0,0,1087,1088,5,114,0,0,1088,1089,5,99,0,0,1089,1090,
- 5,99,0,0,1090,1091,5,111,0,0,1091,1092,5,115,0,0,1092,1093,5,101,0,0,1093,
- 1094,5,99,0,0,1094,1095,5,104,0,0,1095,1096,5,40,0,0,1096,262,1,0,0,0,
- 1097,1098,5,97,0,0,1098,1099,5,99,0,0,1099,1100,5,115,0,0,1100,1101,5,
- 99,0,0,1101,1102,5,104,0,0,1102,1103,5,40,0,0,1103,264,1,0,0,0,1104,1105,
- 5,102,0,0,1105,1106,5,97,0,0,1106,1107,5,99,0,0,1107,1108,5,116,0,0,1108,
- 1109,5,111,0,0,1109,1110,5,114,0,0,1110,1111,5,105,0,0,1111,1112,5,97,
- 0,0,1112,1113,5,108,0,0,1113,1114,5,40,0,0,1114,266,1,0,0,0,1115,1116,
- 5,103,0,0,1116,1117,5,97,0,0,1117,1118,5,109,0,0,1118,1119,5,109,0,0,1119,
- 1120,5,97,0,0,1120,1121,5,40,0,0,1121,268,1,0,0,0,1122,1123,5,100,0,0,
- 1123,1124,5,101,0,0,1124,1125,5,114,0,0,1125,1126,5,105,0,0,1126,1127,
- 5,118,0,0,1127,1128,5,97,0,0,1128,1129,5,116,0,0,1129,1130,5,105,0,0,1130,
- 1131,5,118,0,0,1131,1132,5,101,0,0,1132,1133,5,40,0,0,1133,270,1,0,0,0,
- 1134,1135,5,105,0,0,1135,1136,5,110,0,0,1136,1137,5,116,0,0,1137,1138,
- 5,101,0,0,1138,1139,5,103,0,0,1139,1140,5,114,0,0,1140,1141,5,97,0,0,1141,
- 1142,5,108,0,0,1142,1143,5,40,0,0,1143,272,1,0,0,0,1144,1145,5,108,0,0,
- 1145,1146,5,105,0,0,1146,1147,5,109,0,0,1147,1148,5,105,0,0,1148,1149,
- 5,116,0,0,1149,1150,5,40,0,0,1150,274,1,0,0,0,1151,1152,5,108,0,0,1152,
- 1153,5,105,0,0,1153,1154,5,109,0,0,1154,1155,5,105,0,0,1155,1156,5,116,
- 0,0,1156,1157,5,108,0,0,1157,1158,5,101,0,0,1158,1159,5,102,0,0,1159,1160,
- 5,116,0,0,1160,1161,5,40,0,0,1161,276,1,0,0,0,1162,1163,5,108,0,0,1163,
- 1164,5,105,0,0,1164,1165,5,109,0,0,1165,1166,5,105,0,0,1166,1167,5,116,
- 0,0,1167,1168,5,114,0,0,1168,1169,5,105,0,0,1169,1170,5,103,0,0,1170,1171,
- 5,104,0,0,1171,1172,5,116,0,0,1172,1173,5,40,0,0,1173,278,1,0,0,0,1174,
- 1175,5,115,0,0,1175,1176,5,117,0,0,1176,1177,5,109,0,0,1177,1178,5,40,
- 0,0,1178,280,1,0,0,0,1179,1180,5,112,0,0,1180,1181,5,114,0,0,1181,1182,
- 5,111,0,0,1182,1183,5,100,0,0,1183,1184,5,117,0,0,1184,1185,5,99,0,0,1185,
- 1186,5,116,0,0,1186,1187,5,40,0,0,1187,282,1,0,0,0,1188,1189,5,115,0,0,
- 1189,1190,5,105,0,0,1190,1191,5,103,0,0,1191,1192,5,110,0,0,1192,1193,
- 5,117,0,0,1193,1194,5,109,0,0,1194,1195,5,40,0,0,1195,284,1,0,0,0,1196,
- 1197,5,115,0,0,1197,1198,5,103,0,0,1198,1199,5,110,0,0,1199,1200,5,40,
- 0,0,1200,286,1,0,0,0,1201,1202,5,115,0,0,1202,1203,5,105,0,0,1203,1204,
- 5,103,0,0,1204,1205,5,110,0,0,1205,1206,5,40,0,0,1206,288,1,0,0,0,1207,
- 1208,5,97,0,0,1208,1209,5,98,0,0,1209,1210,5,115,0,0,1210,1211,5,40,0,
- 0,1211,290,1,0,0,0,1212,1213,5,112,0,0,1213,1214,5,104,0,0,1214,1215,5,
- 105,0,0,1215,1216,5,40,0,0,1216,292,1,0,0,0,1217,1218,5,112,0,0,1218,1219,
- 5,114,0,0,1219,1220,5,105,0,0,1220,1221,5,109,0,0,1221,1222,5,101,0,0,
- 1222,1223,5,40,0,0,1223,294,1,0,0,0,1224,1225,5,118,0,0,1225,1226,5,97,
- 0,0,1226,1227,5,108,0,0,1227,1228,5,117,0,0,1228,1229,5,97,0,0,1229,1230,
- 5,116,0,0,1230,1231,5,105,0,0,1231,1232,5,111,0,0,1232,1233,5,110,0,0,
- 1233,1234,5,40,0,0,1234,296,1,0,0,0,1235,1236,5,99,0,0,1236,1237,5,97,
- 0,0,1237,1238,5,114,0,0,1238,1239,5,100,0,0,1239,1240,5,40,0,0,1240,298,
- 1,0,0,0,1241,1242,5,112,0,0,1242,1243,5,111,0,0,1243,1244,5,119,0,0,1244,
- 1245,5,101,0,0,1245,1246,5,114,0,0,1246,1247,5,115,0,0,1247,1248,5,101,
- 0,0,1248,1249,5,116,0,0,1249,1250,5,40,0,0,1250,300,1,0,0,0,1251,1252,
- 5,117,0,0,1252,1253,5,110,0,0,1253,1254,5,105,0,0,1254,1255,5,111,0,0,
- 1255,1256,5,110,0,0,1256,1257,5,40,0,0,1257,302,1,0,0,0,1258,1259,5,105,
- 0,0,1259,1260,5,110,0,0,1260,1261,5,116,0,0,1261,1262,5,101,0,0,1262,1263,
- 5,114,0,0,1263,1264,5,115,0,0,1264,1265,5,101,0,0,1265,1266,5,99,0,0,1266,
- 1267,5,116,0,0,1267,1268,5,105,0,0,1268,1269,5,111,0,0,1269,1270,5,110,
- 0,0,1270,1271,5,40,0,0,1271,304,1,0,0,0,1272,1273,5,99,0,0,1273,1274,5,
- 111,0,0,1274,1275,5,109,0,0,1275,1276,5,112,0,0,1276,1277,5,108,0,0,1277,
- 1278,5,101,0,0,1278,1279,5,109,0,0,1279,1280,5,101,0,0,1280,1281,5,110,
- 0,0,1281,1282,5,116,0,0,1282,1283,5,40,0,0,1283,306,1,0,0,0,1284,1285,
- 5,105,0,0,1285,1286,5,109,0,0,1286,1287,5,97,0,0,1287,1288,5,103,0,0,1288,
- 1289,5,101,0,0,1289,1290,5,40,0,0,1290,308,1,0,0,0,1291,1292,5,112,0,0,
- 1292,1293,5,114,0,0,1293,1294,5,101,0,0,1294,1295,5,105,0,0,1295,1296,
- 5,109,0,0,1296,1297,5,97,0,0,1297,1298,5,103,0,0,1298,1299,5,101,0,0,1299,
- 1300,5,40,0,0,1300,310,1,0,0,0,1301,1302,5,102,0,0,1302,1303,5,108,0,0,
- 1303,1304,5,111,0,0,1304,1305,5,111,0,0,1305,1306,5,114,0,0,1306,1307,
- 5,40,0,0,1307,312,1,0,0,0,1308,1309,5,99,0,0,1309,1310,5,101,0,0,1310,
- 1311,5,105,0,0,1311,1312,5,108,0,0,1312,1313,5,40,0,0,1313,314,1,0,0,0,
- 1314,1315,5,99,0,0,1315,1316,5,101,0,0,1316,1317,5,105,0,0,1317,1318,5,
- 108,0,0,1318,1319,5,105,0,0,1319,1320,5,110,0,0,1320,1321,5,103,0,0,1321,
- 1322,5,40,0,0,1322,316,1,0,0,0,1323,1324,5,114,0,0,1324,1325,5,111,0,0,
- 1325,1326,5,117,0,0,1326,1327,5,110,0,0,1327,1328,5,100,0,0,1328,1329,
- 5,40,0,0,1329,318,1,0,0,0,1330,1331,5,109,0,0,1331,1332,5,105,0,0,1332,
- 1333,5,110,0,0,1333,1334,5,40,0,0,1334,320,1,0,0,0,1335,1336,5,109,0,0,
- 1336,1337,5,97,0,0,1337,1338,5,120,0,0,1338,1339,5,40,0,0,1339,322,1,0,
- 0,0,1340,1341,5,97,0,0,1341,1342,5,114,0,0,1342,1343,5,103,0,0,1343,1344,
- 5,109,0,0,1344,1345,5,97,0,0,1345,1346,5,120,0,0,1346,1347,5,40,0,0,1347,
- 324,1,0,0,0,1348,1349,5,97,0,0,1349,1350,5,114,0,0,1350,1351,5,103,0,0,
- 1351,1352,5,109,0,0,1352,1353,5,105,0,0,1353,1354,5,110,0,0,1354,1355,
- 5,40,0,0,1355,326,1,0,0,0,1356,1357,5,103,0,0,1357,1358,5,99,0,0,1358,
- 1359,5,100,0,0,1359,1360,5,40,0,0,1360,328,1,0,0,0,1361,1362,5,108,0,0,
- 1362,1363,5,99,0,0,1363,1364,5,109,0,0,1364,1365,5,40,0,0,1365,330,1,0,
- 0,0,1366,1367,5,98,0,0,1367,1368,5,105,0,0,1368,1369,5,110,0,0,1369,1370,
- 5,111,0,0,1370,1371,5,109,0,0,1371,1372,5,105,0,0,1372,1373,5,97,0,0,1373,
- 1374,5,108,0,0,1374,1375,5,40,0,0,1375,332,1,0,0,0,1376,1377,5,105,0,0,
- 1377,1378,5,118,0,0,1378,1379,5,101,0,0,1379,1380,5,114,0,0,1380,1381,
- 5,115,0,0,1381,1382,5,111,0,0,1382,1383,5,110,0,0,1383,1384,5,40,0,0,1384,
- 334,1,0,0,0,1385,1386,5,97,0,0,1386,1387,5,108,0,0,1387,1388,5,101,0,0,
- 1388,1389,5,112,0,0,1389,1390,5,104,0,0,1390,1391,5,40,0,0,1391,336,1,
- 0,0,0,1392,1393,5,101,0,0,1393,1394,5,114,0,0,1394,1395,5,102,0,0,1395,
- 1396,5,40,0,0,1396,338,1,0,0,0,1397,1398,5,101,0,0,1398,1399,5,114,0,0,
- 1399,1400,5,102,0,0,1400,1401,5,99,0,0,1401,1402,5,40,0,0,1402,340,1,0,
- 0,0,1403,1404,5,101,0,0,1404,1405,5,114,0,0,1405,1406,5,102,0,0,1406,1407,
- 5,105,0,0,1407,1408,5,40,0,0,1408,342,1,0,0,0,1409,1410,5,69,0,0,1410,
- 1411,5,105,0,0,1411,1412,5,40,0,0,1412,344,1,0,0,0,1413,1414,5,108,0,0,
- 1414,1415,5,105,0,0,1415,1416,5,40,0,0,1416,346,1,0,0,0,1417,1418,5,83,
- 0,0,1418,1419,5,105,0,0,1419,1420,5,40,0,0,1420,348,1,0,0,0,1421,1422,
- 5,67,0,0,1422,1423,5,105,0,0,1423,1424,5,40,0,0,1424,350,1,0,0,0,1425,
- 1426,5,83,0,0,1426,1427,5,104,0,0,1427,1428,5,105,0,0,1428,1429,5,40,0,
- 0,1429,352,1,0,0,0,1430,1431,5,67,0,0,1431,1432,5,104,0,0,1432,1433,5,
- 105,0,0,1433,1434,5,40,0,0,1434,354,1,0,0,0,1435,1436,5,116,0,0,1436,1437,
- 5,114,0,0,1437,1438,5,117,0,0,1438,1439,5,110,0,0,1439,1440,5,99,0,0,1440,
- 1441,5,40,0,0,1441,356,1,0,0,0,1442,1443,5,99,0,0,1443,1444,5,111,0,0,
- 1444,1445,5,110,0,0,1445,1446,5,106,0,0,1446,1447,5,117,0,0,1447,1448,
- 5,103,0,0,1448,1449,5,97,0,0,1449,1450,5,116,0,0,1450,1451,5,101,0,0,1451,
- 1452,5,40,0,0,1452,358,1,0,0,0,1453,1454,5,100,0,0,1454,1455,5,111,0,0,
- 1455,1456,5,109,0,0,1456,1457,5,97,0,0,1457,1458,5,105,0,0,1458,1459,5,
- 110,0,0,1459,1460,5,40,0,0,1460,360,1,0,0,0,1461,1462,5,112,0,0,1462,1463,
- 5,105,0,0,1463,1464,5,101,0,0,1464,1465,5,99,0,0,1465,1466,5,101,0,0,1466,
- 1467,5,119,0,0,1467,1468,5,105,0,0,1468,1469,5,115,0,0,1469,1470,5,101,
- 0,0,1470,1471,5,40,0,0,1471,362,1,0,0,0,1472,1473,5,97,0,0,1473,1474,5,
- 112,0,0,1474,1475,5,112,0,0,1475,1476,5,108,0,0,1476,1477,5,121,0,0,1477,
- 1478,5,40,0,0,1478,364,1,0,0,0,1479,1480,5,108,0,0,1480,1481,5,97,0,0,
- 1481,1482,5,109,0,0,1482,1483,5,98,0,0,1483,1484,5,100,0,0,1484,1485,5,
- 97,0,0,1485,1486,5,40,0,0,1486,366,1,0,0,0,1487,1489,5,13,0,0,1488,1487,
- 1,0,0,0,1488,1489,1,0,0,0,1489,1490,1,0,0,0,1490,1492,5,10,0,0,1491,1488,
- 1,0,0,0,1492,1493,1,0,0,0,1493,1491,1,0,0,0,1493,1494,1,0,0,0,1494,1495,
- 1,0,0,0,1495,1496,6,183,0,0,1496,368,1,0,0,0,1497,1499,7,0,0,0,1498,1500,
- 7,1,0,0,1499,1498,1,0,0,0,1499,1500,1,0,0,0,1500,1502,1,0,0,0,1501,1503,
- 2,48,57,0,1502,1501,1,0,0,0,1503,1504,1,0,0,0,1504,1502,1,0,0,0,1504,1505,
- 1,0,0,0,1505,370,1,0,0,0,1506,1508,2,48,57,0,1507,1506,1,0,0,0,1508,1509,
- 1,0,0,0,1509,1507,1,0,0,0,1509,1510,1,0,0,0,1510,1511,1,0,0,0,1511,1515,
- 5,46,0,0,1512,1514,2,48,57,0,1513,1512,1,0,0,0,1514,1517,1,0,0,0,1515,
- 1513,1,0,0,0,1515,1516,1,0,0,0,1516,1519,1,0,0,0,1517,1515,1,0,0,0,1518,
- 1520,3,369,184,0,1519,1518,1,0,0,0,1519,1520,1,0,0,0,1520,1522,1,0,0,0,
- 1521,1523,5,105,0,0,1522,1521,1,0,0,0,1522,1523,1,0,0,0,1523,1540,1,0,
- 0,0,1524,1526,5,46,0,0,1525,1524,1,0,0,0,1525,1526,1,0,0,0,1526,1528,1,
- 0,0,0,1527,1529,2,48,57,0,1528,1527,1,0,0,0,1529,1530,1,0,0,0,1530,1528,
- 1,0,0,0,1530,1531,1,0,0,0,1531,1533,1,0,0,0,1532,1534,3,369,184,0,1533,
- 1532,1,0,0,0,1533,1534,1,0,0,0,1534,1536,1,0,0,0,1535,1537,5,105,0,0,1536,
- 1535,1,0,0,0,1536,1537,1,0,0,0,1537,1540,1,0,0,0,1538,1540,5,105,0,0,1539,
- 1507,1,0,0,0,1539,1525,1,0,0,0,1539,1538,1,0,0,0,1540,372,1,0,0,0,1541,
- 1542,5,67,0,0,1542,1560,5,67,0,0,1543,1544,5,82,0,0,1544,1560,5,82,0,0,
- 1545,1546,5,81,0,0,1546,1560,5,81,0,0,1547,1548,5,90,0,0,1548,1560,5,90,
- 0,0,1549,1550,5,66,0,0,1550,1560,5,66,0,0,1551,1552,5,90,0,0,1552,1553,
- 5,90,0,0,1553,1560,5,42,0,0,1554,1555,5,90,0,0,1555,1556,5,90,0,0,1556,
- 1560,5,43,0,0,1557,1558,5,80,0,0,1558,1560,5,80,0,0,1559,1541,1,0,0,0,
- 1559,1543,1,0,0,0,1559,1545,1,0,0,0,1559,1547,1,0,0,0,1559,1549,1,0,0,
- 0,1559,1551,1,0,0,0,1559,1554,1,0,0,0,1559,1557,1,0,0,0,1560,374,1,0,0,
- 0,1561,1562,5,116,0,0,1562,1563,5,114,0,0,1563,1564,5,117,0,0,1564,1580,
- 5,101,0,0,1565,1566,5,84,0,0,1566,1567,5,114,0,0,1567,1568,5,117,0,0,1568,
- 1580,5,101,0,0,1569,1570,5,102,0,0,1570,1571,5,97,0,0,1571,1572,5,108,
- 0,0,1572,1573,5,115,0,0,1573,1580,5,101,0,0,1574,1575,5,70,0,0,1575,1576,
- 5,97,0,0,1576,1577,5,108,0,0,1577,1578,5,115,0,0,1578,1580,5,101,0,0,1579,
- 1561,1,0,0,0,1579,1565,1,0,0,0,1579,1569,1,0,0,0,1579,1574,1,0,0,0,1580,
- 376,1,0,0,0,1581,1582,5,78,0,0,1582,1583,5,97,0,0,1583,1584,5,78,0,0,1584,
- 378,1,0,0,0,1585,1587,7,2,0,0,1586,1585,1,0,0,0,1587,1588,1,0,0,0,1588,
- 1586,1,0,0,0,1588,1589,1,0,0,0,1589,1596,1,0,0,0,1590,1592,5,95,0,0,1591,
- 1593,7,3,0,0,1592,1591,1,0,0,0,1593,1594,1,0,0,0,1594,1592,1,0,0,0,1594,
- 1595,1,0,0,0,1595,1597,1,0,0,0,1596,1590,1,0,0,0,1596,1597,1,0,0,0,1597,
- 380,1,0,0,0,1598,1599,5,47,0,0,1599,1600,5,47,0,0,1600,1604,1,0,0,0,1601,
- 1603,8,4,0,0,1602,1601,1,0,0,0,1603,1606,1,0,0,0,1604,1602,1,0,0,0,1604,
- 1605,1,0,0,0,1605,1611,1,0,0,0,1606,1604,1,0,0,0,1607,1609,5,13,0,0,1608,
- 1607,1,0,0,0,1608,1609,1,0,0,0,1609,1610,1,0,0,0,1610,1612,5,10,0,0,1611,
- 1608,1,0,0,0,1611,1612,1,0,0,0,1612,1625,1,0,0,0,1613,1614,5,47,0,0,1614,
- 1615,5,42,0,0,1615,1619,1,0,0,0,1616,1618,9,0,0,0,1617,1616,1,0,0,0,1618,
- 1621,1,0,0,0,1619,1620,1,0,0,0,1619,1617,1,0,0,0,1620,1622,1,0,0,0,1621,
- 1619,1,0,0,0,1622,1623,5,42,0,0,1623,1625,5,47,0,0,1624,1598,1,0,0,0,1624,
- 1613,1,0,0,0,1625,1626,1,0,0,0,1626,1627,6,190,0,0,1627,382,1,0,0,0,1628,
- 1630,7,5,0,0,1629,1628,1,0,0,0,1630,1631,1,0,0,0,1631,1629,1,0,0,0,1631,
- 1632,1,0,0,0,1632,1633,1,0,0,0,1633,1634,6,191,0,0,1634,384,1,0,0,0,25,
- 0,1488,1493,1499,1504,1509,1515,1519,1522,1525,1530,1533,1536,1539,1559,
- 1579,1588,1594,1596,1604,1608,1611,1619,1624,1631,1,6,0,0
+ 369,185,371,186,373,0,375,187,377,188,379,189,381,190,383,191,385,192,
+ 387,193,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,1690,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,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,
+ 1,389,1,0,0,0,3,391,1,0,0,0,5,393,1,0,0,0,7,395,1,0,0,0,9,397,1,0,0,0,
+ 11,399,1,0,0,0,13,403,1,0,0,0,15,405,1,0,0,0,17,407,1,0,0,0,19,411,1,0,
+ 0,0,21,421,1,0,0,0,23,424,1,0,0,0,25,430,1,0,0,0,27,433,1,0,0,0,29,445,
+ 1,0,0,0,31,447,1,0,0,0,33,450,1,0,0,0,35,457,1,0,0,0,37,459,1,0,0,0,39,
+ 468,1,0,0,0,41,470,1,0,0,0,43,478,1,0,0,0,45,480,1,0,0,0,47,483,1,0,0,
+ 0,49,486,1,0,0,0,51,488,1,0,0,0,53,490,1,0,0,0,55,492,1,0,0,0,57,495,1,
+ 0,0,0,59,497,1,0,0,0,61,499,1,0,0,0,63,501,1,0,0,0,65,505,1,0,0,0,67,509,
+ 1,0,0,0,69,511,1,0,0,0,71,515,1,0,0,0,73,518,1,0,0,0,75,526,1,0,0,0,77,
+ 529,1,0,0,0,79,538,1,0,0,0,81,541,1,0,0,0,83,543,1,0,0,0,85,550,1,0,0,
+ 0,87,552,1,0,0,0,89,560,1,0,0,0,91,563,1,0,0,0,93,570,1,0,0,0,95,572,1,
+ 0,0,0,97,574,1,0,0,0,99,576,1,0,0,0,101,580,1,0,0,0,103,584,1,0,0,0,105,
+ 587,1,0,0,0,107,590,1,0,0,0,109,592,1,0,0,0,111,594,1,0,0,0,113,597,1,
+ 0,0,0,115,599,1,0,0,0,117,601,1,0,0,0,119,603,1,0,0,0,121,608,1,0,0,0,
+ 123,615,1,0,0,0,125,621,1,0,0,0,127,626,1,0,0,0,129,632,1,0,0,0,131,638,
+ 1,0,0,0,133,643,1,0,0,0,135,647,1,0,0,0,137,652,1,0,0,0,139,657,1,0,0,
+ 0,141,662,1,0,0,0,143,667,1,0,0,0,145,674,1,0,0,0,147,679,1,0,0,0,149,
+ 684,1,0,0,0,151,691,1,0,0,0,153,696,1,0,0,0,155,704,1,0,0,0,157,712,1,
+ 0,0,0,159,720,1,0,0,0,161,730,1,0,0,0,163,738,1,0,0,0,165,748,1,0,0,0,
+ 167,756,1,0,0,0,169,762,1,0,0,0,171,768,1,0,0,0,173,774,1,0,0,0,175,780,
+ 1,0,0,0,177,788,1,0,0,0,179,794,1,0,0,0,181,802,1,0,0,0,183,808,1,0,0,
+ 0,185,816,1,0,0,0,187,822,1,0,0,0,189,826,1,0,0,0,191,832,1,0,0,0,193,
+ 836,1,0,0,0,195,842,1,0,0,0,197,846,1,0,0,0,199,854,1,0,0,0,201,860,1,
+ 0,0,0,203,865,1,0,0,0,205,871,1,0,0,0,207,876,1,0,0,0,209,884,1,0,0,0,
+ 211,890,1,0,0,0,213,897,1,0,0,0,215,905,1,0,0,0,217,911,1,0,0,0,219,920,
+ 1,0,0,0,221,927,1,0,0,0,223,935,1,0,0,0,225,941,1,0,0,0,227,950,1,0,0,
+ 0,229,957,1,0,0,0,231,965,1,0,0,0,233,971,1,0,0,0,235,980,1,0,0,0,237,
+ 987,1,0,0,0,239,995,1,0,0,0,241,1004,1,0,0,0,243,1014,1,0,0,0,245,1021,
+ 1,0,0,0,247,1032,1,0,0,0,249,1039,1,0,0,0,251,1047,1,0,0,0,253,1054,1,
+ 0,0,0,255,1063,1,0,0,0,257,1072,1,0,0,0,259,1082,1,0,0,0,261,1090,1,0,
+ 0,0,263,1101,1,0,0,0,265,1108,1,0,0,0,267,1119,1,0,0,0,269,1126,1,0,0,
+ 0,271,1138,1,0,0,0,273,1148,1,0,0,0,275,1155,1,0,0,0,277,1166,1,0,0,0,
+ 279,1178,1,0,0,0,281,1183,1,0,0,0,283,1192,1,0,0,0,285,1200,1,0,0,0,287,
+ 1205,1,0,0,0,289,1211,1,0,0,0,291,1216,1,0,0,0,293,1221,1,0,0,0,295,1228,
+ 1,0,0,0,297,1239,1,0,0,0,299,1245,1,0,0,0,301,1255,1,0,0,0,303,1262,1,
+ 0,0,0,305,1276,1,0,0,0,307,1288,1,0,0,0,309,1295,1,0,0,0,311,1305,1,0,
+ 0,0,313,1312,1,0,0,0,315,1318,1,0,0,0,317,1327,1,0,0,0,319,1334,1,0,0,
+ 0,321,1339,1,0,0,0,323,1344,1,0,0,0,325,1352,1,0,0,0,327,1360,1,0,0,0,
+ 329,1365,1,0,0,0,331,1370,1,0,0,0,333,1380,1,0,0,0,335,1389,1,0,0,0,337,
+ 1396,1,0,0,0,339,1401,1,0,0,0,341,1407,1,0,0,0,343,1413,1,0,0,0,345,1417,
+ 1,0,0,0,347,1421,1,0,0,0,349,1432,1,0,0,0,351,1441,1,0,0,0,353,1445,1,
+ 0,0,0,355,1449,1,0,0,0,357,1454,1,0,0,0,359,1459,1,0,0,0,361,1466,1,0,
+ 0,0,363,1477,1,0,0,0,365,1485,1,0,0,0,367,1496,1,0,0,0,369,1503,1,0,0,
+ 0,371,1515,1,0,0,0,373,1521,1,0,0,0,375,1563,1,0,0,0,377,1583,1,0,0,0,
+ 379,1603,1,0,0,0,381,1605,1,0,0,0,383,1610,1,0,0,0,385,1648,1,0,0,0,387,
+ 1653,1,0,0,0,389,390,5,33,0,0,390,2,1,0,0,0,391,392,5,94,0,0,392,4,1,0,
+ 0,0,393,394,5,45,0,0,394,6,1,0,0,0,395,396,5,43,0,0,396,8,1,0,0,0,397,
+ 398,5,42,0,0,398,10,1,0,0,0,399,400,5,46,0,0,400,401,5,46,0,0,401,402,
+ 5,46,0,0,402,12,1,0,0,0,403,404,5,8230,0,0,404,14,1,0,0,0,405,406,5,47,
+ 0,0,406,16,1,0,0,0,407,408,5,109,0,0,408,409,5,111,0,0,409,410,5,100,0,
+ 0,410,18,1,0,0,0,411,412,5,105,0,0,412,413,5,110,0,0,413,414,5,116,0,0,
+ 414,415,5,101,0,0,415,416,5,114,0,0,416,417,5,115,0,0,417,418,5,101,0,
+ 0,418,419,5,99,0,0,419,420,5,116,0,0,420,20,1,0,0,0,421,422,5,47,0,0,422,
+ 423,5,92,0,0,423,22,1,0,0,0,424,425,5,117,0,0,425,426,5,110,0,0,426,427,
+ 5,105,0,0,427,428,5,116,0,0,428,429,5,101,0,0,429,24,1,0,0,0,430,431,5,
+ 92,0,0,431,432,5,47,0,0,432,26,1,0,0,0,433,434,5,115,0,0,434,435,5,101,
+ 0,0,435,436,5,116,0,0,436,437,5,115,0,0,437,438,5,117,0,0,438,439,5,98,
+ 0,0,439,440,5,116,0,0,440,441,5,114,0,0,441,442,5,97,0,0,442,443,5,99,
+ 0,0,443,444,5,116,0,0,444,28,1,0,0,0,445,446,5,92,0,0,446,30,1,0,0,0,447,
+ 448,5,105,0,0,448,449,5,110,0,0,449,32,1,0,0,0,450,451,5,115,0,0,451,452,
+ 5,117,0,0,452,453,5,98,0,0,453,454,5,115,0,0,454,455,5,101,0,0,455,456,
+ 5,116,0,0,456,34,1,0,0,0,457,458,5,8838,0,0,458,36,1,0,0,0,459,460,5,115,
+ 0,0,460,461,5,117,0,0,461,462,5,112,0,0,462,463,5,101,0,0,463,464,5,114,
+ 0,0,464,465,5,115,0,0,465,466,5,101,0,0,466,467,5,116,0,0,467,38,1,0,0,
+ 0,468,469,5,8839,0,0,469,40,1,0,0,0,470,471,5,100,0,0,471,472,5,105,0,
+ 0,472,473,5,118,0,0,473,474,5,105,0,0,474,475,5,100,0,0,475,476,5,101,
+ 0,0,476,477,5,115,0,0,477,42,1,0,0,0,478,479,5,124,0,0,479,44,1,0,0,0,
+ 480,481,5,62,0,0,481,482,5,61,0,0,482,46,1,0,0,0,483,484,5,60,0,0,484,
+ 485,5,61,0,0,485,48,1,0,0,0,486,487,5,62,0,0,487,50,1,0,0,0,488,489,5,
+ 60,0,0,489,52,1,0,0,0,490,491,5,61,0,0,491,54,1,0,0,0,492,493,5,60,0,0,
+ 493,494,5,62,0,0,494,56,1,0,0,0,495,496,5,8801,0,0,496,58,1,0,0,0,497,
+ 498,5,40,0,0,498,60,1,0,0,0,499,500,5,41,0,0,500,62,1,0,0,0,501,502,5,
+ 110,0,0,502,503,5,111,0,0,503,504,5,116,0,0,504,64,1,0,0,0,505,506,5,97,
+ 0,0,506,507,5,110,0,0,507,508,5,100,0,0,508,66,1,0,0,0,509,510,5,38,0,
+ 0,510,68,1,0,0,0,511,512,5,120,0,0,512,513,5,111,0,0,513,514,5,114,0,0,
+ 514,70,1,0,0,0,515,516,5,111,0,0,516,517,5,114,0,0,517,72,1,0,0,0,518,
+ 519,5,105,0,0,519,520,5,109,0,0,520,521,5,112,0,0,521,522,5,108,0,0,522,
+ 523,5,105,0,0,523,524,5,101,0,0,524,525,5,115,0,0,525,74,1,0,0,0,526,527,
+ 5,45,0,0,527,528,5,62,0,0,528,76,1,0,0,0,529,530,5,112,0,0,530,531,5,114,
+ 0,0,531,532,5,111,0,0,532,533,5,118,0,0,533,534,5,105,0,0,534,535,5,100,
+ 0,0,535,536,5,101,0,0,536,537,5,100,0,0,537,78,1,0,0,0,538,539,5,61,0,
+ 0,539,540,5,62,0,0,540,80,1,0,0,0,541,542,5,58,0,0,542,82,1,0,0,0,543,
+ 544,5,102,0,0,544,545,5,111,0,0,545,546,5,114,0,0,546,547,5,97,0,0,547,
+ 548,5,108,0,0,548,549,5,108,0,0,549,84,1,0,0,0,550,551,5,8704,0,0,551,
+ 86,1,0,0,0,552,553,5,101,0,0,553,554,5,120,0,0,554,555,5,105,0,0,555,556,
+ 5,115,0,0,556,557,5,116,0,0,557,558,5,115,0,0,558,559,5,33,0,0,559,88,
+ 1,0,0,0,560,561,5,8707,0,0,561,562,5,33,0,0,562,90,1,0,0,0,563,564,5,101,
+ 0,0,564,565,5,120,0,0,565,566,5,105,0,0,566,567,5,115,0,0,567,568,5,116,
+ 0,0,568,569,5,115,0,0,569,92,1,0,0,0,570,571,5,8707,0,0,571,94,1,0,0,0,
+ 572,573,5,44,0,0,573,96,1,0,0,0,574,575,5,59,0,0,575,98,1,0,0,0,576,577,
+ 5,43,0,0,577,578,5,111,0,0,578,579,5,111,0,0,579,100,1,0,0,0,580,581,5,
+ 45,0,0,581,582,5,111,0,0,582,583,5,111,0,0,583,102,1,0,0,0,584,585,5,40,
+ 0,0,585,586,5,124,0,0,586,104,1,0,0,0,587,588,5,124,0,0,588,589,5,41,0,
+ 0,589,106,1,0,0,0,590,591,5,35,0,0,591,108,1,0,0,0,592,593,5,91,0,0,593,
+ 110,1,0,0,0,594,595,5,93,0,0,595,596,5,84,0,0,596,112,1,0,0,0,597,598,
+ 5,93,0,0,598,114,1,0,0,0,599,600,5,123,0,0,600,116,1,0,0,0,601,602,5,125,
+ 0,0,602,118,1,0,0,0,603,604,5,108,0,0,604,605,5,111,0,0,605,606,5,103,
+ 0,0,606,607,5,40,0,0,607,120,1,0,0,0,608,609,5,108,0,0,609,610,5,111,0,
+ 0,610,611,5,103,0,0,611,612,5,49,0,0,612,613,5,48,0,0,613,614,5,40,0,0,
+ 614,122,1,0,0,0,615,616,5,108,0,0,616,617,5,111,0,0,617,618,5,103,0,0,
+ 618,619,5,50,0,0,619,620,5,40,0,0,620,124,1,0,0,0,621,622,5,112,0,0,622,
+ 623,5,111,0,0,623,624,5,119,0,0,624,625,5,40,0,0,625,126,1,0,0,0,626,627,
+ 5,115,0,0,627,628,5,113,0,0,628,629,5,114,0,0,629,630,5,116,0,0,630,631,
+ 5,40,0,0,631,128,1,0,0,0,632,633,5,99,0,0,633,634,5,98,0,0,634,635,5,114,
+ 0,0,635,636,5,116,0,0,636,637,5,40,0,0,637,130,1,0,0,0,638,639,5,115,0,
+ 0,639,640,5,113,0,0,640,641,5,114,0,0,641,642,5,40,0,0,642,132,1,0,0,0,
+ 643,644,5,108,0,0,644,645,5,110,0,0,645,646,5,40,0,0,646,134,1,0,0,0,647,
+ 648,5,101,0,0,648,649,5,120,0,0,649,650,5,112,0,0,650,651,5,40,0,0,651,
+ 136,1,0,0,0,652,653,5,115,0,0,653,654,5,105,0,0,654,655,5,110,0,0,655,
+ 656,5,40,0,0,656,138,1,0,0,0,657,658,5,99,0,0,658,659,5,111,0,0,659,660,
+ 5,115,0,0,660,661,5,40,0,0,661,140,1,0,0,0,662,663,5,116,0,0,663,664,5,
+ 97,0,0,664,665,5,110,0,0,665,666,5,40,0,0,666,142,1,0,0,0,667,668,5,99,
+ 0,0,668,669,5,111,0,0,669,670,5,116,0,0,670,671,5,97,0,0,671,672,5,110,
+ 0,0,672,673,5,40,0,0,673,144,1,0,0,0,674,675,5,99,0,0,675,676,5,111,0,
+ 0,676,677,5,116,0,0,677,678,5,40,0,0,678,146,1,0,0,0,679,680,5,115,0,0,
+ 680,681,5,101,0,0,681,682,5,99,0,0,682,683,5,40,0,0,683,148,1,0,0,0,684,
+ 685,5,99,0,0,685,686,5,111,0,0,686,687,5,115,0,0,687,688,5,101,0,0,688,
+ 689,5,99,0,0,689,690,5,40,0,0,690,150,1,0,0,0,691,692,5,99,0,0,692,693,
+ 5,115,0,0,693,694,5,99,0,0,694,695,5,40,0,0,695,152,1,0,0,0,696,697,5,
+ 97,0,0,697,698,5,114,0,0,698,699,5,99,0,0,699,700,5,115,0,0,700,701,5,
+ 105,0,0,701,702,5,110,0,0,702,703,5,40,0,0,703,154,1,0,0,0,704,705,5,97,
+ 0,0,705,706,5,114,0,0,706,707,5,99,0,0,707,708,5,99,0,0,708,709,5,111,
+ 0,0,709,710,5,115,0,0,710,711,5,40,0,0,711,156,1,0,0,0,712,713,5,97,0,
+ 0,713,714,5,114,0,0,714,715,5,99,0,0,715,716,5,116,0,0,716,717,5,97,0,
+ 0,717,718,5,110,0,0,718,719,5,40,0,0,719,158,1,0,0,0,720,721,5,97,0,0,
+ 721,722,5,114,0,0,722,723,5,99,0,0,723,724,5,99,0,0,724,725,5,111,0,0,
+ 725,726,5,116,0,0,726,727,5,97,0,0,727,728,5,110,0,0,728,729,5,40,0,0,
+ 729,160,1,0,0,0,730,731,5,97,0,0,731,732,5,114,0,0,732,733,5,99,0,0,733,
+ 734,5,115,0,0,734,735,5,101,0,0,735,736,5,99,0,0,736,737,5,40,0,0,737,
+ 162,1,0,0,0,738,739,5,97,0,0,739,740,5,114,0,0,740,741,5,99,0,0,741,742,
+ 5,99,0,0,742,743,5,111,0,0,743,744,5,115,0,0,744,745,5,101,0,0,745,746,
+ 5,99,0,0,746,747,5,40,0,0,747,164,1,0,0,0,748,749,5,97,0,0,749,750,5,114,
+ 0,0,750,751,5,99,0,0,751,752,5,99,0,0,752,753,5,115,0,0,753,754,5,99,0,
+ 0,754,755,5,40,0,0,755,166,1,0,0,0,756,757,5,97,0,0,757,758,5,99,0,0,758,
+ 759,5,115,0,0,759,760,5,99,0,0,760,761,5,40,0,0,761,168,1,0,0,0,762,763,
+ 5,97,0,0,763,764,5,115,0,0,764,765,5,105,0,0,765,766,5,110,0,0,766,767,
+ 5,40,0,0,767,170,1,0,0,0,768,769,5,97,0,0,769,770,5,99,0,0,770,771,5,111,
+ 0,0,771,772,5,115,0,0,772,773,5,40,0,0,773,172,1,0,0,0,774,775,5,97,0,
+ 0,775,776,5,116,0,0,776,777,5,97,0,0,777,778,5,110,0,0,778,779,5,40,0,
+ 0,779,174,1,0,0,0,780,781,5,97,0,0,781,782,5,99,0,0,782,783,5,111,0,0,
+ 783,784,5,116,0,0,784,785,5,97,0,0,785,786,5,110,0,0,786,787,5,40,0,0,
+ 787,176,1,0,0,0,788,789,5,97,0,0,789,790,5,115,0,0,790,791,5,101,0,0,791,
+ 792,5,99,0,0,792,793,5,40,0,0,793,178,1,0,0,0,794,795,5,97,0,0,795,796,
+ 5,99,0,0,796,797,5,111,0,0,797,798,5,115,0,0,798,799,5,101,0,0,799,800,
+ 5,99,0,0,800,801,5,40,0,0,801,180,1,0,0,0,802,803,5,97,0,0,803,804,5,99,
+ 0,0,804,805,5,111,0,0,805,806,5,116,0,0,806,807,5,40,0,0,807,182,1,0,0,
+ 0,808,809,5,97,0,0,809,810,5,114,0,0,810,811,5,99,0,0,811,812,5,99,0,0,
+ 812,813,5,111,0,0,813,814,5,116,0,0,814,815,5,40,0,0,815,184,1,0,0,0,816,
+ 817,5,115,0,0,817,818,5,105,0,0,818,819,5,110,0,0,819,820,5,104,0,0,820,
+ 821,5,40,0,0,821,186,1,0,0,0,822,823,5,115,0,0,823,824,5,104,0,0,824,825,
+ 5,40,0,0,825,188,1,0,0,0,826,827,5,99,0,0,827,828,5,111,0,0,828,829,5,
+ 115,0,0,829,830,5,104,0,0,830,831,5,40,0,0,831,190,1,0,0,0,832,833,5,99,
+ 0,0,833,834,5,104,0,0,834,835,5,40,0,0,835,192,1,0,0,0,836,837,5,116,0,
+ 0,837,838,5,97,0,0,838,839,5,110,0,0,839,840,5,104,0,0,840,841,5,40,0,
+ 0,841,194,1,0,0,0,842,843,5,116,0,0,843,844,5,104,0,0,844,845,5,40,0,0,
+ 845,196,1,0,0,0,846,847,5,99,0,0,847,848,5,111,0,0,848,849,5,116,0,0,849,
+ 850,5,97,0,0,850,851,5,110,0,0,851,852,5,104,0,0,852,853,5,40,0,0,853,
+ 198,1,0,0,0,854,855,5,99,0,0,855,856,5,111,0,0,856,857,5,116,0,0,857,858,
+ 5,104,0,0,858,859,5,40,0,0,859,200,1,0,0,0,860,861,5,99,0,0,861,862,5,
+ 116,0,0,862,863,5,104,0,0,863,864,5,40,0,0,864,202,1,0,0,0,865,866,5,115,
+ 0,0,866,867,5,101,0,0,867,868,5,99,0,0,868,869,5,104,0,0,869,870,5,40,
+ 0,0,870,204,1,0,0,0,871,872,5,115,0,0,872,873,5,99,0,0,873,874,5,104,0,
+ 0,874,875,5,40,0,0,875,206,1,0,0,0,876,877,5,99,0,0,877,878,5,111,0,0,
+ 878,879,5,115,0,0,879,880,5,101,0,0,880,881,5,99,0,0,881,882,5,104,0,0,
+ 882,883,5,40,0,0,883,208,1,0,0,0,884,885,5,99,0,0,885,886,5,115,0,0,886,
+ 887,5,99,0,0,887,888,5,104,0,0,888,889,5,40,0,0,889,210,1,0,0,0,890,891,
+ 5,97,0,0,891,892,5,115,0,0,892,893,5,105,0,0,893,894,5,110,0,0,894,895,
+ 5,104,0,0,895,896,5,40,0,0,896,212,1,0,0,0,897,898,5,97,0,0,898,899,5,
+ 114,0,0,899,900,5,115,0,0,900,901,5,105,0,0,901,902,5,110,0,0,902,903,
+ 5,104,0,0,903,904,5,40,0,0,904,214,1,0,0,0,905,906,5,97,0,0,906,907,5,
+ 114,0,0,907,908,5,115,0,0,908,909,5,104,0,0,909,910,5,40,0,0,910,216,1,
+ 0,0,0,911,912,5,97,0,0,912,913,5,114,0,0,913,914,5,99,0,0,914,915,5,115,
+ 0,0,915,916,5,105,0,0,916,917,5,110,0,0,917,918,5,104,0,0,918,919,5,40,
+ 0,0,919,218,1,0,0,0,920,921,5,97,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,220,1,0,0,0,
+ 927,928,5,97,0,0,928,929,5,114,0,0,929,930,5,99,0,0,930,931,5,111,0,0,
+ 931,932,5,115,0,0,932,933,5,104,0,0,933,934,5,40,0,0,934,222,1,0,0,0,935,
+ 936,5,97,0,0,936,937,5,114,0,0,937,938,5,99,0,0,938,939,5,104,0,0,939,
+ 940,5,40,0,0,940,224,1,0,0,0,941,942,5,97,0,0,942,943,5,114,0,0,943,944,
+ 5,99,0,0,944,945,5,99,0,0,945,946,5,111,0,0,946,947,5,115,0,0,947,948,
+ 5,104,0,0,948,949,5,40,0,0,949,226,1,0,0,0,950,951,5,97,0,0,951,952,5,
+ 116,0,0,952,953,5,97,0,0,953,954,5,110,0,0,954,955,5,104,0,0,955,956,5,
+ 40,0,0,956,228,1,0,0,0,957,958,5,97,0,0,958,959,5,114,0,0,959,960,5,116,
+ 0,0,960,961,5,97,0,0,961,962,5,110,0,0,962,963,5,104,0,0,963,964,5,40,
+ 0,0,964,230,1,0,0,0,965,966,5,97,0,0,966,967,5,114,0,0,967,968,5,116,0,
+ 0,968,969,5,104,0,0,969,970,5,40,0,0,970,232,1,0,0,0,971,972,5,97,0,0,
+ 972,973,5,114,0,0,973,974,5,99,0,0,974,975,5,116,0,0,975,976,5,97,0,0,
+ 976,977,5,110,0,0,977,978,5,104,0,0,978,979,5,40,0,0,979,234,1,0,0,0,980,
+ 981,5,97,0,0,981,982,5,99,0,0,982,983,5,111,0,0,983,984,5,116,0,0,984,
+ 985,5,104,0,0,985,986,5,40,0,0,986,236,1,0,0,0,987,988,5,97,0,0,988,989,
+ 5,114,0,0,989,990,5,99,0,0,990,991,5,111,0,0,991,992,5,116,0,0,992,993,
+ 5,104,0,0,993,994,5,40,0,0,994,238,1,0,0,0,995,996,5,97,0,0,996,997,5,
+ 99,0,0,997,998,5,111,0,0,998,999,5,116,0,0,999,1000,5,97,0,0,1000,1001,
+ 5,110,0,0,1001,1002,5,104,0,0,1002,1003,5,40,0,0,1003,240,1,0,0,0,1004,
+ 1005,5,97,0,0,1005,1006,5,114,0,0,1006,1007,5,99,0,0,1007,1008,5,111,0,
+ 0,1008,1009,5,116,0,0,1009,1010,5,97,0,0,1010,1011,5,110,0,0,1011,1012,
+ 5,104,0,0,1012,1013,5,40,0,0,1013,242,1,0,0,0,1014,1015,5,97,0,0,1015,
+ 1016,5,114,0,0,1016,1017,5,99,0,0,1017,1018,5,116,0,0,1018,1019,5,104,
+ 0,0,1019,1020,5,40,0,0,1020,244,1,0,0,0,1021,1022,5,97,0,0,1022,1023,5,
+ 114,0,0,1023,1024,5,99,0,0,1024,1025,5,99,0,0,1025,1026,5,111,0,0,1026,
+ 1027,5,116,0,0,1027,1028,5,97,0,0,1028,1029,5,110,0,0,1029,1030,5,104,
+ 0,0,1030,1031,5,40,0,0,1031,246,1,0,0,0,1032,1033,5,97,0,0,1033,1034,5,
+ 115,0,0,1034,1035,5,101,0,0,1035,1036,5,99,0,0,1036,1037,5,104,0,0,1037,
+ 1038,5,40,0,0,1038,248,1,0,0,0,1039,1040,5,97,0,0,1040,1041,5,114,0,0,
+ 1041,1042,5,115,0,0,1042,1043,5,101,0,0,1043,1044,5,99,0,0,1044,1045,5,
+ 104,0,0,1045,1046,5,40,0,0,1046,250,1,0,0,0,1047,1048,5,97,0,0,1048,1049,
+ 5,114,0,0,1049,1050,5,115,0,0,1050,1051,5,99,0,0,1051,1052,5,104,0,0,1052,
+ 1053,5,40,0,0,1053,252,1,0,0,0,1054,1055,5,97,0,0,1055,1056,5,114,0,0,
+ 1056,1057,5,99,0,0,1057,1058,5,115,0,0,1058,1059,5,101,0,0,1059,1060,5,
+ 99,0,0,1060,1061,5,104,0,0,1061,1062,5,40,0,0,1062,254,1,0,0,0,1063,1064,
+ 5,97,0,0,1064,1065,5,99,0,0,1065,1066,5,111,0,0,1066,1067,5,115,0,0,1067,
+ 1068,5,101,0,0,1068,1069,5,99,0,0,1069,1070,5,104,0,0,1070,1071,5,40,0,
+ 0,1071,256,1,0,0,0,1072,1073,5,97,0,0,1073,1074,5,114,0,0,1074,1075,5,
+ 99,0,0,1075,1076,5,111,0,0,1076,1077,5,115,0,0,1077,1078,5,101,0,0,1078,
+ 1079,5,99,0,0,1079,1080,5,104,0,0,1080,1081,5,40,0,0,1081,258,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,
+ 115,0,0,1086,1087,5,99,0,0,1087,1088,5,104,0,0,1088,1089,5,40,0,0,1089,
+ 260,1,0,0,0,1090,1091,5,97,0,0,1091,1092,5,114,0,0,1092,1093,5,99,0,0,
+ 1093,1094,5,99,0,0,1094,1095,5,111,0,0,1095,1096,5,115,0,0,1096,1097,5,
+ 101,0,0,1097,1098,5,99,0,0,1098,1099,5,104,0,0,1099,1100,5,40,0,0,1100,
+ 262,1,0,0,0,1101,1102,5,97,0,0,1102,1103,5,99,0,0,1103,1104,5,115,0,0,
+ 1104,1105,5,99,0,0,1105,1106,5,104,0,0,1106,1107,5,40,0,0,1107,264,1,0,
+ 0,0,1108,1109,5,102,0,0,1109,1110,5,97,0,0,1110,1111,5,99,0,0,1111,1112,
+ 5,116,0,0,1112,1113,5,111,0,0,1113,1114,5,114,0,0,1114,1115,5,105,0,0,
+ 1115,1116,5,97,0,0,1116,1117,5,108,0,0,1117,1118,5,40,0,0,1118,266,1,0,
+ 0,0,1119,1120,5,103,0,0,1120,1121,5,97,0,0,1121,1122,5,109,0,0,1122,1123,
+ 5,109,0,0,1123,1124,5,97,0,0,1124,1125,5,40,0,0,1125,268,1,0,0,0,1126,
+ 1127,5,100,0,0,1127,1128,5,101,0,0,1128,1129,5,114,0,0,1129,1130,5,105,
+ 0,0,1130,1131,5,118,0,0,1131,1132,5,97,0,0,1132,1133,5,116,0,0,1133,1134,
+ 5,105,0,0,1134,1135,5,118,0,0,1135,1136,5,101,0,0,1136,1137,5,40,0,0,1137,
+ 270,1,0,0,0,1138,1139,5,105,0,0,1139,1140,5,110,0,0,1140,1141,5,116,0,
+ 0,1141,1142,5,101,0,0,1142,1143,5,103,0,0,1143,1144,5,114,0,0,1144,1145,
+ 5,97,0,0,1145,1146,5,108,0,0,1146,1147,5,40,0,0,1147,272,1,0,0,0,1148,
+ 1149,5,108,0,0,1149,1150,5,105,0,0,1150,1151,5,109,0,0,1151,1152,5,105,
+ 0,0,1152,1153,5,116,0,0,1153,1154,5,40,0,0,1154,274,1,0,0,0,1155,1156,
+ 5,108,0,0,1156,1157,5,105,0,0,1157,1158,5,109,0,0,1158,1159,5,105,0,0,
+ 1159,1160,5,116,0,0,1160,1161,5,108,0,0,1161,1162,5,101,0,0,1162,1163,
+ 5,102,0,0,1163,1164,5,116,0,0,1164,1165,5,40,0,0,1165,276,1,0,0,0,1166,
+ 1167,5,108,0,0,1167,1168,5,105,0,0,1168,1169,5,109,0,0,1169,1170,5,105,
+ 0,0,1170,1171,5,116,0,0,1171,1172,5,114,0,0,1172,1173,5,105,0,0,1173,1174,
+ 5,103,0,0,1174,1175,5,104,0,0,1175,1176,5,116,0,0,1176,1177,5,40,0,0,1177,
+ 278,1,0,0,0,1178,1179,5,115,0,0,1179,1180,5,117,0,0,1180,1181,5,109,0,
+ 0,1181,1182,5,40,0,0,1182,280,1,0,0,0,1183,1184,5,112,0,0,1184,1185,5,
+ 114,0,0,1185,1186,5,111,0,0,1186,1187,5,100,0,0,1187,1188,5,117,0,0,1188,
+ 1189,5,99,0,0,1189,1190,5,116,0,0,1190,1191,5,40,0,0,1191,282,1,0,0,0,
+ 1192,1193,5,115,0,0,1193,1194,5,105,0,0,1194,1195,5,103,0,0,1195,1196,
+ 5,110,0,0,1196,1197,5,117,0,0,1197,1198,5,109,0,0,1198,1199,5,40,0,0,1199,
+ 284,1,0,0,0,1200,1201,5,115,0,0,1201,1202,5,103,0,0,1202,1203,5,110,0,
+ 0,1203,1204,5,40,0,0,1204,286,1,0,0,0,1205,1206,5,115,0,0,1206,1207,5,
+ 105,0,0,1207,1208,5,103,0,0,1208,1209,5,110,0,0,1209,1210,5,40,0,0,1210,
+ 288,1,0,0,0,1211,1212,5,97,0,0,1212,1213,5,98,0,0,1213,1214,5,115,0,0,
+ 1214,1215,5,40,0,0,1215,290,1,0,0,0,1216,1217,5,112,0,0,1217,1218,5,104,
+ 0,0,1218,1219,5,105,0,0,1219,1220,5,40,0,0,1220,292,1,0,0,0,1221,1222,
+ 5,112,0,0,1222,1223,5,114,0,0,1223,1224,5,105,0,0,1224,1225,5,109,0,0,
+ 1225,1226,5,101,0,0,1226,1227,5,40,0,0,1227,294,1,0,0,0,1228,1229,5,118,
+ 0,0,1229,1230,5,97,0,0,1230,1231,5,108,0,0,1231,1232,5,117,0,0,1232,1233,
+ 5,97,0,0,1233,1234,5,116,0,0,1234,1235,5,105,0,0,1235,1236,5,111,0,0,1236,
+ 1237,5,110,0,0,1237,1238,5,40,0,0,1238,296,1,0,0,0,1239,1240,5,99,0,0,
+ 1240,1241,5,97,0,0,1241,1242,5,114,0,0,1242,1243,5,100,0,0,1243,1244,5,
+ 40,0,0,1244,298,1,0,0,0,1245,1246,5,112,0,0,1246,1247,5,111,0,0,1247,1248,
+ 5,119,0,0,1248,1249,5,101,0,0,1249,1250,5,114,0,0,1250,1251,5,115,0,0,
+ 1251,1252,5,101,0,0,1252,1253,5,116,0,0,1253,1254,5,40,0,0,1254,300,1,
+ 0,0,0,1255,1256,5,117,0,0,1256,1257,5,110,0,0,1257,1258,5,105,0,0,1258,
+ 1259,5,111,0,0,1259,1260,5,110,0,0,1260,1261,5,40,0,0,1261,302,1,0,0,0,
+ 1262,1263,5,105,0,0,1263,1264,5,110,0,0,1264,1265,5,116,0,0,1265,1266,
+ 5,101,0,0,1266,1267,5,114,0,0,1267,1268,5,115,0,0,1268,1269,5,101,0,0,
+ 1269,1270,5,99,0,0,1270,1271,5,116,0,0,1271,1272,5,105,0,0,1272,1273,5,
+ 111,0,0,1273,1274,5,110,0,0,1274,1275,5,40,0,0,1275,304,1,0,0,0,1276,1277,
+ 5,99,0,0,1277,1278,5,111,0,0,1278,1279,5,109,0,0,1279,1280,5,112,0,0,1280,
+ 1281,5,108,0,0,1281,1282,5,101,0,0,1282,1283,5,109,0,0,1283,1284,5,101,
+ 0,0,1284,1285,5,110,0,0,1285,1286,5,116,0,0,1286,1287,5,40,0,0,1287,306,
+ 1,0,0,0,1288,1289,5,105,0,0,1289,1290,5,109,0,0,1290,1291,5,97,0,0,1291,
+ 1292,5,103,0,0,1292,1293,5,101,0,0,1293,1294,5,40,0,0,1294,308,1,0,0,0,
+ 1295,1296,5,112,0,0,1296,1297,5,114,0,0,1297,1298,5,101,0,0,1298,1299,
+ 5,105,0,0,1299,1300,5,109,0,0,1300,1301,5,97,0,0,1301,1302,5,103,0,0,1302,
+ 1303,5,101,0,0,1303,1304,5,40,0,0,1304,310,1,0,0,0,1305,1306,5,102,0,0,
+ 1306,1307,5,108,0,0,1307,1308,5,111,0,0,1308,1309,5,111,0,0,1309,1310,
+ 5,114,0,0,1310,1311,5,40,0,0,1311,312,1,0,0,0,1312,1313,5,99,0,0,1313,
+ 1314,5,101,0,0,1314,1315,5,105,0,0,1315,1316,5,108,0,0,1316,1317,5,40,
+ 0,0,1317,314,1,0,0,0,1318,1319,5,99,0,0,1319,1320,5,101,0,0,1320,1321,
+ 5,105,0,0,1321,1322,5,108,0,0,1322,1323,5,105,0,0,1323,1324,5,110,0,0,
+ 1324,1325,5,103,0,0,1325,1326,5,40,0,0,1326,316,1,0,0,0,1327,1328,5,114,
+ 0,0,1328,1329,5,111,0,0,1329,1330,5,117,0,0,1330,1331,5,110,0,0,1331,1332,
+ 5,100,0,0,1332,1333,5,40,0,0,1333,318,1,0,0,0,1334,1335,5,109,0,0,1335,
+ 1336,5,105,0,0,1336,1337,5,110,0,0,1337,1338,5,40,0,0,1338,320,1,0,0,0,
+ 1339,1340,5,109,0,0,1340,1341,5,97,0,0,1341,1342,5,120,0,0,1342,1343,5,
+ 40,0,0,1343,322,1,0,0,0,1344,1345,5,97,0,0,1345,1346,5,114,0,0,1346,1347,
+ 5,103,0,0,1347,1348,5,109,0,0,1348,1349,5,97,0,0,1349,1350,5,120,0,0,1350,
+ 1351,5,40,0,0,1351,324,1,0,0,0,1352,1353,5,97,0,0,1353,1354,5,114,0,0,
+ 1354,1355,5,103,0,0,1355,1356,5,109,0,0,1356,1357,5,105,0,0,1357,1358,
+ 5,110,0,0,1358,1359,5,40,0,0,1359,326,1,0,0,0,1360,1361,5,103,0,0,1361,
+ 1362,5,99,0,0,1362,1363,5,100,0,0,1363,1364,5,40,0,0,1364,328,1,0,0,0,
+ 1365,1366,5,108,0,0,1366,1367,5,99,0,0,1367,1368,5,109,0,0,1368,1369,5,
+ 40,0,0,1369,330,1,0,0,0,1370,1371,5,98,0,0,1371,1372,5,105,0,0,1372,1373,
+ 5,110,0,0,1373,1374,5,111,0,0,1374,1375,5,109,0,0,1375,1376,5,105,0,0,
+ 1376,1377,5,97,0,0,1377,1378,5,108,0,0,1378,1379,5,40,0,0,1379,332,1,0,
+ 0,0,1380,1381,5,105,0,0,1381,1382,5,118,0,0,1382,1383,5,101,0,0,1383,1384,
+ 5,114,0,0,1384,1385,5,115,0,0,1385,1386,5,111,0,0,1386,1387,5,110,0,0,
+ 1387,1388,5,40,0,0,1388,334,1,0,0,0,1389,1390,5,97,0,0,1390,1391,5,108,
+ 0,0,1391,1392,5,101,0,0,1392,1393,5,112,0,0,1393,1394,5,104,0,0,1394,1395,
+ 5,40,0,0,1395,336,1,0,0,0,1396,1397,5,101,0,0,1397,1398,5,114,0,0,1398,
+ 1399,5,102,0,0,1399,1400,5,40,0,0,1400,338,1,0,0,0,1401,1402,5,101,0,0,
+ 1402,1403,5,114,0,0,1403,1404,5,102,0,0,1404,1405,5,99,0,0,1405,1406,5,
+ 40,0,0,1406,340,1,0,0,0,1407,1408,5,101,0,0,1408,1409,5,114,0,0,1409,1410,
+ 5,102,0,0,1410,1411,5,105,0,0,1411,1412,5,40,0,0,1412,342,1,0,0,0,1413,
+ 1414,5,69,0,0,1414,1415,5,105,0,0,1415,1416,5,40,0,0,1416,344,1,0,0,0,
+ 1417,1418,5,108,0,0,1418,1419,5,105,0,0,1419,1420,5,40,0,0,1420,346,1,
+ 0,0,0,1421,1422,5,112,0,0,1422,1423,5,111,0,0,1423,1424,5,108,0,0,1424,
+ 1425,5,121,0,0,1425,1426,5,103,0,0,1426,1427,5,97,0,0,1427,1428,5,109,
+ 0,0,1428,1429,5,109,0,0,1429,1430,5,97,0,0,1430,1431,5,40,0,0,1431,348,
+ 1,0,0,0,1432,1433,5,100,0,0,1433,1434,5,105,0,0,1434,1435,5,103,0,0,1435,
+ 1436,5,97,0,0,1436,1437,5,109,0,0,1437,1438,5,109,0,0,1438,1439,5,97,0,
+ 0,1439,1440,5,40,0,0,1440,350,1,0,0,0,1441,1442,5,83,0,0,1442,1443,5,105,
+ 0,0,1443,1444,5,40,0,0,1444,352,1,0,0,0,1445,1446,5,67,0,0,1446,1447,5,
+ 105,0,0,1447,1448,5,40,0,0,1448,354,1,0,0,0,1449,1450,5,83,0,0,1450,1451,
+ 5,104,0,0,1451,1452,5,105,0,0,1452,1453,5,40,0,0,1453,356,1,0,0,0,1454,
+ 1455,5,67,0,0,1455,1456,5,104,0,0,1456,1457,5,105,0,0,1457,1458,5,40,0,
+ 0,1458,358,1,0,0,0,1459,1460,5,116,0,0,1460,1461,5,114,0,0,1461,1462,5,
+ 117,0,0,1462,1463,5,110,0,0,1463,1464,5,99,0,0,1464,1465,5,40,0,0,1465,
+ 360,1,0,0,0,1466,1467,5,99,0,0,1467,1468,5,111,0,0,1468,1469,5,110,0,0,
+ 1469,1470,5,106,0,0,1470,1471,5,117,0,0,1471,1472,5,103,0,0,1472,1473,
+ 5,97,0,0,1473,1474,5,116,0,0,1474,1475,5,101,0,0,1475,1476,5,40,0,0,1476,
+ 362,1,0,0,0,1477,1478,5,100,0,0,1478,1479,5,111,0,0,1479,1480,5,109,0,
+ 0,1480,1481,5,97,0,0,1481,1482,5,105,0,0,1482,1483,5,110,0,0,1483,1484,
+ 5,40,0,0,1484,364,1,0,0,0,1485,1486,5,112,0,0,1486,1487,5,105,0,0,1487,
+ 1488,5,101,0,0,1488,1489,5,99,0,0,1489,1490,5,101,0,0,1490,1491,5,119,
+ 0,0,1491,1492,5,105,0,0,1492,1493,5,115,0,0,1493,1494,5,101,0,0,1494,1495,
+ 5,40,0,0,1495,366,1,0,0,0,1496,1497,5,97,0,0,1497,1498,5,112,0,0,1498,
+ 1499,5,112,0,0,1499,1500,5,108,0,0,1500,1501,5,121,0,0,1501,1502,5,40,
+ 0,0,1502,368,1,0,0,0,1503,1504,5,108,0,0,1504,1505,5,97,0,0,1505,1506,
+ 5,109,0,0,1506,1507,5,98,0,0,1507,1508,5,100,0,0,1508,1509,5,97,0,0,1509,
+ 1510,5,40,0,0,1510,370,1,0,0,0,1511,1513,5,13,0,0,1512,1511,1,0,0,0,1512,
+ 1513,1,0,0,0,1513,1514,1,0,0,0,1514,1516,5,10,0,0,1515,1512,1,0,0,0,1516,
+ 1517,1,0,0,0,1517,1515,1,0,0,0,1517,1518,1,0,0,0,1518,1519,1,0,0,0,1519,
+ 1520,6,185,0,0,1520,372,1,0,0,0,1521,1523,7,0,0,0,1522,1524,7,1,0,0,1523,
+ 1522,1,0,0,0,1523,1524,1,0,0,0,1524,1526,1,0,0,0,1525,1527,2,48,57,0,1526,
+ 1525,1,0,0,0,1527,1528,1,0,0,0,1528,1526,1,0,0,0,1528,1529,1,0,0,0,1529,
+ 374,1,0,0,0,1530,1532,2,48,57,0,1531,1530,1,0,0,0,1532,1533,1,0,0,0,1533,
+ 1531,1,0,0,0,1533,1534,1,0,0,0,1534,1535,1,0,0,0,1535,1539,5,46,0,0,1536,
+ 1538,2,48,57,0,1537,1536,1,0,0,0,1538,1541,1,0,0,0,1539,1537,1,0,0,0,1539,
+ 1540,1,0,0,0,1540,1543,1,0,0,0,1541,1539,1,0,0,0,1542,1544,3,373,186,0,
+ 1543,1542,1,0,0,0,1543,1544,1,0,0,0,1544,1546,1,0,0,0,1545,1547,5,105,
+ 0,0,1546,1545,1,0,0,0,1546,1547,1,0,0,0,1547,1564,1,0,0,0,1548,1550,5,
+ 46,0,0,1549,1548,1,0,0,0,1549,1550,1,0,0,0,1550,1552,1,0,0,0,1551,1553,
+ 2,48,57,0,1552,1551,1,0,0,0,1553,1554,1,0,0,0,1554,1552,1,0,0,0,1554,1555,
+ 1,0,0,0,1555,1557,1,0,0,0,1556,1558,3,373,186,0,1557,1556,1,0,0,0,1557,
+ 1558,1,0,0,0,1558,1560,1,0,0,0,1559,1561,5,105,0,0,1560,1559,1,0,0,0,1560,
+ 1561,1,0,0,0,1561,1564,1,0,0,0,1562,1564,5,105,0,0,1563,1531,1,0,0,0,1563,
+ 1549,1,0,0,0,1563,1562,1,0,0,0,1564,376,1,0,0,0,1565,1566,5,67,0,0,1566,
+ 1584,5,67,0,0,1567,1568,5,82,0,0,1568,1584,5,82,0,0,1569,1570,5,81,0,0,
+ 1570,1584,5,81,0,0,1571,1572,5,90,0,0,1572,1584,5,90,0,0,1573,1574,5,66,
+ 0,0,1574,1584,5,66,0,0,1575,1576,5,90,0,0,1576,1577,5,90,0,0,1577,1584,
+ 5,42,0,0,1578,1579,5,90,0,0,1579,1580,5,90,0,0,1580,1584,5,43,0,0,1581,
+ 1582,5,80,0,0,1582,1584,5,80,0,0,1583,1565,1,0,0,0,1583,1567,1,0,0,0,1583,
+ 1569,1,0,0,0,1583,1571,1,0,0,0,1583,1573,1,0,0,0,1583,1575,1,0,0,0,1583,
+ 1578,1,0,0,0,1583,1581,1,0,0,0,1584,378,1,0,0,0,1585,1586,5,116,0,0,1586,
+ 1587,5,114,0,0,1587,1588,5,117,0,0,1588,1604,5,101,0,0,1589,1590,5,84,
+ 0,0,1590,1591,5,114,0,0,1591,1592,5,117,0,0,1592,1604,5,101,0,0,1593,1594,
+ 5,102,0,0,1594,1595,5,97,0,0,1595,1596,5,108,0,0,1596,1597,5,115,0,0,1597,
+ 1604,5,101,0,0,1598,1599,5,70,0,0,1599,1600,5,97,0,0,1600,1601,5,108,0,
+ 0,1601,1602,5,115,0,0,1602,1604,5,101,0,0,1603,1585,1,0,0,0,1603,1589,
+ 1,0,0,0,1603,1593,1,0,0,0,1603,1598,1,0,0,0,1604,380,1,0,0,0,1605,1606,
+ 5,78,0,0,1606,1607,5,97,0,0,1607,1608,5,78,0,0,1608,382,1,0,0,0,1609,1611,
+ 7,2,0,0,1610,1609,1,0,0,0,1611,1612,1,0,0,0,1612,1610,1,0,0,0,1612,1613,
+ 1,0,0,0,1613,1620,1,0,0,0,1614,1616,5,95,0,0,1615,1617,7,3,0,0,1616,1615,
+ 1,0,0,0,1617,1618,1,0,0,0,1618,1616,1,0,0,0,1618,1619,1,0,0,0,1619,1621,
+ 1,0,0,0,1620,1614,1,0,0,0,1620,1621,1,0,0,0,1621,384,1,0,0,0,1622,1623,
+ 5,47,0,0,1623,1624,5,47,0,0,1624,1628,1,0,0,0,1625,1627,8,4,0,0,1626,1625,
+ 1,0,0,0,1627,1630,1,0,0,0,1628,1626,1,0,0,0,1628,1629,1,0,0,0,1629,1635,
+ 1,0,0,0,1630,1628,1,0,0,0,1631,1633,5,13,0,0,1632,1631,1,0,0,0,1632,1633,
+ 1,0,0,0,1633,1634,1,0,0,0,1634,1636,5,10,0,0,1635,1632,1,0,0,0,1635,1636,
+ 1,0,0,0,1636,1649,1,0,0,0,1637,1638,5,47,0,0,1638,1639,5,42,0,0,1639,1643,
+ 1,0,0,0,1640,1642,9,0,0,0,1641,1640,1,0,0,0,1642,1645,1,0,0,0,1643,1644,
+ 1,0,0,0,1643,1641,1,0,0,0,1644,1646,1,0,0,0,1645,1643,1,0,0,0,1646,1647,
+ 5,42,0,0,1647,1649,5,47,0,0,1648,1622,1,0,0,0,1648,1637,1,0,0,0,1649,1650,
+ 1,0,0,0,1650,1651,6,192,0,0,1651,386,1,0,0,0,1652,1654,7,5,0,0,1653,1652,
+ 1,0,0,0,1654,1655,1,0,0,0,1655,1653,1,0,0,0,1655,1656,1,0,0,0,1656,1657,
+ 1,0,0,0,1657,1658,6,193,0,0,1658,388,1,0,0,0,25,0,1512,1517,1523,1528,
+ 1533,1539,1543,1546,1549,1554,1557,1560,1563,1583,1603,1612,1618,1620,
+ 1628,1632,1635,1643,1648,1655,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 638811944..6aa897bc4 100644
--- a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.interp
+++ b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.interp
@@ -173,6 +173,8 @@ null
'erfi('
'Ei('
'li('
+'polygamma('
+'digamma('
'Si('
'Ci('
'Shi('
@@ -377,6 +379,8 @@ null
null
null
null
+null
+null
NEWLINE
NUMBER
SPECIALSET
@@ -570,6 +574,8 @@ T__179
T__180
T__181
T__182
+T__183
+T__184
NEWLINE
EXPONENT
NUMBER
@@ -588,4 +594,4 @@ mode names:
DEFAULT_MODE
atn:
-[4, 0, 191, 1635, 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, 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, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 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, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 3, 183, 1489, 8, 183, 1, 183, 4, 183, 1492, 8, 183, 11, 183, 12, 183, 1493, 1, 183, 1, 183, 1, 184, 1, 184, 3, 184, 1500, 8, 184, 1, 184, 4, 184, 1503, 8, 184, 11, 184, 12, 184, 1504, 1, 185, 4, 185, 1508, 8, 185, 11, 185, 12, 185, 1509, 1, 185, 1, 185, 5, 185, 1514, 8, 185, 10, 185, 12, 185, 1517, 9, 185, 1, 185, 3, 185, 1520, 8, 185, 1, 185, 3, 185, 1523, 8, 185, 1, 185, 3, 185, 1526, 8, 185, 1, 185, 4, 185, 1529, 8, 185, 11, 185, 12, 185, 1530, 1, 185, 3, 185, 1534, 8, 185, 1, 185, 3, 185, 1537, 8, 185, 1, 185, 3, 185, 1540, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 1560, 8, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 1580, 8, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 4, 189, 1587, 8, 189, 11, 189, 12, 189, 1588, 1, 189, 1, 189, 4, 189, 1593, 8, 189, 11, 189, 12, 189, 1594, 3, 189, 1597, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 5, 190, 1603, 8, 190, 10, 190, 12, 190, 1606, 9, 190, 1, 190, 3, 190, 1609, 8, 190, 1, 190, 3, 190, 1612, 8, 190, 1, 190, 1, 190, 1, 190, 1, 190, 5, 190, 1618, 8, 190, 10, 190, 12, 190, 1621, 9, 190, 1, 190, 1, 190, 3, 190, 1625, 8, 190, 1, 190, 1, 190, 1, 191, 4, 191, 1630, 8, 191, 11, 191, 12, 191, 1631, 1, 191, 1, 191, 1, 1619, 0, 192, 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, 0, 371, 185, 373, 186, 375, 187, 377, 188, 379, 189, 381, 190, 383, 191, 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, 1666, 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, 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, 1, 385, 1, 0, 0, 0, 3, 387, 1, 0, 0, 0, 5, 389, 1, 0, 0, 0, 7, 391, 1, 0, 0, 0, 9, 393, 1, 0, 0, 0, 11, 395, 1, 0, 0, 0, 13, 399, 1, 0, 0, 0, 15, 401, 1, 0, 0, 0, 17, 403, 1, 0, 0, 0, 19, 407, 1, 0, 0, 0, 21, 417, 1, 0, 0, 0, 23, 420, 1, 0, 0, 0, 25, 426, 1, 0, 0, 0, 27, 429, 1, 0, 0, 0, 29, 441, 1, 0, 0, 0, 31, 443, 1, 0, 0, 0, 33, 446, 1, 0, 0, 0, 35, 453, 1, 0, 0, 0, 37, 455, 1, 0, 0, 0, 39, 464, 1, 0, 0, 0, 41, 466, 1, 0, 0, 0, 43, 474, 1, 0, 0, 0, 45, 476, 1, 0, 0, 0, 47, 479, 1, 0, 0, 0, 49, 482, 1, 0, 0, 0, 51, 484, 1, 0, 0, 0, 53, 486, 1, 0, 0, 0, 55, 488, 1, 0, 0, 0, 57, 491, 1, 0, 0, 0, 59, 493, 1, 0, 0, 0, 61, 495, 1, 0, 0, 0, 63, 497, 1, 0, 0, 0, 65, 501, 1, 0, 0, 0, 67, 505, 1, 0, 0, 0, 69, 507, 1, 0, 0, 0, 71, 511, 1, 0, 0, 0, 73, 514, 1, 0, 0, 0, 75, 522, 1, 0, 0, 0, 77, 525, 1, 0, 0, 0, 79, 534, 1, 0, 0, 0, 81, 537, 1, 0, 0, 0, 83, 539, 1, 0, 0, 0, 85, 546, 1, 0, 0, 0, 87, 548, 1, 0, 0, 0, 89, 556, 1, 0, 0, 0, 91, 559, 1, 0, 0, 0, 93, 566, 1, 0, 0, 0, 95, 568, 1, 0, 0, 0, 97, 570, 1, 0, 0, 0, 99, 572, 1, 0, 0, 0, 101, 576, 1, 0, 0, 0, 103, 580, 1, 0, 0, 0, 105, 583, 1, 0, 0, 0, 107, 586, 1, 0, 0, 0, 109, 588, 1, 0, 0, 0, 111, 590, 1, 0, 0, 0, 113, 593, 1, 0, 0, 0, 115, 595, 1, 0, 0, 0, 117, 597, 1, 0, 0, 0, 119, 599, 1, 0, 0, 0, 121, 604, 1, 0, 0, 0, 123, 611, 1, 0, 0, 0, 125, 617, 1, 0, 0, 0, 127, 622, 1, 0, 0, 0, 129, 628, 1, 0, 0, 0, 131, 634, 1, 0, 0, 0, 133, 639, 1, 0, 0, 0, 135, 643, 1, 0, 0, 0, 137, 648, 1, 0, 0, 0, 139, 653, 1, 0, 0, 0, 141, 658, 1, 0, 0, 0, 143, 663, 1, 0, 0, 0, 145, 670, 1, 0, 0, 0, 147, 675, 1, 0, 0, 0, 149, 680, 1, 0, 0, 0, 151, 687, 1, 0, 0, 0, 153, 692, 1, 0, 0, 0, 155, 700, 1, 0, 0, 0, 157, 708, 1, 0, 0, 0, 159, 716, 1, 0, 0, 0, 161, 726, 1, 0, 0, 0, 163, 734, 1, 0, 0, 0, 165, 744, 1, 0, 0, 0, 167, 752, 1, 0, 0, 0, 169, 758, 1, 0, 0, 0, 171, 764, 1, 0, 0, 0, 173, 770, 1, 0, 0, 0, 175, 776, 1, 0, 0, 0, 177, 784, 1, 0, 0, 0, 179, 790, 1, 0, 0, 0, 181, 798, 1, 0, 0, 0, 183, 804, 1, 0, 0, 0, 185, 812, 1, 0, 0, 0, 187, 818, 1, 0, 0, 0, 189, 822, 1, 0, 0, 0, 191, 828, 1, 0, 0, 0, 193, 832, 1, 0, 0, 0, 195, 838, 1, 0, 0, 0, 197, 842, 1, 0, 0, 0, 199, 850, 1, 0, 0, 0, 201, 856, 1, 0, 0, 0, 203, 861, 1, 0, 0, 0, 205, 867, 1, 0, 0, 0, 207, 872, 1, 0, 0, 0, 209, 880, 1, 0, 0, 0, 211, 886, 1, 0, 0, 0, 213, 893, 1, 0, 0, 0, 215, 901, 1, 0, 0, 0, 217, 907, 1, 0, 0, 0, 219, 916, 1, 0, 0, 0, 221, 923, 1, 0, 0, 0, 223, 931, 1, 0, 0, 0, 225, 937, 1, 0, 0, 0, 227, 946, 1, 0, 0, 0, 229, 953, 1, 0, 0, 0, 231, 961, 1, 0, 0, 0, 233, 967, 1, 0, 0, 0, 235, 976, 1, 0, 0, 0, 237, 983, 1, 0, 0, 0, 239, 991, 1, 0, 0, 0, 241, 1000, 1, 0, 0, 0, 243, 1010, 1, 0, 0, 0, 245, 1017, 1, 0, 0, 0, 247, 1028, 1, 0, 0, 0, 249, 1035, 1, 0, 0, 0, 251, 1043, 1, 0, 0, 0, 253, 1050, 1, 0, 0, 0, 255, 1059, 1, 0, 0, 0, 257, 1068, 1, 0, 0, 0, 259, 1078, 1, 0, 0, 0, 261, 1086, 1, 0, 0, 0, 263, 1097, 1, 0, 0, 0, 265, 1104, 1, 0, 0, 0, 267, 1115, 1, 0, 0, 0, 269, 1122, 1, 0, 0, 0, 271, 1134, 1, 0, 0, 0, 273, 1144, 1, 0, 0, 0, 275, 1151, 1, 0, 0, 0, 277, 1162, 1, 0, 0, 0, 279, 1174, 1, 0, 0, 0, 281, 1179, 1, 0, 0, 0, 283, 1188, 1, 0, 0, 0, 285, 1196, 1, 0, 0, 0, 287, 1201, 1, 0, 0, 0, 289, 1207, 1, 0, 0, 0, 291, 1212, 1, 0, 0, 0, 293, 1217, 1, 0, 0, 0, 295, 1224, 1, 0, 0, 0, 297, 1235, 1, 0, 0, 0, 299, 1241, 1, 0, 0, 0, 301, 1251, 1, 0, 0, 0, 303, 1258, 1, 0, 0, 0, 305, 1272, 1, 0, 0, 0, 307, 1284, 1, 0, 0, 0, 309, 1291, 1, 0, 0, 0, 311, 1301, 1, 0, 0, 0, 313, 1308, 1, 0, 0, 0, 315, 1314, 1, 0, 0, 0, 317, 1323, 1, 0, 0, 0, 319, 1330, 1, 0, 0, 0, 321, 1335, 1, 0, 0, 0, 323, 1340, 1, 0, 0, 0, 325, 1348, 1, 0, 0, 0, 327, 1356, 1, 0, 0, 0, 329, 1361, 1, 0, 0, 0, 331, 1366, 1, 0, 0, 0, 333, 1376, 1, 0, 0, 0, 335, 1385, 1, 0, 0, 0, 337, 1392, 1, 0, 0, 0, 339, 1397, 1, 0, 0, 0, 341, 1403, 1, 0, 0, 0, 343, 1409, 1, 0, 0, 0, 345, 1413, 1, 0, 0, 0, 347, 1417, 1, 0, 0, 0, 349, 1421, 1, 0, 0, 0, 351, 1425, 1, 0, 0, 0, 353, 1430, 1, 0, 0, 0, 355, 1435, 1, 0, 0, 0, 357, 1442, 1, 0, 0, 0, 359, 1453, 1, 0, 0, 0, 361, 1461, 1, 0, 0, 0, 363, 1472, 1, 0, 0, 0, 365, 1479, 1, 0, 0, 0, 367, 1491, 1, 0, 0, 0, 369, 1497, 1, 0, 0, 0, 371, 1539, 1, 0, 0, 0, 373, 1559, 1, 0, 0, 0, 375, 1579, 1, 0, 0, 0, 377, 1581, 1, 0, 0, 0, 379, 1586, 1, 0, 0, 0, 381, 1624, 1, 0, 0, 0, 383, 1629, 1, 0, 0, 0, 385, 386, 5, 33, 0, 0, 386, 2, 1, 0, 0, 0, 387, 388, 5, 94, 0, 0, 388, 4, 1, 0, 0, 0, 389, 390, 5, 45, 0, 0, 390, 6, 1, 0, 0, 0, 391, 392, 5, 43, 0, 0, 392, 8, 1, 0, 0, 0, 393, 394, 5, 42, 0, 0, 394, 10, 1, 0, 0, 0, 395, 396, 5, 46, 0, 0, 396, 397, 5, 46, 0, 0, 397, 398, 5, 46, 0, 0, 398, 12, 1, 0, 0, 0, 399, 400, 5, 8230, 0, 0, 400, 14, 1, 0, 0, 0, 401, 402, 5, 47, 0, 0, 402, 16, 1, 0, 0, 0, 403, 404, 5, 109, 0, 0, 404, 405, 5, 111, 0, 0, 405, 406, 5, 100, 0, 0, 406, 18, 1, 0, 0, 0, 407, 408, 5, 105, 0, 0, 408, 409, 5, 110, 0, 0, 409, 410, 5, 116, 0, 0, 410, 411, 5, 101, 0, 0, 411, 412, 5, 114, 0, 0, 412, 413, 5, 115, 0, 0, 413, 414, 5, 101, 0, 0, 414, 415, 5, 99, 0, 0, 415, 416, 5, 116, 0, 0, 416, 20, 1, 0, 0, 0, 417, 418, 5, 47, 0, 0, 418, 419, 5, 92, 0, 0, 419, 22, 1, 0, 0, 0, 420, 421, 5, 117, 0, 0, 421, 422, 5, 110, 0, 0, 422, 423, 5, 105, 0, 0, 423, 424, 5, 116, 0, 0, 424, 425, 5, 101, 0, 0, 425, 24, 1, 0, 0, 0, 426, 427, 5, 92, 0, 0, 427, 428, 5, 47, 0, 0, 428, 26, 1, 0, 0, 0, 429, 430, 5, 115, 0, 0, 430, 431, 5, 101, 0, 0, 431, 432, 5, 116, 0, 0, 432, 433, 5, 115, 0, 0, 433, 434, 5, 117, 0, 0, 434, 435, 5, 98, 0, 0, 435, 436, 5, 116, 0, 0, 436, 437, 5, 114, 0, 0, 437, 438, 5, 97, 0, 0, 438, 439, 5, 99, 0, 0, 439, 440, 5, 116, 0, 0, 440, 28, 1, 0, 0, 0, 441, 442, 5, 92, 0, 0, 442, 30, 1, 0, 0, 0, 443, 444, 5, 105, 0, 0, 444, 445, 5, 110, 0, 0, 445, 32, 1, 0, 0, 0, 446, 447, 5, 115, 0, 0, 447, 448, 5, 117, 0, 0, 448, 449, 5, 98, 0, 0, 449, 450, 5, 115, 0, 0, 450, 451, 5, 101, 0, 0, 451, 452, 5, 116, 0, 0, 452, 34, 1, 0, 0, 0, 453, 454, 5, 8838, 0, 0, 454, 36, 1, 0, 0, 0, 455, 456, 5, 115, 0, 0, 456, 457, 5, 117, 0, 0, 457, 458, 5, 112, 0, 0, 458, 459, 5, 101, 0, 0, 459, 460, 5, 114, 0, 0, 460, 461, 5, 115, 0, 0, 461, 462, 5, 101, 0, 0, 462, 463, 5, 116, 0, 0, 463, 38, 1, 0, 0, 0, 464, 465, 5, 8839, 0, 0, 465, 40, 1, 0, 0, 0, 466, 467, 5, 100, 0, 0, 467, 468, 5, 105, 0, 0, 468, 469, 5, 118, 0, 0, 469, 470, 5, 105, 0, 0, 470, 471, 5, 100, 0, 0, 471, 472, 5, 101, 0, 0, 472, 473, 5, 115, 0, 0, 473, 42, 1, 0, 0, 0, 474, 475, 5, 124, 0, 0, 475, 44, 1, 0, 0, 0, 476, 477, 5, 62, 0, 0, 477, 478, 5, 61, 0, 0, 478, 46, 1, 0, 0, 0, 479, 480, 5, 60, 0, 0, 480, 481, 5, 61, 0, 0, 481, 48, 1, 0, 0, 0, 482, 483, 5, 62, 0, 0, 483, 50, 1, 0, 0, 0, 484, 485, 5, 60, 0, 0, 485, 52, 1, 0, 0, 0, 486, 487, 5, 61, 0, 0, 487, 54, 1, 0, 0, 0, 488, 489, 5, 60, 0, 0, 489, 490, 5, 62, 0, 0, 490, 56, 1, 0, 0, 0, 491, 492, 5, 8801, 0, 0, 492, 58, 1, 0, 0, 0, 493, 494, 5, 40, 0, 0, 494, 60, 1, 0, 0, 0, 495, 496, 5, 41, 0, 0, 496, 62, 1, 0, 0, 0, 497, 498, 5, 110, 0, 0, 498, 499, 5, 111, 0, 0, 499, 500, 5, 116, 0, 0, 500, 64, 1, 0, 0, 0, 501, 502, 5, 97, 0, 0, 502, 503, 5, 110, 0, 0, 503, 504, 5, 100, 0, 0, 504, 66, 1, 0, 0, 0, 505, 506, 5, 38, 0, 0, 506, 68, 1, 0, 0, 0, 507, 508, 5, 120, 0, 0, 508, 509, 5, 111, 0, 0, 509, 510, 5, 114, 0, 0, 510, 70, 1, 0, 0, 0, 511, 512, 5, 111, 0, 0, 512, 513, 5, 114, 0, 0, 513, 72, 1, 0, 0, 0, 514, 515, 5, 105, 0, 0, 515, 516, 5, 109, 0, 0, 516, 517, 5, 112, 0, 0, 517, 518, 5, 108, 0, 0, 518, 519, 5, 105, 0, 0, 519, 520, 5, 101, 0, 0, 520, 521, 5, 115, 0, 0, 521, 74, 1, 0, 0, 0, 522, 523, 5, 45, 0, 0, 523, 524, 5, 62, 0, 0, 524, 76, 1, 0, 0, 0, 525, 526, 5, 112, 0, 0, 526, 527, 5, 114, 0, 0, 527, 528, 5, 111, 0, 0, 528, 529, 5, 118, 0, 0, 529, 530, 5, 105, 0, 0, 530, 531, 5, 100, 0, 0, 531, 532, 5, 101, 0, 0, 532, 533, 5, 100, 0, 0, 533, 78, 1, 0, 0, 0, 534, 535, 5, 61, 0, 0, 535, 536, 5, 62, 0, 0, 536, 80, 1, 0, 0, 0, 537, 538, 5, 58, 0, 0, 538, 82, 1, 0, 0, 0, 539, 540, 5, 102, 0, 0, 540, 541, 5, 111, 0, 0, 541, 542, 5, 114, 0, 0, 542, 543, 5, 97, 0, 0, 543, 544, 5, 108, 0, 0, 544, 545, 5, 108, 0, 0, 545, 84, 1, 0, 0, 0, 546, 547, 5, 8704, 0, 0, 547, 86, 1, 0, 0, 0, 548, 549, 5, 101, 0, 0, 549, 550, 5, 120, 0, 0, 550, 551, 5, 105, 0, 0, 551, 552, 5, 115, 0, 0, 552, 553, 5, 116, 0, 0, 553, 554, 5, 115, 0, 0, 554, 555, 5, 33, 0, 0, 555, 88, 1, 0, 0, 0, 556, 557, 5, 8707, 0, 0, 557, 558, 5, 33, 0, 0, 558, 90, 1, 0, 0, 0, 559, 560, 5, 101, 0, 0, 560, 561, 5, 120, 0, 0, 561, 562, 5, 105, 0, 0, 562, 563, 5, 115, 0, 0, 563, 564, 5, 116, 0, 0, 564, 565, 5, 115, 0, 0, 565, 92, 1, 0, 0, 0, 566, 567, 5, 8707, 0, 0, 567, 94, 1, 0, 0, 0, 568, 569, 5, 44, 0, 0, 569, 96, 1, 0, 0, 0, 570, 571, 5, 59, 0, 0, 571, 98, 1, 0, 0, 0, 572, 573, 5, 43, 0, 0, 573, 574, 5, 111, 0, 0, 574, 575, 5, 111, 0, 0, 575, 100, 1, 0, 0, 0, 576, 577, 5, 45, 0, 0, 577, 578, 5, 111, 0, 0, 578, 579, 5, 111, 0, 0, 579, 102, 1, 0, 0, 0, 580, 581, 5, 40, 0, 0, 581, 582, 5, 124, 0, 0, 582, 104, 1, 0, 0, 0, 583, 584, 5, 124, 0, 0, 584, 585, 5, 41, 0, 0, 585, 106, 1, 0, 0, 0, 586, 587, 5, 35, 0, 0, 587, 108, 1, 0, 0, 0, 588, 589, 5, 91, 0, 0, 589, 110, 1, 0, 0, 0, 590, 591, 5, 93, 0, 0, 591, 592, 5, 84, 0, 0, 592, 112, 1, 0, 0, 0, 593, 594, 5, 93, 0, 0, 594, 114, 1, 0, 0, 0, 595, 596, 5, 123, 0, 0, 596, 116, 1, 0, 0, 0, 597, 598, 5, 125, 0, 0, 598, 118, 1, 0, 0, 0, 599, 600, 5, 108, 0, 0, 600, 601, 5, 111, 0, 0, 601, 602, 5, 103, 0, 0, 602, 603, 5, 40, 0, 0, 603, 120, 1, 0, 0, 0, 604, 605, 5, 108, 0, 0, 605, 606, 5, 111, 0, 0, 606, 607, 5, 103, 0, 0, 607, 608, 5, 49, 0, 0, 608, 609, 5, 48, 0, 0, 609, 610, 5, 40, 0, 0, 610, 122, 1, 0, 0, 0, 611, 612, 5, 108, 0, 0, 612, 613, 5, 111, 0, 0, 613, 614, 5, 103, 0, 0, 614, 615, 5, 50, 0, 0, 615, 616, 5, 40, 0, 0, 616, 124, 1, 0, 0, 0, 617, 618, 5, 112, 0, 0, 618, 619, 5, 111, 0, 0, 619, 620, 5, 119, 0, 0, 620, 621, 5, 40, 0, 0, 621, 126, 1, 0, 0, 0, 622, 623, 5, 115, 0, 0, 623, 624, 5, 113, 0, 0, 624, 625, 5, 114, 0, 0, 625, 626, 5, 116, 0, 0, 626, 627, 5, 40, 0, 0, 627, 128, 1, 0, 0, 0, 628, 629, 5, 99, 0, 0, 629, 630, 5, 98, 0, 0, 630, 631, 5, 114, 0, 0, 631, 632, 5, 116, 0, 0, 632, 633, 5, 40, 0, 0, 633, 130, 1, 0, 0, 0, 634, 635, 5, 115, 0, 0, 635, 636, 5, 113, 0, 0, 636, 637, 5, 114, 0, 0, 637, 638, 5, 40, 0, 0, 638, 132, 1, 0, 0, 0, 639, 640, 5, 108, 0, 0, 640, 641, 5, 110, 0, 0, 641, 642, 5, 40, 0, 0, 642, 134, 1, 0, 0, 0, 643, 644, 5, 101, 0, 0, 644, 645, 5, 120, 0, 0, 645, 646, 5, 112, 0, 0, 646, 647, 5, 40, 0, 0, 647, 136, 1, 0, 0, 0, 648, 649, 5, 115, 0, 0, 649, 650, 5, 105, 0, 0, 650, 651, 5, 110, 0, 0, 651, 652, 5, 40, 0, 0, 652, 138, 1, 0, 0, 0, 653, 654, 5, 99, 0, 0, 654, 655, 5, 111, 0, 0, 655, 656, 5, 115, 0, 0, 656, 657, 5, 40, 0, 0, 657, 140, 1, 0, 0, 0, 658, 659, 5, 116, 0, 0, 659, 660, 5, 97, 0, 0, 660, 661, 5, 110, 0, 0, 661, 662, 5, 40, 0, 0, 662, 142, 1, 0, 0, 0, 663, 664, 5, 99, 0, 0, 664, 665, 5, 111, 0, 0, 665, 666, 5, 116, 0, 0, 666, 667, 5, 97, 0, 0, 667, 668, 5, 110, 0, 0, 668, 669, 5, 40, 0, 0, 669, 144, 1, 0, 0, 0, 670, 671, 5, 99, 0, 0, 671, 672, 5, 111, 0, 0, 672, 673, 5, 116, 0, 0, 673, 674, 5, 40, 0, 0, 674, 146, 1, 0, 0, 0, 675, 676, 5, 115, 0, 0, 676, 677, 5, 101, 0, 0, 677, 678, 5, 99, 0, 0, 678, 679, 5, 40, 0, 0, 679, 148, 1, 0, 0, 0, 680, 681, 5, 99, 0, 0, 681, 682, 5, 111, 0, 0, 682, 683, 5, 115, 0, 0, 683, 684, 5, 101, 0, 0, 684, 685, 5, 99, 0, 0, 685, 686, 5, 40, 0, 0, 686, 150, 1, 0, 0, 0, 687, 688, 5, 99, 0, 0, 688, 689, 5, 115, 0, 0, 689, 690, 5, 99, 0, 0, 690, 691, 5, 40, 0, 0, 691, 152, 1, 0, 0, 0, 692, 693, 5, 97, 0, 0, 693, 694, 5, 114, 0, 0, 694, 695, 5, 99, 0, 0, 695, 696, 5, 115, 0, 0, 696, 697, 5, 105, 0, 0, 697, 698, 5, 110, 0, 0, 698, 699, 5, 40, 0, 0, 699, 154, 1, 0, 0, 0, 700, 701, 5, 97, 0, 0, 701, 702, 5, 114, 0, 0, 702, 703, 5, 99, 0, 0, 703, 704, 5, 99, 0, 0, 704, 705, 5, 111, 0, 0, 705, 706, 5, 115, 0, 0, 706, 707, 5, 40, 0, 0, 707, 156, 1, 0, 0, 0, 708, 709, 5, 97, 0, 0, 709, 710, 5, 114, 0, 0, 710, 711, 5, 99, 0, 0, 711, 712, 5, 116, 0, 0, 712, 713, 5, 97, 0, 0, 713, 714, 5, 110, 0, 0, 714, 715, 5, 40, 0, 0, 715, 158, 1, 0, 0, 0, 716, 717, 5, 97, 0, 0, 717, 718, 5, 114, 0, 0, 718, 719, 5, 99, 0, 0, 719, 720, 5, 99, 0, 0, 720, 721, 5, 111, 0, 0, 721, 722, 5, 116, 0, 0, 722, 723, 5, 97, 0, 0, 723, 724, 5, 110, 0, 0, 724, 725, 5, 40, 0, 0, 725, 160, 1, 0, 0, 0, 726, 727, 5, 97, 0, 0, 727, 728, 5, 114, 0, 0, 728, 729, 5, 99, 0, 0, 729, 730, 5, 115, 0, 0, 730, 731, 5, 101, 0, 0, 731, 732, 5, 99, 0, 0, 732, 733, 5, 40, 0, 0, 733, 162, 1, 0, 0, 0, 734, 735, 5, 97, 0, 0, 735, 736, 5, 114, 0, 0, 736, 737, 5, 99, 0, 0, 737, 738, 5, 99, 0, 0, 738, 739, 5, 111, 0, 0, 739, 740, 5, 115, 0, 0, 740, 741, 5, 101, 0, 0, 741, 742, 5, 99, 0, 0, 742, 743, 5, 40, 0, 0, 743, 164, 1, 0, 0, 0, 744, 745, 5, 97, 0, 0, 745, 746, 5, 114, 0, 0, 746, 747, 5, 99, 0, 0, 747, 748, 5, 99, 0, 0, 748, 749, 5, 115, 0, 0, 749, 750, 5, 99, 0, 0, 750, 751, 5, 40, 0, 0, 751, 166, 1, 0, 0, 0, 752, 753, 5, 97, 0, 0, 753, 754, 5, 99, 0, 0, 754, 755, 5, 115, 0, 0, 755, 756, 5, 99, 0, 0, 756, 757, 5, 40, 0, 0, 757, 168, 1, 0, 0, 0, 758, 759, 5, 97, 0, 0, 759, 760, 5, 115, 0, 0, 760, 761, 5, 105, 0, 0, 761, 762, 5, 110, 0, 0, 762, 763, 5, 40, 0, 0, 763, 170, 1, 0, 0, 0, 764, 765, 5, 97, 0, 0, 765, 766, 5, 99, 0, 0, 766, 767, 5, 111, 0, 0, 767, 768, 5, 115, 0, 0, 768, 769, 5, 40, 0, 0, 769, 172, 1, 0, 0, 0, 770, 771, 5, 97, 0, 0, 771, 772, 5, 116, 0, 0, 772, 773, 5, 97, 0, 0, 773, 774, 5, 110, 0, 0, 774, 775, 5, 40, 0, 0, 775, 174, 1, 0, 0, 0, 776, 777, 5, 97, 0, 0, 777, 778, 5, 99, 0, 0, 778, 779, 5, 111, 0, 0, 779, 780, 5, 116, 0, 0, 780, 781, 5, 97, 0, 0, 781, 782, 5, 110, 0, 0, 782, 783, 5, 40, 0, 0, 783, 176, 1, 0, 0, 0, 784, 785, 5, 97, 0, 0, 785, 786, 5, 115, 0, 0, 786, 787, 5, 101, 0, 0, 787, 788, 5, 99, 0, 0, 788, 789, 5, 40, 0, 0, 789, 178, 1, 0, 0, 0, 790, 791, 5, 97, 0, 0, 791, 792, 5, 99, 0, 0, 792, 793, 5, 111, 0, 0, 793, 794, 5, 115, 0, 0, 794, 795, 5, 101, 0, 0, 795, 796, 5, 99, 0, 0, 796, 797, 5, 40, 0, 0, 797, 180, 1, 0, 0, 0, 798, 799, 5, 97, 0, 0, 799, 800, 5, 99, 0, 0, 800, 801, 5, 111, 0, 0, 801, 802, 5, 116, 0, 0, 802, 803, 5, 40, 0, 0, 803, 182, 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, 40, 0, 0, 811, 184, 1, 0, 0, 0, 812, 813, 5, 115, 0, 0, 813, 814, 5, 105, 0, 0, 814, 815, 5, 110, 0, 0, 815, 816, 5, 104, 0, 0, 816, 817, 5, 40, 0, 0, 817, 186, 1, 0, 0, 0, 818, 819, 5, 115, 0, 0, 819, 820, 5, 104, 0, 0, 820, 821, 5, 40, 0, 0, 821, 188, 1, 0, 0, 0, 822, 823, 5, 99, 0, 0, 823, 824, 5, 111, 0, 0, 824, 825, 5, 115, 0, 0, 825, 826, 5, 104, 0, 0, 826, 827, 5, 40, 0, 0, 827, 190, 1, 0, 0, 0, 828, 829, 5, 99, 0, 0, 829, 830, 5, 104, 0, 0, 830, 831, 5, 40, 0, 0, 831, 192, 1, 0, 0, 0, 832, 833, 5, 116, 0, 0, 833, 834, 5, 97, 0, 0, 834, 835, 5, 110, 0, 0, 835, 836, 5, 104, 0, 0, 836, 837, 5, 40, 0, 0, 837, 194, 1, 0, 0, 0, 838, 839, 5, 116, 0, 0, 839, 840, 5, 104, 0, 0, 840, 841, 5, 40, 0, 0, 841, 196, 1, 0, 0, 0, 842, 843, 5, 99, 0, 0, 843, 844, 5, 111, 0, 0, 844, 845, 5, 116, 0, 0, 845, 846, 5, 97, 0, 0, 846, 847, 5, 110, 0, 0, 847, 848, 5, 104, 0, 0, 848, 849, 5, 40, 0, 0, 849, 198, 1, 0, 0, 0, 850, 851, 5, 99, 0, 0, 851, 852, 5, 111, 0, 0, 852, 853, 5, 116, 0, 0, 853, 854, 5, 104, 0, 0, 854, 855, 5, 40, 0, 0, 855, 200, 1, 0, 0, 0, 856, 857, 5, 99, 0, 0, 857, 858, 5, 116, 0, 0, 858, 859, 5, 104, 0, 0, 859, 860, 5, 40, 0, 0, 860, 202, 1, 0, 0, 0, 861, 862, 5, 115, 0, 0, 862, 863, 5, 101, 0, 0, 863, 864, 5, 99, 0, 0, 864, 865, 5, 104, 0, 0, 865, 866, 5, 40, 0, 0, 866, 204, 1, 0, 0, 0, 867, 868, 5, 115, 0, 0, 868, 869, 5, 99, 0, 0, 869, 870, 5, 104, 0, 0, 870, 871, 5, 40, 0, 0, 871, 206, 1, 0, 0, 0, 872, 873, 5, 99, 0, 0, 873, 874, 5, 111, 0, 0, 874, 875, 5, 115, 0, 0, 875, 876, 5, 101, 0, 0, 876, 877, 5, 99, 0, 0, 877, 878, 5, 104, 0, 0, 878, 879, 5, 40, 0, 0, 879, 208, 1, 0, 0, 0, 880, 881, 5, 99, 0, 0, 881, 882, 5, 115, 0, 0, 882, 883, 5, 99, 0, 0, 883, 884, 5, 104, 0, 0, 884, 885, 5, 40, 0, 0, 885, 210, 1, 0, 0, 0, 886, 887, 5, 97, 0, 0, 887, 888, 5, 115, 0, 0, 888, 889, 5, 105, 0, 0, 889, 890, 5, 110, 0, 0, 890, 891, 5, 104, 0, 0, 891, 892, 5, 40, 0, 0, 892, 212, 1, 0, 0, 0, 893, 894, 5, 97, 0, 0, 894, 895, 5, 114, 0, 0, 895, 896, 5, 115, 0, 0, 896, 897, 5, 105, 0, 0, 897, 898, 5, 110, 0, 0, 898, 899, 5, 104, 0, 0, 899, 900, 5, 40, 0, 0, 900, 214, 1, 0, 0, 0, 901, 902, 5, 97, 0, 0, 902, 903, 5, 114, 0, 0, 903, 904, 5, 115, 0, 0, 904, 905, 5, 104, 0, 0, 905, 906, 5, 40, 0, 0, 906, 216, 1, 0, 0, 0, 907, 908, 5, 97, 0, 0, 908, 909, 5, 114, 0, 0, 909, 910, 5, 99, 0, 0, 910, 911, 5, 115, 0, 0, 911, 912, 5, 105, 0, 0, 912, 913, 5, 110, 0, 0, 913, 914, 5, 104, 0, 0, 914, 915, 5, 40, 0, 0, 915, 218, 1, 0, 0, 0, 916, 917, 5, 97, 0, 0, 917, 918, 5, 99, 0, 0, 918, 919, 5, 111, 0, 0, 919, 920, 5, 115, 0, 0, 920, 921, 5, 104, 0, 0, 921, 922, 5, 40, 0, 0, 922, 220, 1, 0, 0, 0, 923, 924, 5, 97, 0, 0, 924, 925, 5, 114, 0, 0, 925, 926, 5, 99, 0, 0, 926, 927, 5, 111, 0, 0, 927, 928, 5, 115, 0, 0, 928, 929, 5, 104, 0, 0, 929, 930, 5, 40, 0, 0, 930, 222, 1, 0, 0, 0, 931, 932, 5, 97, 0, 0, 932, 933, 5, 114, 0, 0, 933, 934, 5, 99, 0, 0, 934, 935, 5, 104, 0, 0, 935, 936, 5, 40, 0, 0, 936, 224, 1, 0, 0, 0, 937, 938, 5, 97, 0, 0, 938, 939, 5, 114, 0, 0, 939, 940, 5, 99, 0, 0, 940, 941, 5, 99, 0, 0, 941, 942, 5, 111, 0, 0, 942, 943, 5, 115, 0, 0, 943, 944, 5, 104, 0, 0, 944, 945, 5, 40, 0, 0, 945, 226, 1, 0, 0, 0, 946, 947, 5, 97, 0, 0, 947, 948, 5, 116, 0, 0, 948, 949, 5, 97, 0, 0, 949, 950, 5, 110, 0, 0, 950, 951, 5, 104, 0, 0, 951, 952, 5, 40, 0, 0, 952, 228, 1, 0, 0, 0, 953, 954, 5, 97, 0, 0, 954, 955, 5, 114, 0, 0, 955, 956, 5, 116, 0, 0, 956, 957, 5, 97, 0, 0, 957, 958, 5, 110, 0, 0, 958, 959, 5, 104, 0, 0, 959, 960, 5, 40, 0, 0, 960, 230, 1, 0, 0, 0, 961, 962, 5, 97, 0, 0, 962, 963, 5, 114, 0, 0, 963, 964, 5, 116, 0, 0, 964, 965, 5, 104, 0, 0, 965, 966, 5, 40, 0, 0, 966, 232, 1, 0, 0, 0, 967, 968, 5, 97, 0, 0, 968, 969, 5, 114, 0, 0, 969, 970, 5, 99, 0, 0, 970, 971, 5, 116, 0, 0, 971, 972, 5, 97, 0, 0, 972, 973, 5, 110, 0, 0, 973, 974, 5, 104, 0, 0, 974, 975, 5, 40, 0, 0, 975, 234, 1, 0, 0, 0, 976, 977, 5, 97, 0, 0, 977, 978, 5, 99, 0, 0, 978, 979, 5, 111, 0, 0, 979, 980, 5, 116, 0, 0, 980, 981, 5, 104, 0, 0, 981, 982, 5, 40, 0, 0, 982, 236, 1, 0, 0, 0, 983, 984, 5, 97, 0, 0, 984, 985, 5, 114, 0, 0, 985, 986, 5, 99, 0, 0, 986, 987, 5, 111, 0, 0, 987, 988, 5, 116, 0, 0, 988, 989, 5, 104, 0, 0, 989, 990, 5, 40, 0, 0, 990, 238, 1, 0, 0, 0, 991, 992, 5, 97, 0, 0, 992, 993, 5, 99, 0, 0, 993, 994, 5, 111, 0, 0, 994, 995, 5, 116, 0, 0, 995, 996, 5, 97, 0, 0, 996, 997, 5, 110, 0, 0, 997, 998, 5, 104, 0, 0, 998, 999, 5, 40, 0, 0, 999, 240, 1, 0, 0, 0, 1000, 1001, 5, 97, 0, 0, 1001, 1002, 5, 114, 0, 0, 1002, 1003, 5, 99, 0, 0, 1003, 1004, 5, 111, 0, 0, 1004, 1005, 5, 116, 0, 0, 1005, 1006, 5, 97, 0, 0, 1006, 1007, 5, 110, 0, 0, 1007, 1008, 5, 104, 0, 0, 1008, 1009, 5, 40, 0, 0, 1009, 242, 1, 0, 0, 0, 1010, 1011, 5, 97, 0, 0, 1011, 1012, 5, 114, 0, 0, 1012, 1013, 5, 99, 0, 0, 1013, 1014, 5, 116, 0, 0, 1014, 1015, 5, 104, 0, 0, 1015, 1016, 5, 40, 0, 0, 1016, 244, 1, 0, 0, 0, 1017, 1018, 5, 97, 0, 0, 1018, 1019, 5, 114, 0, 0, 1019, 1020, 5, 99, 0, 0, 1020, 1021, 5, 99, 0, 0, 1021, 1022, 5, 111, 0, 0, 1022, 1023, 5, 116, 0, 0, 1023, 1024, 5, 97, 0, 0, 1024, 1025, 5, 110, 0, 0, 1025, 1026, 5, 104, 0, 0, 1026, 1027, 5, 40, 0, 0, 1027, 246, 1, 0, 0, 0, 1028, 1029, 5, 97, 0, 0, 1029, 1030, 5, 115, 0, 0, 1030, 1031, 5, 101, 0, 0, 1031, 1032, 5, 99, 0, 0, 1032, 1033, 5, 104, 0, 0, 1033, 1034, 5, 40, 0, 0, 1034, 248, 1, 0, 0, 0, 1035, 1036, 5, 97, 0, 0, 1036, 1037, 5, 114, 0, 0, 1037, 1038, 5, 115, 0, 0, 1038, 1039, 5, 101, 0, 0, 1039, 1040, 5, 99, 0, 0, 1040, 1041, 5, 104, 0, 0, 1041, 1042, 5, 40, 0, 0, 1042, 250, 1, 0, 0, 0, 1043, 1044, 5, 97, 0, 0, 1044, 1045, 5, 114, 0, 0, 1045, 1046, 5, 115, 0, 0, 1046, 1047, 5, 99, 0, 0, 1047, 1048, 5, 104, 0, 0, 1048, 1049, 5, 40, 0, 0, 1049, 252, 1, 0, 0, 0, 1050, 1051, 5, 97, 0, 0, 1051, 1052, 5, 114, 0, 0, 1052, 1053, 5, 99, 0, 0, 1053, 1054, 5, 115, 0, 0, 1054, 1055, 5, 101, 0, 0, 1055, 1056, 5, 99, 0, 0, 1056, 1057, 5, 104, 0, 0, 1057, 1058, 5, 40, 0, 0, 1058, 254, 1, 0, 0, 0, 1059, 1060, 5, 97, 0, 0, 1060, 1061, 5, 99, 0, 0, 1061, 1062, 5, 111, 0, 0, 1062, 1063, 5, 115, 0, 0, 1063, 1064, 5, 101, 0, 0, 1064, 1065, 5, 99, 0, 0, 1065, 1066, 5, 104, 0, 0, 1066, 1067, 5, 40, 0, 0, 1067, 256, 1, 0, 0, 0, 1068, 1069, 5, 97, 0, 0, 1069, 1070, 5, 114, 0, 0, 1070, 1071, 5, 99, 0, 0, 1071, 1072, 5, 111, 0, 0, 1072, 1073, 5, 115, 0, 0, 1073, 1074, 5, 101, 0, 0, 1074, 1075, 5, 99, 0, 0, 1075, 1076, 5, 104, 0, 0, 1076, 1077, 5, 40, 0, 0, 1077, 258, 1, 0, 0, 0, 1078, 1079, 5, 97, 0, 0, 1079, 1080, 5, 114, 0, 0, 1080, 1081, 5, 99, 0, 0, 1081, 1082, 5, 115, 0, 0, 1082, 1083, 5, 99, 0, 0, 1083, 1084, 5, 104, 0, 0, 1084, 1085, 5, 40, 0, 0, 1085, 260, 1, 0, 0, 0, 1086, 1087, 5, 97, 0, 0, 1087, 1088, 5, 114, 0, 0, 1088, 1089, 5, 99, 0, 0, 1089, 1090, 5, 99, 0, 0, 1090, 1091, 5, 111, 0, 0, 1091, 1092, 5, 115, 0, 0, 1092, 1093, 5, 101, 0, 0, 1093, 1094, 5, 99, 0, 0, 1094, 1095, 5, 104, 0, 0, 1095, 1096, 5, 40, 0, 0, 1096, 262, 1, 0, 0, 0, 1097, 1098, 5, 97, 0, 0, 1098, 1099, 5, 99, 0, 0, 1099, 1100, 5, 115, 0, 0, 1100, 1101, 5, 99, 0, 0, 1101, 1102, 5, 104, 0, 0, 1102, 1103, 5, 40, 0, 0, 1103, 264, 1, 0, 0, 0, 1104, 1105, 5, 102, 0, 0, 1105, 1106, 5, 97, 0, 0, 1106, 1107, 5, 99, 0, 0, 1107, 1108, 5, 116, 0, 0, 1108, 1109, 5, 111, 0, 0, 1109, 1110, 5, 114, 0, 0, 1110, 1111, 5, 105, 0, 0, 1111, 1112, 5, 97, 0, 0, 1112, 1113, 5, 108, 0, 0, 1113, 1114, 5, 40, 0, 0, 1114, 266, 1, 0, 0, 0, 1115, 1116, 5, 103, 0, 0, 1116, 1117, 5, 97, 0, 0, 1117, 1118, 5, 109, 0, 0, 1118, 1119, 5, 109, 0, 0, 1119, 1120, 5, 97, 0, 0, 1120, 1121, 5, 40, 0, 0, 1121, 268, 1, 0, 0, 0, 1122, 1123, 5, 100, 0, 0, 1123, 1124, 5, 101, 0, 0, 1124, 1125, 5, 114, 0, 0, 1125, 1126, 5, 105, 0, 0, 1126, 1127, 5, 118, 0, 0, 1127, 1128, 5, 97, 0, 0, 1128, 1129, 5, 116, 0, 0, 1129, 1130, 5, 105, 0, 0, 1130, 1131, 5, 118, 0, 0, 1131, 1132, 5, 101, 0, 0, 1132, 1133, 5, 40, 0, 0, 1133, 270, 1, 0, 0, 0, 1134, 1135, 5, 105, 0, 0, 1135, 1136, 5, 110, 0, 0, 1136, 1137, 5, 116, 0, 0, 1137, 1138, 5, 101, 0, 0, 1138, 1139, 5, 103, 0, 0, 1139, 1140, 5, 114, 0, 0, 1140, 1141, 5, 97, 0, 0, 1141, 1142, 5, 108, 0, 0, 1142, 1143, 5, 40, 0, 0, 1143, 272, 1, 0, 0, 0, 1144, 1145, 5, 108, 0, 0, 1145, 1146, 5, 105, 0, 0, 1146, 1147, 5, 109, 0, 0, 1147, 1148, 5, 105, 0, 0, 1148, 1149, 5, 116, 0, 0, 1149, 1150, 5, 40, 0, 0, 1150, 274, 1, 0, 0, 0, 1151, 1152, 5, 108, 0, 0, 1152, 1153, 5, 105, 0, 0, 1153, 1154, 5, 109, 0, 0, 1154, 1155, 5, 105, 0, 0, 1155, 1156, 5, 116, 0, 0, 1156, 1157, 5, 108, 0, 0, 1157, 1158, 5, 101, 0, 0, 1158, 1159, 5, 102, 0, 0, 1159, 1160, 5, 116, 0, 0, 1160, 1161, 5, 40, 0, 0, 1161, 276, 1, 0, 0, 0, 1162, 1163, 5, 108, 0, 0, 1163, 1164, 5, 105, 0, 0, 1164, 1165, 5, 109, 0, 0, 1165, 1166, 5, 105, 0, 0, 1166, 1167, 5, 116, 0, 0, 1167, 1168, 5, 114, 0, 0, 1168, 1169, 5, 105, 0, 0, 1169, 1170, 5, 103, 0, 0, 1170, 1171, 5, 104, 0, 0, 1171, 1172, 5, 116, 0, 0, 1172, 1173, 5, 40, 0, 0, 1173, 278, 1, 0, 0, 0, 1174, 1175, 5, 115, 0, 0, 1175, 1176, 5, 117, 0, 0, 1176, 1177, 5, 109, 0, 0, 1177, 1178, 5, 40, 0, 0, 1178, 280, 1, 0, 0, 0, 1179, 1180, 5, 112, 0, 0, 1180, 1181, 5, 114, 0, 0, 1181, 1182, 5, 111, 0, 0, 1182, 1183, 5, 100, 0, 0, 1183, 1184, 5, 117, 0, 0, 1184, 1185, 5, 99, 0, 0, 1185, 1186, 5, 116, 0, 0, 1186, 1187, 5, 40, 0, 0, 1187, 282, 1, 0, 0, 0, 1188, 1189, 5, 115, 0, 0, 1189, 1190, 5, 105, 0, 0, 1190, 1191, 5, 103, 0, 0, 1191, 1192, 5, 110, 0, 0, 1192, 1193, 5, 117, 0, 0, 1193, 1194, 5, 109, 0, 0, 1194, 1195, 5, 40, 0, 0, 1195, 284, 1, 0, 0, 0, 1196, 1197, 5, 115, 0, 0, 1197, 1198, 5, 103, 0, 0, 1198, 1199, 5, 110, 0, 0, 1199, 1200, 5, 40, 0, 0, 1200, 286, 1, 0, 0, 0, 1201, 1202, 5, 115, 0, 0, 1202, 1203, 5, 105, 0, 0, 1203, 1204, 5, 103, 0, 0, 1204, 1205, 5, 110, 0, 0, 1205, 1206, 5, 40, 0, 0, 1206, 288, 1, 0, 0, 0, 1207, 1208, 5, 97, 0, 0, 1208, 1209, 5, 98, 0, 0, 1209, 1210, 5, 115, 0, 0, 1210, 1211, 5, 40, 0, 0, 1211, 290, 1, 0, 0, 0, 1212, 1213, 5, 112, 0, 0, 1213, 1214, 5, 104, 0, 0, 1214, 1215, 5, 105, 0, 0, 1215, 1216, 5, 40, 0, 0, 1216, 292, 1, 0, 0, 0, 1217, 1218, 5, 112, 0, 0, 1218, 1219, 5, 114, 0, 0, 1219, 1220, 5, 105, 0, 0, 1220, 1221, 5, 109, 0, 0, 1221, 1222, 5, 101, 0, 0, 1222, 1223, 5, 40, 0, 0, 1223, 294, 1, 0, 0, 0, 1224, 1225, 5, 118, 0, 0, 1225, 1226, 5, 97, 0, 0, 1226, 1227, 5, 108, 0, 0, 1227, 1228, 5, 117, 0, 0, 1228, 1229, 5, 97, 0, 0, 1229, 1230, 5, 116, 0, 0, 1230, 1231, 5, 105, 0, 0, 1231, 1232, 5, 111, 0, 0, 1232, 1233, 5, 110, 0, 0, 1233, 1234, 5, 40, 0, 0, 1234, 296, 1, 0, 0, 0, 1235, 1236, 5, 99, 0, 0, 1236, 1237, 5, 97, 0, 0, 1237, 1238, 5, 114, 0, 0, 1238, 1239, 5, 100, 0, 0, 1239, 1240, 5, 40, 0, 0, 1240, 298, 1, 0, 0, 0, 1241, 1242, 5, 112, 0, 0, 1242, 1243, 5, 111, 0, 0, 1243, 1244, 5, 119, 0, 0, 1244, 1245, 5, 101, 0, 0, 1245, 1246, 5, 114, 0, 0, 1246, 1247, 5, 115, 0, 0, 1247, 1248, 5, 101, 0, 0, 1248, 1249, 5, 116, 0, 0, 1249, 1250, 5, 40, 0, 0, 1250, 300, 1, 0, 0, 0, 1251, 1252, 5, 117, 0, 0, 1252, 1253, 5, 110, 0, 0, 1253, 1254, 5, 105, 0, 0, 1254, 1255, 5, 111, 0, 0, 1255, 1256, 5, 110, 0, 0, 1256, 1257, 5, 40, 0, 0, 1257, 302, 1, 0, 0, 0, 1258, 1259, 5, 105, 0, 0, 1259, 1260, 5, 110, 0, 0, 1260, 1261, 5, 116, 0, 0, 1261, 1262, 5, 101, 0, 0, 1262, 1263, 5, 114, 0, 0, 1263, 1264, 5, 115, 0, 0, 1264, 1265, 5, 101, 0, 0, 1265, 1266, 5, 99, 0, 0, 1266, 1267, 5, 116, 0, 0, 1267, 1268, 5, 105, 0, 0, 1268, 1269, 5, 111, 0, 0, 1269, 1270, 5, 110, 0, 0, 1270, 1271, 5, 40, 0, 0, 1271, 304, 1, 0, 0, 0, 1272, 1273, 5, 99, 0, 0, 1273, 1274, 5, 111, 0, 0, 1274, 1275, 5, 109, 0, 0, 1275, 1276, 5, 112, 0, 0, 1276, 1277, 5, 108, 0, 0, 1277, 1278, 5, 101, 0, 0, 1278, 1279, 5, 109, 0, 0, 1279, 1280, 5, 101, 0, 0, 1280, 1281, 5, 110, 0, 0, 1281, 1282, 5, 116, 0, 0, 1282, 1283, 5, 40, 0, 0, 1283, 306, 1, 0, 0, 0, 1284, 1285, 5, 105, 0, 0, 1285, 1286, 5, 109, 0, 0, 1286, 1287, 5, 97, 0, 0, 1287, 1288, 5, 103, 0, 0, 1288, 1289, 5, 101, 0, 0, 1289, 1290, 5, 40, 0, 0, 1290, 308, 1, 0, 0, 0, 1291, 1292, 5, 112, 0, 0, 1292, 1293, 5, 114, 0, 0, 1293, 1294, 5, 101, 0, 0, 1294, 1295, 5, 105, 0, 0, 1295, 1296, 5, 109, 0, 0, 1296, 1297, 5, 97, 0, 0, 1297, 1298, 5, 103, 0, 0, 1298, 1299, 5, 101, 0, 0, 1299, 1300, 5, 40, 0, 0, 1300, 310, 1, 0, 0, 0, 1301, 1302, 5, 102, 0, 0, 1302, 1303, 5, 108, 0, 0, 1303, 1304, 5, 111, 0, 0, 1304, 1305, 5, 111, 0, 0, 1305, 1306, 5, 114, 0, 0, 1306, 1307, 5, 40, 0, 0, 1307, 312, 1, 0, 0, 0, 1308, 1309, 5, 99, 0, 0, 1309, 1310, 5, 101, 0, 0, 1310, 1311, 5, 105, 0, 0, 1311, 1312, 5, 108, 0, 0, 1312, 1313, 5, 40, 0, 0, 1313, 314, 1, 0, 0, 0, 1314, 1315, 5, 99, 0, 0, 1315, 1316, 5, 101, 0, 0, 1316, 1317, 5, 105, 0, 0, 1317, 1318, 5, 108, 0, 0, 1318, 1319, 5, 105, 0, 0, 1319, 1320, 5, 110, 0, 0, 1320, 1321, 5, 103, 0, 0, 1321, 1322, 5, 40, 0, 0, 1322, 316, 1, 0, 0, 0, 1323, 1324, 5, 114, 0, 0, 1324, 1325, 5, 111, 0, 0, 1325, 1326, 5, 117, 0, 0, 1326, 1327, 5, 110, 0, 0, 1327, 1328, 5, 100, 0, 0, 1328, 1329, 5, 40, 0, 0, 1329, 318, 1, 0, 0, 0, 1330, 1331, 5, 109, 0, 0, 1331, 1332, 5, 105, 0, 0, 1332, 1333, 5, 110, 0, 0, 1333, 1334, 5, 40, 0, 0, 1334, 320, 1, 0, 0, 0, 1335, 1336, 5, 109, 0, 0, 1336, 1337, 5, 97, 0, 0, 1337, 1338, 5, 120, 0, 0, 1338, 1339, 5, 40, 0, 0, 1339, 322, 1, 0, 0, 0, 1340, 1341, 5, 97, 0, 0, 1341, 1342, 5, 114, 0, 0, 1342, 1343, 5, 103, 0, 0, 1343, 1344, 5, 109, 0, 0, 1344, 1345, 5, 97, 0, 0, 1345, 1346, 5, 120, 0, 0, 1346, 1347, 5, 40, 0, 0, 1347, 324, 1, 0, 0, 0, 1348, 1349, 5, 97, 0, 0, 1349, 1350, 5, 114, 0, 0, 1350, 1351, 5, 103, 0, 0, 1351, 1352, 5, 109, 0, 0, 1352, 1353, 5, 105, 0, 0, 1353, 1354, 5, 110, 0, 0, 1354, 1355, 5, 40, 0, 0, 1355, 326, 1, 0, 0, 0, 1356, 1357, 5, 103, 0, 0, 1357, 1358, 5, 99, 0, 0, 1358, 1359, 5, 100, 0, 0, 1359, 1360, 5, 40, 0, 0, 1360, 328, 1, 0, 0, 0, 1361, 1362, 5, 108, 0, 0, 1362, 1363, 5, 99, 0, 0, 1363, 1364, 5, 109, 0, 0, 1364, 1365, 5, 40, 0, 0, 1365, 330, 1, 0, 0, 0, 1366, 1367, 5, 98, 0, 0, 1367, 1368, 5, 105, 0, 0, 1368, 1369, 5, 110, 0, 0, 1369, 1370, 5, 111, 0, 0, 1370, 1371, 5, 109, 0, 0, 1371, 1372, 5, 105, 0, 0, 1372, 1373, 5, 97, 0, 0, 1373, 1374, 5, 108, 0, 0, 1374, 1375, 5, 40, 0, 0, 1375, 332, 1, 0, 0, 0, 1376, 1377, 5, 105, 0, 0, 1377, 1378, 5, 118, 0, 0, 1378, 1379, 5, 101, 0, 0, 1379, 1380, 5, 114, 0, 0, 1380, 1381, 5, 115, 0, 0, 1381, 1382, 5, 111, 0, 0, 1382, 1383, 5, 110, 0, 0, 1383, 1384, 5, 40, 0, 0, 1384, 334, 1, 0, 0, 0, 1385, 1386, 5, 97, 0, 0, 1386, 1387, 5, 108, 0, 0, 1387, 1388, 5, 101, 0, 0, 1388, 1389, 5, 112, 0, 0, 1389, 1390, 5, 104, 0, 0, 1390, 1391, 5, 40, 0, 0, 1391, 336, 1, 0, 0, 0, 1392, 1393, 5, 101, 0, 0, 1393, 1394, 5, 114, 0, 0, 1394, 1395, 5, 102, 0, 0, 1395, 1396, 5, 40, 0, 0, 1396, 338, 1, 0, 0, 0, 1397, 1398, 5, 101, 0, 0, 1398, 1399, 5, 114, 0, 0, 1399, 1400, 5, 102, 0, 0, 1400, 1401, 5, 99, 0, 0, 1401, 1402, 5, 40, 0, 0, 1402, 340, 1, 0, 0, 0, 1403, 1404, 5, 101, 0, 0, 1404, 1405, 5, 114, 0, 0, 1405, 1406, 5, 102, 0, 0, 1406, 1407, 5, 105, 0, 0, 1407, 1408, 5, 40, 0, 0, 1408, 342, 1, 0, 0, 0, 1409, 1410, 5, 69, 0, 0, 1410, 1411, 5, 105, 0, 0, 1411, 1412, 5, 40, 0, 0, 1412, 344, 1, 0, 0, 0, 1413, 1414, 5, 108, 0, 0, 1414, 1415, 5, 105, 0, 0, 1415, 1416, 5, 40, 0, 0, 1416, 346, 1, 0, 0, 0, 1417, 1418, 5, 83, 0, 0, 1418, 1419, 5, 105, 0, 0, 1419, 1420, 5, 40, 0, 0, 1420, 348, 1, 0, 0, 0, 1421, 1422, 5, 67, 0, 0, 1422, 1423, 5, 105, 0, 0, 1423, 1424, 5, 40, 0, 0, 1424, 350, 1, 0, 0, 0, 1425, 1426, 5, 83, 0, 0, 1426, 1427, 5, 104, 0, 0, 1427, 1428, 5, 105, 0, 0, 1428, 1429, 5, 40, 0, 0, 1429, 352, 1, 0, 0, 0, 1430, 1431, 5, 67, 0, 0, 1431, 1432, 5, 104, 0, 0, 1432, 1433, 5, 105, 0, 0, 1433, 1434, 5, 40, 0, 0, 1434, 354, 1, 0, 0, 0, 1435, 1436, 5, 116, 0, 0, 1436, 1437, 5, 114, 0, 0, 1437, 1438, 5, 117, 0, 0, 1438, 1439, 5, 110, 0, 0, 1439, 1440, 5, 99, 0, 0, 1440, 1441, 5, 40, 0, 0, 1441, 356, 1, 0, 0, 0, 1442, 1443, 5, 99, 0, 0, 1443, 1444, 5, 111, 0, 0, 1444, 1445, 5, 110, 0, 0, 1445, 1446, 5, 106, 0, 0, 1446, 1447, 5, 117, 0, 0, 1447, 1448, 5, 103, 0, 0, 1448, 1449, 5, 97, 0, 0, 1449, 1450, 5, 116, 0, 0, 1450, 1451, 5, 101, 0, 0, 1451, 1452, 5, 40, 0, 0, 1452, 358, 1, 0, 0, 0, 1453, 1454, 5, 100, 0, 0, 1454, 1455, 5, 111, 0, 0, 1455, 1456, 5, 109, 0, 0, 1456, 1457, 5, 97, 0, 0, 1457, 1458, 5, 105, 0, 0, 1458, 1459, 5, 110, 0, 0, 1459, 1460, 5, 40, 0, 0, 1460, 360, 1, 0, 0, 0, 1461, 1462, 5, 112, 0, 0, 1462, 1463, 5, 105, 0, 0, 1463, 1464, 5, 101, 0, 0, 1464, 1465, 5, 99, 0, 0, 1465, 1466, 5, 101, 0, 0, 1466, 1467, 5, 119, 0, 0, 1467, 1468, 5, 105, 0, 0, 1468, 1469, 5, 115, 0, 0, 1469, 1470, 5, 101, 0, 0, 1470, 1471, 5, 40, 0, 0, 1471, 362, 1, 0, 0, 0, 1472, 1473, 5, 97, 0, 0, 1473, 1474, 5, 112, 0, 0, 1474, 1475, 5, 112, 0, 0, 1475, 1476, 5, 108, 0, 0, 1476, 1477, 5, 121, 0, 0, 1477, 1478, 5, 40, 0, 0, 1478, 364, 1, 0, 0, 0, 1479, 1480, 5, 108, 0, 0, 1480, 1481, 5, 97, 0, 0, 1481, 1482, 5, 109, 0, 0, 1482, 1483, 5, 98, 0, 0, 1483, 1484, 5, 100, 0, 0, 1484, 1485, 5, 97, 0, 0, 1485, 1486, 5, 40, 0, 0, 1486, 366, 1, 0, 0, 0, 1487, 1489, 5, 13, 0, 0, 1488, 1487, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1492, 5, 10, 0, 0, 1491, 1488, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 1, 0, 0, 0, 1495, 1496, 6, 183, 0, 0, 1496, 368, 1, 0, 0, 0, 1497, 1499, 7, 0, 0, 0, 1498, 1500, 7, 1, 0, 0, 1499, 1498, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1502, 1, 0, 0, 0, 1501, 1503, 2, 48, 57, 0, 1502, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1502, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 370, 1, 0, 0, 0, 1506, 1508, 2, 48, 57, 0, 1507, 1506, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1515, 5, 46, 0, 0, 1512, 1514, 2, 48, 57, 0, 1513, 1512, 1, 0, 0, 0, 1514, 1517, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1519, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1520, 3, 369, 184, 0, 1519, 1518, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, 1, 0, 0, 0, 1521, 1523, 5, 105, 0, 0, 1522, 1521, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1540, 1, 0, 0, 0, 1524, 1526, 5, 46, 0, 0, 1525, 1524, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1528, 1, 0, 0, 0, 1527, 1529, 2, 48, 57, 0, 1528, 1527, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1528, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1533, 1, 0, 0, 0, 1532, 1534, 3, 369, 184, 0, 1533, 1532, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1536, 1, 0, 0, 0, 1535, 1537, 5, 105, 0, 0, 1536, 1535, 1, 0, 0, 0, 1536, 1537, 1, 0, 0, 0, 1537, 1540, 1, 0, 0, 0, 1538, 1540, 5, 105, 0, 0, 1539, 1507, 1, 0, 0, 0, 1539, 1525, 1, 0, 0, 0, 1539, 1538, 1, 0, 0, 0, 1540, 372, 1, 0, 0, 0, 1541, 1542, 5, 67, 0, 0, 1542, 1560, 5, 67, 0, 0, 1543, 1544, 5, 82, 0, 0, 1544, 1560, 5, 82, 0, 0, 1545, 1546, 5, 81, 0, 0, 1546, 1560, 5, 81, 0, 0, 1547, 1548, 5, 90, 0, 0, 1548, 1560, 5, 90, 0, 0, 1549, 1550, 5, 66, 0, 0, 1550, 1560, 5, 66, 0, 0, 1551, 1552, 5, 90, 0, 0, 1552, 1553, 5, 90, 0, 0, 1553, 1560, 5, 42, 0, 0, 1554, 1555, 5, 90, 0, 0, 1555, 1556, 5, 90, 0, 0, 1556, 1560, 5, 43, 0, 0, 1557, 1558, 5, 80, 0, 0, 1558, 1560, 5, 80, 0, 0, 1559, 1541, 1, 0, 0, 0, 1559, 1543, 1, 0, 0, 0, 1559, 1545, 1, 0, 0, 0, 1559, 1547, 1, 0, 0, 0, 1559, 1549, 1, 0, 0, 0, 1559, 1551, 1, 0, 0, 0, 1559, 1554, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1560, 374, 1, 0, 0, 0, 1561, 1562, 5, 116, 0, 0, 1562, 1563, 5, 114, 0, 0, 1563, 1564, 5, 117, 0, 0, 1564, 1580, 5, 101, 0, 0, 1565, 1566, 5, 84, 0, 0, 1566, 1567, 5, 114, 0, 0, 1567, 1568, 5, 117, 0, 0, 1568, 1580, 5, 101, 0, 0, 1569, 1570, 5, 102, 0, 0, 1570, 1571, 5, 97, 0, 0, 1571, 1572, 5, 108, 0, 0, 1572, 1573, 5, 115, 0, 0, 1573, 1580, 5, 101, 0, 0, 1574, 1575, 5, 70, 0, 0, 1575, 1576, 5, 97, 0, 0, 1576, 1577, 5, 108, 0, 0, 1577, 1578, 5, 115, 0, 0, 1578, 1580, 5, 101, 0, 0, 1579, 1561, 1, 0, 0, 0, 1579, 1565, 1, 0, 0, 0, 1579, 1569, 1, 0, 0, 0, 1579, 1574, 1, 0, 0, 0, 1580, 376, 1, 0, 0, 0, 1581, 1582, 5, 78, 0, 0, 1582, 1583, 5, 97, 0, 0, 1583, 1584, 5, 78, 0, 0, 1584, 378, 1, 0, 0, 0, 1585, 1587, 7, 2, 0, 0, 1586, 1585, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1586, 1, 0, 0, 0, 1588, 1589, 1, 0, 0, 0, 1589, 1596, 1, 0, 0, 0, 1590, 1592, 5, 95, 0, 0, 1591, 1593, 7, 3, 0, 0, 1592, 1591, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 1592, 1, 0, 0, 0, 1594, 1595, 1, 0, 0, 0, 1595, 1597, 1, 0, 0, 0, 1596, 1590, 1, 0, 0, 0, 1596, 1597, 1, 0, 0, 0, 1597, 380, 1, 0, 0, 0, 1598, 1599, 5, 47, 0, 0, 1599, 1600, 5, 47, 0, 0, 1600, 1604, 1, 0, 0, 0, 1601, 1603, 8, 4, 0, 0, 1602, 1601, 1, 0, 0, 0, 1603, 1606, 1, 0, 0, 0, 1604, 1602, 1, 0, 0, 0, 1604, 1605, 1, 0, 0, 0, 1605, 1611, 1, 0, 0, 0, 1606, 1604, 1, 0, 0, 0, 1607, 1609, 5, 13, 0, 0, 1608, 1607, 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1612, 5, 10, 0, 0, 1611, 1608, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1625, 1, 0, 0, 0, 1613, 1614, 5, 47, 0, 0, 1614, 1615, 5, 42, 0, 0, 1615, 1619, 1, 0, 0, 0, 1616, 1618, 9, 0, 0, 0, 1617, 1616, 1, 0, 0, 0, 1618, 1621, 1, 0, 0, 0, 1619, 1620, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1622, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1622, 1623, 5, 42, 0, 0, 1623, 1625, 5, 47, 0, 0, 1624, 1598, 1, 0, 0, 0, 1624, 1613, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1627, 6, 190, 0, 0, 1627, 382, 1, 0, 0, 0, 1628, 1630, 7, 5, 0, 0, 1629, 1628, 1, 0, 0, 0, 1630, 1631, 1, 0, 0, 0, 1631, 1629, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1634, 6, 191, 0, 0, 1634, 384, 1, 0, 0, 0, 25, 0, 1488, 1493, 1499, 1504, 1509, 1515, 1519, 1522, 1525, 1530, 1533, 1536, 1539, 1559, 1579, 1588, 1594, 1596, 1604, 1608, 1611, 1619, 1624, 1631, 1, 6, 0, 0]
\ No newline at end of file
+[4, 0, 193, 1659, 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, 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, 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, 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, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 3, 185, 1513, 8, 185, 1, 185, 4, 185, 1516, 8, 185, 11, 185, 12, 185, 1517, 1, 185, 1, 185, 1, 186, 1, 186, 3, 186, 1524, 8, 186, 1, 186, 4, 186, 1527, 8, 186, 11, 186, 12, 186, 1528, 1, 187, 4, 187, 1532, 8, 187, 11, 187, 12, 187, 1533, 1, 187, 1, 187, 5, 187, 1538, 8, 187, 10, 187, 12, 187, 1541, 9, 187, 1, 187, 3, 187, 1544, 8, 187, 1, 187, 3, 187, 1547, 8, 187, 1, 187, 3, 187, 1550, 8, 187, 1, 187, 4, 187, 1553, 8, 187, 11, 187, 12, 187, 1554, 1, 187, 3, 187, 1558, 8, 187, 1, 187, 3, 187, 1561, 8, 187, 1, 187, 3, 187, 1564, 8, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 1584, 8, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 1604, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 4, 191, 1611, 8, 191, 11, 191, 12, 191, 1612, 1, 191, 1, 191, 4, 191, 1617, 8, 191, 11, 191, 12, 191, 1618, 3, 191, 1621, 8, 191, 1, 192, 1, 192, 1, 192, 1, 192, 5, 192, 1627, 8, 192, 10, 192, 12, 192, 1630, 9, 192, 1, 192, 3, 192, 1633, 8, 192, 1, 192, 3, 192, 1636, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 5, 192, 1642, 8, 192, 10, 192, 12, 192, 1645, 9, 192, 1, 192, 1, 192, 3, 192, 1649, 8, 192, 1, 192, 1, 192, 1, 193, 4, 193, 1654, 8, 193, 11, 193, 12, 193, 1655, 1, 193, 1, 193, 1, 1643, 0, 194, 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, 0, 375, 187, 377, 188, 379, 189, 381, 190, 383, 191, 385, 192, 387, 193, 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, 1690, 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, 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, 1, 389, 1, 0, 0, 0, 3, 391, 1, 0, 0, 0, 5, 393, 1, 0, 0, 0, 7, 395, 1, 0, 0, 0, 9, 397, 1, 0, 0, 0, 11, 399, 1, 0, 0, 0, 13, 403, 1, 0, 0, 0, 15, 405, 1, 0, 0, 0, 17, 407, 1, 0, 0, 0, 19, 411, 1, 0, 0, 0, 21, 421, 1, 0, 0, 0, 23, 424, 1, 0, 0, 0, 25, 430, 1, 0, 0, 0, 27, 433, 1, 0, 0, 0, 29, 445, 1, 0, 0, 0, 31, 447, 1, 0, 0, 0, 33, 450, 1, 0, 0, 0, 35, 457, 1, 0, 0, 0, 37, 459, 1, 0, 0, 0, 39, 468, 1, 0, 0, 0, 41, 470, 1, 0, 0, 0, 43, 478, 1, 0, 0, 0, 45, 480, 1, 0, 0, 0, 47, 483, 1, 0, 0, 0, 49, 486, 1, 0, 0, 0, 51, 488, 1, 0, 0, 0, 53, 490, 1, 0, 0, 0, 55, 492, 1, 0, 0, 0, 57, 495, 1, 0, 0, 0, 59, 497, 1, 0, 0, 0, 61, 499, 1, 0, 0, 0, 63, 501, 1, 0, 0, 0, 65, 505, 1, 0, 0, 0, 67, 509, 1, 0, 0, 0, 69, 511, 1, 0, 0, 0, 71, 515, 1, 0, 0, 0, 73, 518, 1, 0, 0, 0, 75, 526, 1, 0, 0, 0, 77, 529, 1, 0, 0, 0, 79, 538, 1, 0, 0, 0, 81, 541, 1, 0, 0, 0, 83, 543, 1, 0, 0, 0, 85, 550, 1, 0, 0, 0, 87, 552, 1, 0, 0, 0, 89, 560, 1, 0, 0, 0, 91, 563, 1, 0, 0, 0, 93, 570, 1, 0, 0, 0, 95, 572, 1, 0, 0, 0, 97, 574, 1, 0, 0, 0, 99, 576, 1, 0, 0, 0, 101, 580, 1, 0, 0, 0, 103, 584, 1, 0, 0, 0, 105, 587, 1, 0, 0, 0, 107, 590, 1, 0, 0, 0, 109, 592, 1, 0, 0, 0, 111, 594, 1, 0, 0, 0, 113, 597, 1, 0, 0, 0, 115, 599, 1, 0, 0, 0, 117, 601, 1, 0, 0, 0, 119, 603, 1, 0, 0, 0, 121, 608, 1, 0, 0, 0, 123, 615, 1, 0, 0, 0, 125, 621, 1, 0, 0, 0, 127, 626, 1, 0, 0, 0, 129, 632, 1, 0, 0, 0, 131, 638, 1, 0, 0, 0, 133, 643, 1, 0, 0, 0, 135, 647, 1, 0, 0, 0, 137, 652, 1, 0, 0, 0, 139, 657, 1, 0, 0, 0, 141, 662, 1, 0, 0, 0, 143, 667, 1, 0, 0, 0, 145, 674, 1, 0, 0, 0, 147, 679, 1, 0, 0, 0, 149, 684, 1, 0, 0, 0, 151, 691, 1, 0, 0, 0, 153, 696, 1, 0, 0, 0, 155, 704, 1, 0, 0, 0, 157, 712, 1, 0, 0, 0, 159, 720, 1, 0, 0, 0, 161, 730, 1, 0, 0, 0, 163, 738, 1, 0, 0, 0, 165, 748, 1, 0, 0, 0, 167, 756, 1, 0, 0, 0, 169, 762, 1, 0, 0, 0, 171, 768, 1, 0, 0, 0, 173, 774, 1, 0, 0, 0, 175, 780, 1, 0, 0, 0, 177, 788, 1, 0, 0, 0, 179, 794, 1, 0, 0, 0, 181, 802, 1, 0, 0, 0, 183, 808, 1, 0, 0, 0, 185, 816, 1, 0, 0, 0, 187, 822, 1, 0, 0, 0, 189, 826, 1, 0, 0, 0, 191, 832, 1, 0, 0, 0, 193, 836, 1, 0, 0, 0, 195, 842, 1, 0, 0, 0, 197, 846, 1, 0, 0, 0, 199, 854, 1, 0, 0, 0, 201, 860, 1, 0, 0, 0, 203, 865, 1, 0, 0, 0, 205, 871, 1, 0, 0, 0, 207, 876, 1, 0, 0, 0, 209, 884, 1, 0, 0, 0, 211, 890, 1, 0, 0, 0, 213, 897, 1, 0, 0, 0, 215, 905, 1, 0, 0, 0, 217, 911, 1, 0, 0, 0, 219, 920, 1, 0, 0, 0, 221, 927, 1, 0, 0, 0, 223, 935, 1, 0, 0, 0, 225, 941, 1, 0, 0, 0, 227, 950, 1, 0, 0, 0, 229, 957, 1, 0, 0, 0, 231, 965, 1, 0, 0, 0, 233, 971, 1, 0, 0, 0, 235, 980, 1, 0, 0, 0, 237, 987, 1, 0, 0, 0, 239, 995, 1, 0, 0, 0, 241, 1004, 1, 0, 0, 0, 243, 1014, 1, 0, 0, 0, 245, 1021, 1, 0, 0, 0, 247, 1032, 1, 0, 0, 0, 249, 1039, 1, 0, 0, 0, 251, 1047, 1, 0, 0, 0, 253, 1054, 1, 0, 0, 0, 255, 1063, 1, 0, 0, 0, 257, 1072, 1, 0, 0, 0, 259, 1082, 1, 0, 0, 0, 261, 1090, 1, 0, 0, 0, 263, 1101, 1, 0, 0, 0, 265, 1108, 1, 0, 0, 0, 267, 1119, 1, 0, 0, 0, 269, 1126, 1, 0, 0, 0, 271, 1138, 1, 0, 0, 0, 273, 1148, 1, 0, 0, 0, 275, 1155, 1, 0, 0, 0, 277, 1166, 1, 0, 0, 0, 279, 1178, 1, 0, 0, 0, 281, 1183, 1, 0, 0, 0, 283, 1192, 1, 0, 0, 0, 285, 1200, 1, 0, 0, 0, 287, 1205, 1, 0, 0, 0, 289, 1211, 1, 0, 0, 0, 291, 1216, 1, 0, 0, 0, 293, 1221, 1, 0, 0, 0, 295, 1228, 1, 0, 0, 0, 297, 1239, 1, 0, 0, 0, 299, 1245, 1, 0, 0, 0, 301, 1255, 1, 0, 0, 0, 303, 1262, 1, 0, 0, 0, 305, 1276, 1, 0, 0, 0, 307, 1288, 1, 0, 0, 0, 309, 1295, 1, 0, 0, 0, 311, 1305, 1, 0, 0, 0, 313, 1312, 1, 0, 0, 0, 315, 1318, 1, 0, 0, 0, 317, 1327, 1, 0, 0, 0, 319, 1334, 1, 0, 0, 0, 321, 1339, 1, 0, 0, 0, 323, 1344, 1, 0, 0, 0, 325, 1352, 1, 0, 0, 0, 327, 1360, 1, 0, 0, 0, 329, 1365, 1, 0, 0, 0, 331, 1370, 1, 0, 0, 0, 333, 1380, 1, 0, 0, 0, 335, 1389, 1, 0, 0, 0, 337, 1396, 1, 0, 0, 0, 339, 1401, 1, 0, 0, 0, 341, 1407, 1, 0, 0, 0, 343, 1413, 1, 0, 0, 0, 345, 1417, 1, 0, 0, 0, 347, 1421, 1, 0, 0, 0, 349, 1432, 1, 0, 0, 0, 351, 1441, 1, 0, 0, 0, 353, 1445, 1, 0, 0, 0, 355, 1449, 1, 0, 0, 0, 357, 1454, 1, 0, 0, 0, 359, 1459, 1, 0, 0, 0, 361, 1466, 1, 0, 0, 0, 363, 1477, 1, 0, 0, 0, 365, 1485, 1, 0, 0, 0, 367, 1496, 1, 0, 0, 0, 369, 1503, 1, 0, 0, 0, 371, 1515, 1, 0, 0, 0, 373, 1521, 1, 0, 0, 0, 375, 1563, 1, 0, 0, 0, 377, 1583, 1, 0, 0, 0, 379, 1603, 1, 0, 0, 0, 381, 1605, 1, 0, 0, 0, 383, 1610, 1, 0, 0, 0, 385, 1648, 1, 0, 0, 0, 387, 1653, 1, 0, 0, 0, 389, 390, 5, 33, 0, 0, 390, 2, 1, 0, 0, 0, 391, 392, 5, 94, 0, 0, 392, 4, 1, 0, 0, 0, 393, 394, 5, 45, 0, 0, 394, 6, 1, 0, 0, 0, 395, 396, 5, 43, 0, 0, 396, 8, 1, 0, 0, 0, 397, 398, 5, 42, 0, 0, 398, 10, 1, 0, 0, 0, 399, 400, 5, 46, 0, 0, 400, 401, 5, 46, 0, 0, 401, 402, 5, 46, 0, 0, 402, 12, 1, 0, 0, 0, 403, 404, 5, 8230, 0, 0, 404, 14, 1, 0, 0, 0, 405, 406, 5, 47, 0, 0, 406, 16, 1, 0, 0, 0, 407, 408, 5, 109, 0, 0, 408, 409, 5, 111, 0, 0, 409, 410, 5, 100, 0, 0, 410, 18, 1, 0, 0, 0, 411, 412, 5, 105, 0, 0, 412, 413, 5, 110, 0, 0, 413, 414, 5, 116, 0, 0, 414, 415, 5, 101, 0, 0, 415, 416, 5, 114, 0, 0, 416, 417, 5, 115, 0, 0, 417, 418, 5, 101, 0, 0, 418, 419, 5, 99, 0, 0, 419, 420, 5, 116, 0, 0, 420, 20, 1, 0, 0, 0, 421, 422, 5, 47, 0, 0, 422, 423, 5, 92, 0, 0, 423, 22, 1, 0, 0, 0, 424, 425, 5, 117, 0, 0, 425, 426, 5, 110, 0, 0, 426, 427, 5, 105, 0, 0, 427, 428, 5, 116, 0, 0, 428, 429, 5, 101, 0, 0, 429, 24, 1, 0, 0, 0, 430, 431, 5, 92, 0, 0, 431, 432, 5, 47, 0, 0, 432, 26, 1, 0, 0, 0, 433, 434, 5, 115, 0, 0, 434, 435, 5, 101, 0, 0, 435, 436, 5, 116, 0, 0, 436, 437, 5, 115, 0, 0, 437, 438, 5, 117, 0, 0, 438, 439, 5, 98, 0, 0, 439, 440, 5, 116, 0, 0, 440, 441, 5, 114, 0, 0, 441, 442, 5, 97, 0, 0, 442, 443, 5, 99, 0, 0, 443, 444, 5, 116, 0, 0, 444, 28, 1, 0, 0, 0, 445, 446, 5, 92, 0, 0, 446, 30, 1, 0, 0, 0, 447, 448, 5, 105, 0, 0, 448, 449, 5, 110, 0, 0, 449, 32, 1, 0, 0, 0, 450, 451, 5, 115, 0, 0, 451, 452, 5, 117, 0, 0, 452, 453, 5, 98, 0, 0, 453, 454, 5, 115, 0, 0, 454, 455, 5, 101, 0, 0, 455, 456, 5, 116, 0, 0, 456, 34, 1, 0, 0, 0, 457, 458, 5, 8838, 0, 0, 458, 36, 1, 0, 0, 0, 459, 460, 5, 115, 0, 0, 460, 461, 5, 117, 0, 0, 461, 462, 5, 112, 0, 0, 462, 463, 5, 101, 0, 0, 463, 464, 5, 114, 0, 0, 464, 465, 5, 115, 0, 0, 465, 466, 5, 101, 0, 0, 466, 467, 5, 116, 0, 0, 467, 38, 1, 0, 0, 0, 468, 469, 5, 8839, 0, 0, 469, 40, 1, 0, 0, 0, 470, 471, 5, 100, 0, 0, 471, 472, 5, 105, 0, 0, 472, 473, 5, 118, 0, 0, 473, 474, 5, 105, 0, 0, 474, 475, 5, 100, 0, 0, 475, 476, 5, 101, 0, 0, 476, 477, 5, 115, 0, 0, 477, 42, 1, 0, 0, 0, 478, 479, 5, 124, 0, 0, 479, 44, 1, 0, 0, 0, 480, 481, 5, 62, 0, 0, 481, 482, 5, 61, 0, 0, 482, 46, 1, 0, 0, 0, 483, 484, 5, 60, 0, 0, 484, 485, 5, 61, 0, 0, 485, 48, 1, 0, 0, 0, 486, 487, 5, 62, 0, 0, 487, 50, 1, 0, 0, 0, 488, 489, 5, 60, 0, 0, 489, 52, 1, 0, 0, 0, 490, 491, 5, 61, 0, 0, 491, 54, 1, 0, 0, 0, 492, 493, 5, 60, 0, 0, 493, 494, 5, 62, 0, 0, 494, 56, 1, 0, 0, 0, 495, 496, 5, 8801, 0, 0, 496, 58, 1, 0, 0, 0, 497, 498, 5, 40, 0, 0, 498, 60, 1, 0, 0, 0, 499, 500, 5, 41, 0, 0, 500, 62, 1, 0, 0, 0, 501, 502, 5, 110, 0, 0, 502, 503, 5, 111, 0, 0, 503, 504, 5, 116, 0, 0, 504, 64, 1, 0, 0, 0, 505, 506, 5, 97, 0, 0, 506, 507, 5, 110, 0, 0, 507, 508, 5, 100, 0, 0, 508, 66, 1, 0, 0, 0, 509, 510, 5, 38, 0, 0, 510, 68, 1, 0, 0, 0, 511, 512, 5, 120, 0, 0, 512, 513, 5, 111, 0, 0, 513, 514, 5, 114, 0, 0, 514, 70, 1, 0, 0, 0, 515, 516, 5, 111, 0, 0, 516, 517, 5, 114, 0, 0, 517, 72, 1, 0, 0, 0, 518, 519, 5, 105, 0, 0, 519, 520, 5, 109, 0, 0, 520, 521, 5, 112, 0, 0, 521, 522, 5, 108, 0, 0, 522, 523, 5, 105, 0, 0, 523, 524, 5, 101, 0, 0, 524, 525, 5, 115, 0, 0, 525, 74, 1, 0, 0, 0, 526, 527, 5, 45, 0, 0, 527, 528, 5, 62, 0, 0, 528, 76, 1, 0, 0, 0, 529, 530, 5, 112, 0, 0, 530, 531, 5, 114, 0, 0, 531, 532, 5, 111, 0, 0, 532, 533, 5, 118, 0, 0, 533, 534, 5, 105, 0, 0, 534, 535, 5, 100, 0, 0, 535, 536, 5, 101, 0, 0, 536, 537, 5, 100, 0, 0, 537, 78, 1, 0, 0, 0, 538, 539, 5, 61, 0, 0, 539, 540, 5, 62, 0, 0, 540, 80, 1, 0, 0, 0, 541, 542, 5, 58, 0, 0, 542, 82, 1, 0, 0, 0, 543, 544, 5, 102, 0, 0, 544, 545, 5, 111, 0, 0, 545, 546, 5, 114, 0, 0, 546, 547, 5, 97, 0, 0, 547, 548, 5, 108, 0, 0, 548, 549, 5, 108, 0, 0, 549, 84, 1, 0, 0, 0, 550, 551, 5, 8704, 0, 0, 551, 86, 1, 0, 0, 0, 552, 553, 5, 101, 0, 0, 553, 554, 5, 120, 0, 0, 554, 555, 5, 105, 0, 0, 555, 556, 5, 115, 0, 0, 556, 557, 5, 116, 0, 0, 557, 558, 5, 115, 0, 0, 558, 559, 5, 33, 0, 0, 559, 88, 1, 0, 0, 0, 560, 561, 5, 8707, 0, 0, 561, 562, 5, 33, 0, 0, 562, 90, 1, 0, 0, 0, 563, 564, 5, 101, 0, 0, 564, 565, 5, 120, 0, 0, 565, 566, 5, 105, 0, 0, 566, 567, 5, 115, 0, 0, 567, 568, 5, 116, 0, 0, 568, 569, 5, 115, 0, 0, 569, 92, 1, 0, 0, 0, 570, 571, 5, 8707, 0, 0, 571, 94, 1, 0, 0, 0, 572, 573, 5, 44, 0, 0, 573, 96, 1, 0, 0, 0, 574, 575, 5, 59, 0, 0, 575, 98, 1, 0, 0, 0, 576, 577, 5, 43, 0, 0, 577, 578, 5, 111, 0, 0, 578, 579, 5, 111, 0, 0, 579, 100, 1, 0, 0, 0, 580, 581, 5, 45, 0, 0, 581, 582, 5, 111, 0, 0, 582, 583, 5, 111, 0, 0, 583, 102, 1, 0, 0, 0, 584, 585, 5, 40, 0, 0, 585, 586, 5, 124, 0, 0, 586, 104, 1, 0, 0, 0, 587, 588, 5, 124, 0, 0, 588, 589, 5, 41, 0, 0, 589, 106, 1, 0, 0, 0, 590, 591, 5, 35, 0, 0, 591, 108, 1, 0, 0, 0, 592, 593, 5, 91, 0, 0, 593, 110, 1, 0, 0, 0, 594, 595, 5, 93, 0, 0, 595, 596, 5, 84, 0, 0, 596, 112, 1, 0, 0, 0, 597, 598, 5, 93, 0, 0, 598, 114, 1, 0, 0, 0, 599, 600, 5, 123, 0, 0, 600, 116, 1, 0, 0, 0, 601, 602, 5, 125, 0, 0, 602, 118, 1, 0, 0, 0, 603, 604, 5, 108, 0, 0, 604, 605, 5, 111, 0, 0, 605, 606, 5, 103, 0, 0, 606, 607, 5, 40, 0, 0, 607, 120, 1, 0, 0, 0, 608, 609, 5, 108, 0, 0, 609, 610, 5, 111, 0, 0, 610, 611, 5, 103, 0, 0, 611, 612, 5, 49, 0, 0, 612, 613, 5, 48, 0, 0, 613, 614, 5, 40, 0, 0, 614, 122, 1, 0, 0, 0, 615, 616, 5, 108, 0, 0, 616, 617, 5, 111, 0, 0, 617, 618, 5, 103, 0, 0, 618, 619, 5, 50, 0, 0, 619, 620, 5, 40, 0, 0, 620, 124, 1, 0, 0, 0, 621, 622, 5, 112, 0, 0, 622, 623, 5, 111, 0, 0, 623, 624, 5, 119, 0, 0, 624, 625, 5, 40, 0, 0, 625, 126, 1, 0, 0, 0, 626, 627, 5, 115, 0, 0, 627, 628, 5, 113, 0, 0, 628, 629, 5, 114, 0, 0, 629, 630, 5, 116, 0, 0, 630, 631, 5, 40, 0, 0, 631, 128, 1, 0, 0, 0, 632, 633, 5, 99, 0, 0, 633, 634, 5, 98, 0, 0, 634, 635, 5, 114, 0, 0, 635, 636, 5, 116, 0, 0, 636, 637, 5, 40, 0, 0, 637, 130, 1, 0, 0, 0, 638, 639, 5, 115, 0, 0, 639, 640, 5, 113, 0, 0, 640, 641, 5, 114, 0, 0, 641, 642, 5, 40, 0, 0, 642, 132, 1, 0, 0, 0, 643, 644, 5, 108, 0, 0, 644, 645, 5, 110, 0, 0, 645, 646, 5, 40, 0, 0, 646, 134, 1, 0, 0, 0, 647, 648, 5, 101, 0, 0, 648, 649, 5, 120, 0, 0, 649, 650, 5, 112, 0, 0, 650, 651, 5, 40, 0, 0, 651, 136, 1, 0, 0, 0, 652, 653, 5, 115, 0, 0, 653, 654, 5, 105, 0, 0, 654, 655, 5, 110, 0, 0, 655, 656, 5, 40, 0, 0, 656, 138, 1, 0, 0, 0, 657, 658, 5, 99, 0, 0, 658, 659, 5, 111, 0, 0, 659, 660, 5, 115, 0, 0, 660, 661, 5, 40, 0, 0, 661, 140, 1, 0, 0, 0, 662, 663, 5, 116, 0, 0, 663, 664, 5, 97, 0, 0, 664, 665, 5, 110, 0, 0, 665, 666, 5, 40, 0, 0, 666, 142, 1, 0, 0, 0, 667, 668, 5, 99, 0, 0, 668, 669, 5, 111, 0, 0, 669, 670, 5, 116, 0, 0, 670, 671, 5, 97, 0, 0, 671, 672, 5, 110, 0, 0, 672, 673, 5, 40, 0, 0, 673, 144, 1, 0, 0, 0, 674, 675, 5, 99, 0, 0, 675, 676, 5, 111, 0, 0, 676, 677, 5, 116, 0, 0, 677, 678, 5, 40, 0, 0, 678, 146, 1, 0, 0, 0, 679, 680, 5, 115, 0, 0, 680, 681, 5, 101, 0, 0, 681, 682, 5, 99, 0, 0, 682, 683, 5, 40, 0, 0, 683, 148, 1, 0, 0, 0, 684, 685, 5, 99, 0, 0, 685, 686, 5, 111, 0, 0, 686, 687, 5, 115, 0, 0, 687, 688, 5, 101, 0, 0, 688, 689, 5, 99, 0, 0, 689, 690, 5, 40, 0, 0, 690, 150, 1, 0, 0, 0, 691, 692, 5, 99, 0, 0, 692, 693, 5, 115, 0, 0, 693, 694, 5, 99, 0, 0, 694, 695, 5, 40, 0, 0, 695, 152, 1, 0, 0, 0, 696, 697, 5, 97, 0, 0, 697, 698, 5, 114, 0, 0, 698, 699, 5, 99, 0, 0, 699, 700, 5, 115, 0, 0, 700, 701, 5, 105, 0, 0, 701, 702, 5, 110, 0, 0, 702, 703, 5, 40, 0, 0, 703, 154, 1, 0, 0, 0, 704, 705, 5, 97, 0, 0, 705, 706, 5, 114, 0, 0, 706, 707, 5, 99, 0, 0, 707, 708, 5, 99, 0, 0, 708, 709, 5, 111, 0, 0, 709, 710, 5, 115, 0, 0, 710, 711, 5, 40, 0, 0, 711, 156, 1, 0, 0, 0, 712, 713, 5, 97, 0, 0, 713, 714, 5, 114, 0, 0, 714, 715, 5, 99, 0, 0, 715, 716, 5, 116, 0, 0, 716, 717, 5, 97, 0, 0, 717, 718, 5, 110, 0, 0, 718, 719, 5, 40, 0, 0, 719, 158, 1, 0, 0, 0, 720, 721, 5, 97, 0, 0, 721, 722, 5, 114, 0, 0, 722, 723, 5, 99, 0, 0, 723, 724, 5, 99, 0, 0, 724, 725, 5, 111, 0, 0, 725, 726, 5, 116, 0, 0, 726, 727, 5, 97, 0, 0, 727, 728, 5, 110, 0, 0, 728, 729, 5, 40, 0, 0, 729, 160, 1, 0, 0, 0, 730, 731, 5, 97, 0, 0, 731, 732, 5, 114, 0, 0, 732, 733, 5, 99, 0, 0, 733, 734, 5, 115, 0, 0, 734, 735, 5, 101, 0, 0, 735, 736, 5, 99, 0, 0, 736, 737, 5, 40, 0, 0, 737, 162, 1, 0, 0, 0, 738, 739, 5, 97, 0, 0, 739, 740, 5, 114, 0, 0, 740, 741, 5, 99, 0, 0, 741, 742, 5, 99, 0, 0, 742, 743, 5, 111, 0, 0, 743, 744, 5, 115, 0, 0, 744, 745, 5, 101, 0, 0, 745, 746, 5, 99, 0, 0, 746, 747, 5, 40, 0, 0, 747, 164, 1, 0, 0, 0, 748, 749, 5, 97, 0, 0, 749, 750, 5, 114, 0, 0, 750, 751, 5, 99, 0, 0, 751, 752, 5, 99, 0, 0, 752, 753, 5, 115, 0, 0, 753, 754, 5, 99, 0, 0, 754, 755, 5, 40, 0, 0, 755, 166, 1, 0, 0, 0, 756, 757, 5, 97, 0, 0, 757, 758, 5, 99, 0, 0, 758, 759, 5, 115, 0, 0, 759, 760, 5, 99, 0, 0, 760, 761, 5, 40, 0, 0, 761, 168, 1, 0, 0, 0, 762, 763, 5, 97, 0, 0, 763, 764, 5, 115, 0, 0, 764, 765, 5, 105, 0, 0, 765, 766, 5, 110, 0, 0, 766, 767, 5, 40, 0, 0, 767, 170, 1, 0, 0, 0, 768, 769, 5, 97, 0, 0, 769, 770, 5, 99, 0, 0, 770, 771, 5, 111, 0, 0, 771, 772, 5, 115, 0, 0, 772, 773, 5, 40, 0, 0, 773, 172, 1, 0, 0, 0, 774, 775, 5, 97, 0, 0, 775, 776, 5, 116, 0, 0, 776, 777, 5, 97, 0, 0, 777, 778, 5, 110, 0, 0, 778, 779, 5, 40, 0, 0, 779, 174, 1, 0, 0, 0, 780, 781, 5, 97, 0, 0, 781, 782, 5, 99, 0, 0, 782, 783, 5, 111, 0, 0, 783, 784, 5, 116, 0, 0, 784, 785, 5, 97, 0, 0, 785, 786, 5, 110, 0, 0, 786, 787, 5, 40, 0, 0, 787, 176, 1, 0, 0, 0, 788, 789, 5, 97, 0, 0, 789, 790, 5, 115, 0, 0, 790, 791, 5, 101, 0, 0, 791, 792, 5, 99, 0, 0, 792, 793, 5, 40, 0, 0, 793, 178, 1, 0, 0, 0, 794, 795, 5, 97, 0, 0, 795, 796, 5, 99, 0, 0, 796, 797, 5, 111, 0, 0, 797, 798, 5, 115, 0, 0, 798, 799, 5, 101, 0, 0, 799, 800, 5, 99, 0, 0, 800, 801, 5, 40, 0, 0, 801, 180, 1, 0, 0, 0, 802, 803, 5, 97, 0, 0, 803, 804, 5, 99, 0, 0, 804, 805, 5, 111, 0, 0, 805, 806, 5, 116, 0, 0, 806, 807, 5, 40, 0, 0, 807, 182, 1, 0, 0, 0, 808, 809, 5, 97, 0, 0, 809, 810, 5, 114, 0, 0, 810, 811, 5, 99, 0, 0, 811, 812, 5, 99, 0, 0, 812, 813, 5, 111, 0, 0, 813, 814, 5, 116, 0, 0, 814, 815, 5, 40, 0, 0, 815, 184, 1, 0, 0, 0, 816, 817, 5, 115, 0, 0, 817, 818, 5, 105, 0, 0, 818, 819, 5, 110, 0, 0, 819, 820, 5, 104, 0, 0, 820, 821, 5, 40, 0, 0, 821, 186, 1, 0, 0, 0, 822, 823, 5, 115, 0, 0, 823, 824, 5, 104, 0, 0, 824, 825, 5, 40, 0, 0, 825, 188, 1, 0, 0, 0, 826, 827, 5, 99, 0, 0, 827, 828, 5, 111, 0, 0, 828, 829, 5, 115, 0, 0, 829, 830, 5, 104, 0, 0, 830, 831, 5, 40, 0, 0, 831, 190, 1, 0, 0, 0, 832, 833, 5, 99, 0, 0, 833, 834, 5, 104, 0, 0, 834, 835, 5, 40, 0, 0, 835, 192, 1, 0, 0, 0, 836, 837, 5, 116, 0, 0, 837, 838, 5, 97, 0, 0, 838, 839, 5, 110, 0, 0, 839, 840, 5, 104, 0, 0, 840, 841, 5, 40, 0, 0, 841, 194, 1, 0, 0, 0, 842, 843, 5, 116, 0, 0, 843, 844, 5, 104, 0, 0, 844, 845, 5, 40, 0, 0, 845, 196, 1, 0, 0, 0, 846, 847, 5, 99, 0, 0, 847, 848, 5, 111, 0, 0, 848, 849, 5, 116, 0, 0, 849, 850, 5, 97, 0, 0, 850, 851, 5, 110, 0, 0, 851, 852, 5, 104, 0, 0, 852, 853, 5, 40, 0, 0, 853, 198, 1, 0, 0, 0, 854, 855, 5, 99, 0, 0, 855, 856, 5, 111, 0, 0, 856, 857, 5, 116, 0, 0, 857, 858, 5, 104, 0, 0, 858, 859, 5, 40, 0, 0, 859, 200, 1, 0, 0, 0, 860, 861, 5, 99, 0, 0, 861, 862, 5, 116, 0, 0, 862, 863, 5, 104, 0, 0, 863, 864, 5, 40, 0, 0, 864, 202, 1, 0, 0, 0, 865, 866, 5, 115, 0, 0, 866, 867, 5, 101, 0, 0, 867, 868, 5, 99, 0, 0, 868, 869, 5, 104, 0, 0, 869, 870, 5, 40, 0, 0, 870, 204, 1, 0, 0, 0, 871, 872, 5, 115, 0, 0, 872, 873, 5, 99, 0, 0, 873, 874, 5, 104, 0, 0, 874, 875, 5, 40, 0, 0, 875, 206, 1, 0, 0, 0, 876, 877, 5, 99, 0, 0, 877, 878, 5, 111, 0, 0, 878, 879, 5, 115, 0, 0, 879, 880, 5, 101, 0, 0, 880, 881, 5, 99, 0, 0, 881, 882, 5, 104, 0, 0, 882, 883, 5, 40, 0, 0, 883, 208, 1, 0, 0, 0, 884, 885, 5, 99, 0, 0, 885, 886, 5, 115, 0, 0, 886, 887, 5, 99, 0, 0, 887, 888, 5, 104, 0, 0, 888, 889, 5, 40, 0, 0, 889, 210, 1, 0, 0, 0, 890, 891, 5, 97, 0, 0, 891, 892, 5, 115, 0, 0, 892, 893, 5, 105, 0, 0, 893, 894, 5, 110, 0, 0, 894, 895, 5, 104, 0, 0, 895, 896, 5, 40, 0, 0, 896, 212, 1, 0, 0, 0, 897, 898, 5, 97, 0, 0, 898, 899, 5, 114, 0, 0, 899, 900, 5, 115, 0, 0, 900, 901, 5, 105, 0, 0, 901, 902, 5, 110, 0, 0, 902, 903, 5, 104, 0, 0, 903, 904, 5, 40, 0, 0, 904, 214, 1, 0, 0, 0, 905, 906, 5, 97, 0, 0, 906, 907, 5, 114, 0, 0, 907, 908, 5, 115, 0, 0, 908, 909, 5, 104, 0, 0, 909, 910, 5, 40, 0, 0, 910, 216, 1, 0, 0, 0, 911, 912, 5, 97, 0, 0, 912, 913, 5, 114, 0, 0, 913, 914, 5, 99, 0, 0, 914, 915, 5, 115, 0, 0, 915, 916, 5, 105, 0, 0, 916, 917, 5, 110, 0, 0, 917, 918, 5, 104, 0, 0, 918, 919, 5, 40, 0, 0, 919, 218, 1, 0, 0, 0, 920, 921, 5, 97, 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, 220, 1, 0, 0, 0, 927, 928, 5, 97, 0, 0, 928, 929, 5, 114, 0, 0, 929, 930, 5, 99, 0, 0, 930, 931, 5, 111, 0, 0, 931, 932, 5, 115, 0, 0, 932, 933, 5, 104, 0, 0, 933, 934, 5, 40, 0, 0, 934, 222, 1, 0, 0, 0, 935, 936, 5, 97, 0, 0, 936, 937, 5, 114, 0, 0, 937, 938, 5, 99, 0, 0, 938, 939, 5, 104, 0, 0, 939, 940, 5, 40, 0, 0, 940, 224, 1, 0, 0, 0, 941, 942, 5, 97, 0, 0, 942, 943, 5, 114, 0, 0, 943, 944, 5, 99, 0, 0, 944, 945, 5, 99, 0, 0, 945, 946, 5, 111, 0, 0, 946, 947, 5, 115, 0, 0, 947, 948, 5, 104, 0, 0, 948, 949, 5, 40, 0, 0, 949, 226, 1, 0, 0, 0, 950, 951, 5, 97, 0, 0, 951, 952, 5, 116, 0, 0, 952, 953, 5, 97, 0, 0, 953, 954, 5, 110, 0, 0, 954, 955, 5, 104, 0, 0, 955, 956, 5, 40, 0, 0, 956, 228, 1, 0, 0, 0, 957, 958, 5, 97, 0, 0, 958, 959, 5, 114, 0, 0, 959, 960, 5, 116, 0, 0, 960, 961, 5, 97, 0, 0, 961, 962, 5, 110, 0, 0, 962, 963, 5, 104, 0, 0, 963, 964, 5, 40, 0, 0, 964, 230, 1, 0, 0, 0, 965, 966, 5, 97, 0, 0, 966, 967, 5, 114, 0, 0, 967, 968, 5, 116, 0, 0, 968, 969, 5, 104, 0, 0, 969, 970, 5, 40, 0, 0, 970, 232, 1, 0, 0, 0, 971, 972, 5, 97, 0, 0, 972, 973, 5, 114, 0, 0, 973, 974, 5, 99, 0, 0, 974, 975, 5, 116, 0, 0, 975, 976, 5, 97, 0, 0, 976, 977, 5, 110, 0, 0, 977, 978, 5, 104, 0, 0, 978, 979, 5, 40, 0, 0, 979, 234, 1, 0, 0, 0, 980, 981, 5, 97, 0, 0, 981, 982, 5, 99, 0, 0, 982, 983, 5, 111, 0, 0, 983, 984, 5, 116, 0, 0, 984, 985, 5, 104, 0, 0, 985, 986, 5, 40, 0, 0, 986, 236, 1, 0, 0, 0, 987, 988, 5, 97, 0, 0, 988, 989, 5, 114, 0, 0, 989, 990, 5, 99, 0, 0, 990, 991, 5, 111, 0, 0, 991, 992, 5, 116, 0, 0, 992, 993, 5, 104, 0, 0, 993, 994, 5, 40, 0, 0, 994, 238, 1, 0, 0, 0, 995, 996, 5, 97, 0, 0, 996, 997, 5, 99, 0, 0, 997, 998, 5, 111, 0, 0, 998, 999, 5, 116, 0, 0, 999, 1000, 5, 97, 0, 0, 1000, 1001, 5, 110, 0, 0, 1001, 1002, 5, 104, 0, 0, 1002, 1003, 5, 40, 0, 0, 1003, 240, 1, 0, 0, 0, 1004, 1005, 5, 97, 0, 0, 1005, 1006, 5, 114, 0, 0, 1006, 1007, 5, 99, 0, 0, 1007, 1008, 5, 111, 0, 0, 1008, 1009, 5, 116, 0, 0, 1009, 1010, 5, 97, 0, 0, 1010, 1011, 5, 110, 0, 0, 1011, 1012, 5, 104, 0, 0, 1012, 1013, 5, 40, 0, 0, 1013, 242, 1, 0, 0, 0, 1014, 1015, 5, 97, 0, 0, 1015, 1016, 5, 114, 0, 0, 1016, 1017, 5, 99, 0, 0, 1017, 1018, 5, 116, 0, 0, 1018, 1019, 5, 104, 0, 0, 1019, 1020, 5, 40, 0, 0, 1020, 244, 1, 0, 0, 0, 1021, 1022, 5, 97, 0, 0, 1022, 1023, 5, 114, 0, 0, 1023, 1024, 5, 99, 0, 0, 1024, 1025, 5, 99, 0, 0, 1025, 1026, 5, 111, 0, 0, 1026, 1027, 5, 116, 0, 0, 1027, 1028, 5, 97, 0, 0, 1028, 1029, 5, 110, 0, 0, 1029, 1030, 5, 104, 0, 0, 1030, 1031, 5, 40, 0, 0, 1031, 246, 1, 0, 0, 0, 1032, 1033, 5, 97, 0, 0, 1033, 1034, 5, 115, 0, 0, 1034, 1035, 5, 101, 0, 0, 1035, 1036, 5, 99, 0, 0, 1036, 1037, 5, 104, 0, 0, 1037, 1038, 5, 40, 0, 0, 1038, 248, 1, 0, 0, 0, 1039, 1040, 5, 97, 0, 0, 1040, 1041, 5, 114, 0, 0, 1041, 1042, 5, 115, 0, 0, 1042, 1043, 5, 101, 0, 0, 1043, 1044, 5, 99, 0, 0, 1044, 1045, 5, 104, 0, 0, 1045, 1046, 5, 40, 0, 0, 1046, 250, 1, 0, 0, 0, 1047, 1048, 5, 97, 0, 0, 1048, 1049, 5, 114, 0, 0, 1049, 1050, 5, 115, 0, 0, 1050, 1051, 5, 99, 0, 0, 1051, 1052, 5, 104, 0, 0, 1052, 1053, 5, 40, 0, 0, 1053, 252, 1, 0, 0, 0, 1054, 1055, 5, 97, 0, 0, 1055, 1056, 5, 114, 0, 0, 1056, 1057, 5, 99, 0, 0, 1057, 1058, 5, 115, 0, 0, 1058, 1059, 5, 101, 0, 0, 1059, 1060, 5, 99, 0, 0, 1060, 1061, 5, 104, 0, 0, 1061, 1062, 5, 40, 0, 0, 1062, 254, 1, 0, 0, 0, 1063, 1064, 5, 97, 0, 0, 1064, 1065, 5, 99, 0, 0, 1065, 1066, 5, 111, 0, 0, 1066, 1067, 5, 115, 0, 0, 1067, 1068, 5, 101, 0, 0, 1068, 1069, 5, 99, 0, 0, 1069, 1070, 5, 104, 0, 0, 1070, 1071, 5, 40, 0, 0, 1071, 256, 1, 0, 0, 0, 1072, 1073, 5, 97, 0, 0, 1073, 1074, 5, 114, 0, 0, 1074, 1075, 5, 99, 0, 0, 1075, 1076, 5, 111, 0, 0, 1076, 1077, 5, 115, 0, 0, 1077, 1078, 5, 101, 0, 0, 1078, 1079, 5, 99, 0, 0, 1079, 1080, 5, 104, 0, 0, 1080, 1081, 5, 40, 0, 0, 1081, 258, 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, 115, 0, 0, 1086, 1087, 5, 99, 0, 0, 1087, 1088, 5, 104, 0, 0, 1088, 1089, 5, 40, 0, 0, 1089, 260, 1, 0, 0, 0, 1090, 1091, 5, 97, 0, 0, 1091, 1092, 5, 114, 0, 0, 1092, 1093, 5, 99, 0, 0, 1093, 1094, 5, 99, 0, 0, 1094, 1095, 5, 111, 0, 0, 1095, 1096, 5, 115, 0, 0, 1096, 1097, 5, 101, 0, 0, 1097, 1098, 5, 99, 0, 0, 1098, 1099, 5, 104, 0, 0, 1099, 1100, 5, 40, 0, 0, 1100, 262, 1, 0, 0, 0, 1101, 1102, 5, 97, 0, 0, 1102, 1103, 5, 99, 0, 0, 1103, 1104, 5, 115, 0, 0, 1104, 1105, 5, 99, 0, 0, 1105, 1106, 5, 104, 0, 0, 1106, 1107, 5, 40, 0, 0, 1107, 264, 1, 0, 0, 0, 1108, 1109, 5, 102, 0, 0, 1109, 1110, 5, 97, 0, 0, 1110, 1111, 5, 99, 0, 0, 1111, 1112, 5, 116, 0, 0, 1112, 1113, 5, 111, 0, 0, 1113, 1114, 5, 114, 0, 0, 1114, 1115, 5, 105, 0, 0, 1115, 1116, 5, 97, 0, 0, 1116, 1117, 5, 108, 0, 0, 1117, 1118, 5, 40, 0, 0, 1118, 266, 1, 0, 0, 0, 1119, 1120, 5, 103, 0, 0, 1120, 1121, 5, 97, 0, 0, 1121, 1122, 5, 109, 0, 0, 1122, 1123, 5, 109, 0, 0, 1123, 1124, 5, 97, 0, 0, 1124, 1125, 5, 40, 0, 0, 1125, 268, 1, 0, 0, 0, 1126, 1127, 5, 100, 0, 0, 1127, 1128, 5, 101, 0, 0, 1128, 1129, 5, 114, 0, 0, 1129, 1130, 5, 105, 0, 0, 1130, 1131, 5, 118, 0, 0, 1131, 1132, 5, 97, 0, 0, 1132, 1133, 5, 116, 0, 0, 1133, 1134, 5, 105, 0, 0, 1134, 1135, 5, 118, 0, 0, 1135, 1136, 5, 101, 0, 0, 1136, 1137, 5, 40, 0, 0, 1137, 270, 1, 0, 0, 0, 1138, 1139, 5, 105, 0, 0, 1139, 1140, 5, 110, 0, 0, 1140, 1141, 5, 116, 0, 0, 1141, 1142, 5, 101, 0, 0, 1142, 1143, 5, 103, 0, 0, 1143, 1144, 5, 114, 0, 0, 1144, 1145, 5, 97, 0, 0, 1145, 1146, 5, 108, 0, 0, 1146, 1147, 5, 40, 0, 0, 1147, 272, 1, 0, 0, 0, 1148, 1149, 5, 108, 0, 0, 1149, 1150, 5, 105, 0, 0, 1150, 1151, 5, 109, 0, 0, 1151, 1152, 5, 105, 0, 0, 1152, 1153, 5, 116, 0, 0, 1153, 1154, 5, 40, 0, 0, 1154, 274, 1, 0, 0, 0, 1155, 1156, 5, 108, 0, 0, 1156, 1157, 5, 105, 0, 0, 1157, 1158, 5, 109, 0, 0, 1158, 1159, 5, 105, 0, 0, 1159, 1160, 5, 116, 0, 0, 1160, 1161, 5, 108, 0, 0, 1161, 1162, 5, 101, 0, 0, 1162, 1163, 5, 102, 0, 0, 1163, 1164, 5, 116, 0, 0, 1164, 1165, 5, 40, 0, 0, 1165, 276, 1, 0, 0, 0, 1166, 1167, 5, 108, 0, 0, 1167, 1168, 5, 105, 0, 0, 1168, 1169, 5, 109, 0, 0, 1169, 1170, 5, 105, 0, 0, 1170, 1171, 5, 116, 0, 0, 1171, 1172, 5, 114, 0, 0, 1172, 1173, 5, 105, 0, 0, 1173, 1174, 5, 103, 0, 0, 1174, 1175, 5, 104, 0, 0, 1175, 1176, 5, 116, 0, 0, 1176, 1177, 5, 40, 0, 0, 1177, 278, 1, 0, 0, 0, 1178, 1179, 5, 115, 0, 0, 1179, 1180, 5, 117, 0, 0, 1180, 1181, 5, 109, 0, 0, 1181, 1182, 5, 40, 0, 0, 1182, 280, 1, 0, 0, 0, 1183, 1184, 5, 112, 0, 0, 1184, 1185, 5, 114, 0, 0, 1185, 1186, 5, 111, 0, 0, 1186, 1187, 5, 100, 0, 0, 1187, 1188, 5, 117, 0, 0, 1188, 1189, 5, 99, 0, 0, 1189, 1190, 5, 116, 0, 0, 1190, 1191, 5, 40, 0, 0, 1191, 282, 1, 0, 0, 0, 1192, 1193, 5, 115, 0, 0, 1193, 1194, 5, 105, 0, 0, 1194, 1195, 5, 103, 0, 0, 1195, 1196, 5, 110, 0, 0, 1196, 1197, 5, 117, 0, 0, 1197, 1198, 5, 109, 0, 0, 1198, 1199, 5, 40, 0, 0, 1199, 284, 1, 0, 0, 0, 1200, 1201, 5, 115, 0, 0, 1201, 1202, 5, 103, 0, 0, 1202, 1203, 5, 110, 0, 0, 1203, 1204, 5, 40, 0, 0, 1204, 286, 1, 0, 0, 0, 1205, 1206, 5, 115, 0, 0, 1206, 1207, 5, 105, 0, 0, 1207, 1208, 5, 103, 0, 0, 1208, 1209, 5, 110, 0, 0, 1209, 1210, 5, 40, 0, 0, 1210, 288, 1, 0, 0, 0, 1211, 1212, 5, 97, 0, 0, 1212, 1213, 5, 98, 0, 0, 1213, 1214, 5, 115, 0, 0, 1214, 1215, 5, 40, 0, 0, 1215, 290, 1, 0, 0, 0, 1216, 1217, 5, 112, 0, 0, 1217, 1218, 5, 104, 0, 0, 1218, 1219, 5, 105, 0, 0, 1219, 1220, 5, 40, 0, 0, 1220, 292, 1, 0, 0, 0, 1221, 1222, 5, 112, 0, 0, 1222, 1223, 5, 114, 0, 0, 1223, 1224, 5, 105, 0, 0, 1224, 1225, 5, 109, 0, 0, 1225, 1226, 5, 101, 0, 0, 1226, 1227, 5, 40, 0, 0, 1227, 294, 1, 0, 0, 0, 1228, 1229, 5, 118, 0, 0, 1229, 1230, 5, 97, 0, 0, 1230, 1231, 5, 108, 0, 0, 1231, 1232, 5, 117, 0, 0, 1232, 1233, 5, 97, 0, 0, 1233, 1234, 5, 116, 0, 0, 1234, 1235, 5, 105, 0, 0, 1235, 1236, 5, 111, 0, 0, 1236, 1237, 5, 110, 0, 0, 1237, 1238, 5, 40, 0, 0, 1238, 296, 1, 0, 0, 0, 1239, 1240, 5, 99, 0, 0, 1240, 1241, 5, 97, 0, 0, 1241, 1242, 5, 114, 0, 0, 1242, 1243, 5, 100, 0, 0, 1243, 1244, 5, 40, 0, 0, 1244, 298, 1, 0, 0, 0, 1245, 1246, 5, 112, 0, 0, 1246, 1247, 5, 111, 0, 0, 1247, 1248, 5, 119, 0, 0, 1248, 1249, 5, 101, 0, 0, 1249, 1250, 5, 114, 0, 0, 1250, 1251, 5, 115, 0, 0, 1251, 1252, 5, 101, 0, 0, 1252, 1253, 5, 116, 0, 0, 1253, 1254, 5, 40, 0, 0, 1254, 300, 1, 0, 0, 0, 1255, 1256, 5, 117, 0, 0, 1256, 1257, 5, 110, 0, 0, 1257, 1258, 5, 105, 0, 0, 1258, 1259, 5, 111, 0, 0, 1259, 1260, 5, 110, 0, 0, 1260, 1261, 5, 40, 0, 0, 1261, 302, 1, 0, 0, 0, 1262, 1263, 5, 105, 0, 0, 1263, 1264, 5, 110, 0, 0, 1264, 1265, 5, 116, 0, 0, 1265, 1266, 5, 101, 0, 0, 1266, 1267, 5, 114, 0, 0, 1267, 1268, 5, 115, 0, 0, 1268, 1269, 5, 101, 0, 0, 1269, 1270, 5, 99, 0, 0, 1270, 1271, 5, 116, 0, 0, 1271, 1272, 5, 105, 0, 0, 1272, 1273, 5, 111, 0, 0, 1273, 1274, 5, 110, 0, 0, 1274, 1275, 5, 40, 0, 0, 1275, 304, 1, 0, 0, 0, 1276, 1277, 5, 99, 0, 0, 1277, 1278, 5, 111, 0, 0, 1278, 1279, 5, 109, 0, 0, 1279, 1280, 5, 112, 0, 0, 1280, 1281, 5, 108, 0, 0, 1281, 1282, 5, 101, 0, 0, 1282, 1283, 5, 109, 0, 0, 1283, 1284, 5, 101, 0, 0, 1284, 1285, 5, 110, 0, 0, 1285, 1286, 5, 116, 0, 0, 1286, 1287, 5, 40, 0, 0, 1287, 306, 1, 0, 0, 0, 1288, 1289, 5, 105, 0, 0, 1289, 1290, 5, 109, 0, 0, 1290, 1291, 5, 97, 0, 0, 1291, 1292, 5, 103, 0, 0, 1292, 1293, 5, 101, 0, 0, 1293, 1294, 5, 40, 0, 0, 1294, 308, 1, 0, 0, 0, 1295, 1296, 5, 112, 0, 0, 1296, 1297, 5, 114, 0, 0, 1297, 1298, 5, 101, 0, 0, 1298, 1299, 5, 105, 0, 0, 1299, 1300, 5, 109, 0, 0, 1300, 1301, 5, 97, 0, 0, 1301, 1302, 5, 103, 0, 0, 1302, 1303, 5, 101, 0, 0, 1303, 1304, 5, 40, 0, 0, 1304, 310, 1, 0, 0, 0, 1305, 1306, 5, 102, 0, 0, 1306, 1307, 5, 108, 0, 0, 1307, 1308, 5, 111, 0, 0, 1308, 1309, 5, 111, 0, 0, 1309, 1310, 5, 114, 0, 0, 1310, 1311, 5, 40, 0, 0, 1311, 312, 1, 0, 0, 0, 1312, 1313, 5, 99, 0, 0, 1313, 1314, 5, 101, 0, 0, 1314, 1315, 5, 105, 0, 0, 1315, 1316, 5, 108, 0, 0, 1316, 1317, 5, 40, 0, 0, 1317, 314, 1, 0, 0, 0, 1318, 1319, 5, 99, 0, 0, 1319, 1320, 5, 101, 0, 0, 1320, 1321, 5, 105, 0, 0, 1321, 1322, 5, 108, 0, 0, 1322, 1323, 5, 105, 0, 0, 1323, 1324, 5, 110, 0, 0, 1324, 1325, 5, 103, 0, 0, 1325, 1326, 5, 40, 0, 0, 1326, 316, 1, 0, 0, 0, 1327, 1328, 5, 114, 0, 0, 1328, 1329, 5, 111, 0, 0, 1329, 1330, 5, 117, 0, 0, 1330, 1331, 5, 110, 0, 0, 1331, 1332, 5, 100, 0, 0, 1332, 1333, 5, 40, 0, 0, 1333, 318, 1, 0, 0, 0, 1334, 1335, 5, 109, 0, 0, 1335, 1336, 5, 105, 0, 0, 1336, 1337, 5, 110, 0, 0, 1337, 1338, 5, 40, 0, 0, 1338, 320, 1, 0, 0, 0, 1339, 1340, 5, 109, 0, 0, 1340, 1341, 5, 97, 0, 0, 1341, 1342, 5, 120, 0, 0, 1342, 1343, 5, 40, 0, 0, 1343, 322, 1, 0, 0, 0, 1344, 1345, 5, 97, 0, 0, 1345, 1346, 5, 114, 0, 0, 1346, 1347, 5, 103, 0, 0, 1347, 1348, 5, 109, 0, 0, 1348, 1349, 5, 97, 0, 0, 1349, 1350, 5, 120, 0, 0, 1350, 1351, 5, 40, 0, 0, 1351, 324, 1, 0, 0, 0, 1352, 1353, 5, 97, 0, 0, 1353, 1354, 5, 114, 0, 0, 1354, 1355, 5, 103, 0, 0, 1355, 1356, 5, 109, 0, 0, 1356, 1357, 5, 105, 0, 0, 1357, 1358, 5, 110, 0, 0, 1358, 1359, 5, 40, 0, 0, 1359, 326, 1, 0, 0, 0, 1360, 1361, 5, 103, 0, 0, 1361, 1362, 5, 99, 0, 0, 1362, 1363, 5, 100, 0, 0, 1363, 1364, 5, 40, 0, 0, 1364, 328, 1, 0, 0, 0, 1365, 1366, 5, 108, 0, 0, 1366, 1367, 5, 99, 0, 0, 1367, 1368, 5, 109, 0, 0, 1368, 1369, 5, 40, 0, 0, 1369, 330, 1, 0, 0, 0, 1370, 1371, 5, 98, 0, 0, 1371, 1372, 5, 105, 0, 0, 1372, 1373, 5, 110, 0, 0, 1373, 1374, 5, 111, 0, 0, 1374, 1375, 5, 109, 0, 0, 1375, 1376, 5, 105, 0, 0, 1376, 1377, 5, 97, 0, 0, 1377, 1378, 5, 108, 0, 0, 1378, 1379, 5, 40, 0, 0, 1379, 332, 1, 0, 0, 0, 1380, 1381, 5, 105, 0, 0, 1381, 1382, 5, 118, 0, 0, 1382, 1383, 5, 101, 0, 0, 1383, 1384, 5, 114, 0, 0, 1384, 1385, 5, 115, 0, 0, 1385, 1386, 5, 111, 0, 0, 1386, 1387, 5, 110, 0, 0, 1387, 1388, 5, 40, 0, 0, 1388, 334, 1, 0, 0, 0, 1389, 1390, 5, 97, 0, 0, 1390, 1391, 5, 108, 0, 0, 1391, 1392, 5, 101, 0, 0, 1392, 1393, 5, 112, 0, 0, 1393, 1394, 5, 104, 0, 0, 1394, 1395, 5, 40, 0, 0, 1395, 336, 1, 0, 0, 0, 1396, 1397, 5, 101, 0, 0, 1397, 1398, 5, 114, 0, 0, 1398, 1399, 5, 102, 0, 0, 1399, 1400, 5, 40, 0, 0, 1400, 338, 1, 0, 0, 0, 1401, 1402, 5, 101, 0, 0, 1402, 1403, 5, 114, 0, 0, 1403, 1404, 5, 102, 0, 0, 1404, 1405, 5, 99, 0, 0, 1405, 1406, 5, 40, 0, 0, 1406, 340, 1, 0, 0, 0, 1407, 1408, 5, 101, 0, 0, 1408, 1409, 5, 114, 0, 0, 1409, 1410, 5, 102, 0, 0, 1410, 1411, 5, 105, 0, 0, 1411, 1412, 5, 40, 0, 0, 1412, 342, 1, 0, 0, 0, 1413, 1414, 5, 69, 0, 0, 1414, 1415, 5, 105, 0, 0, 1415, 1416, 5, 40, 0, 0, 1416, 344, 1, 0, 0, 0, 1417, 1418, 5, 108, 0, 0, 1418, 1419, 5, 105, 0, 0, 1419, 1420, 5, 40, 0, 0, 1420, 346, 1, 0, 0, 0, 1421, 1422, 5, 112, 0, 0, 1422, 1423, 5, 111, 0, 0, 1423, 1424, 5, 108, 0, 0, 1424, 1425, 5, 121, 0, 0, 1425, 1426, 5, 103, 0, 0, 1426, 1427, 5, 97, 0, 0, 1427, 1428, 5, 109, 0, 0, 1428, 1429, 5, 109, 0, 0, 1429, 1430, 5, 97, 0, 0, 1430, 1431, 5, 40, 0, 0, 1431, 348, 1, 0, 0, 0, 1432, 1433, 5, 100, 0, 0, 1433, 1434, 5, 105, 0, 0, 1434, 1435, 5, 103, 0, 0, 1435, 1436, 5, 97, 0, 0, 1436, 1437, 5, 109, 0, 0, 1437, 1438, 5, 109, 0, 0, 1438, 1439, 5, 97, 0, 0, 1439, 1440, 5, 40, 0, 0, 1440, 350, 1, 0, 0, 0, 1441, 1442, 5, 83, 0, 0, 1442, 1443, 5, 105, 0, 0, 1443, 1444, 5, 40, 0, 0, 1444, 352, 1, 0, 0, 0, 1445, 1446, 5, 67, 0, 0, 1446, 1447, 5, 105, 0, 0, 1447, 1448, 5, 40, 0, 0, 1448, 354, 1, 0, 0, 0, 1449, 1450, 5, 83, 0, 0, 1450, 1451, 5, 104, 0, 0, 1451, 1452, 5, 105, 0, 0, 1452, 1453, 5, 40, 0, 0, 1453, 356, 1, 0, 0, 0, 1454, 1455, 5, 67, 0, 0, 1455, 1456, 5, 104, 0, 0, 1456, 1457, 5, 105, 0, 0, 1457, 1458, 5, 40, 0, 0, 1458, 358, 1, 0, 0, 0, 1459, 1460, 5, 116, 0, 0, 1460, 1461, 5, 114, 0, 0, 1461, 1462, 5, 117, 0, 0, 1462, 1463, 5, 110, 0, 0, 1463, 1464, 5, 99, 0, 0, 1464, 1465, 5, 40, 0, 0, 1465, 360, 1, 0, 0, 0, 1466, 1467, 5, 99, 0, 0, 1467, 1468, 5, 111, 0, 0, 1468, 1469, 5, 110, 0, 0, 1469, 1470, 5, 106, 0, 0, 1470, 1471, 5, 117, 0, 0, 1471, 1472, 5, 103, 0, 0, 1472, 1473, 5, 97, 0, 0, 1473, 1474, 5, 116, 0, 0, 1474, 1475, 5, 101, 0, 0, 1475, 1476, 5, 40, 0, 0, 1476, 362, 1, 0, 0, 0, 1477, 1478, 5, 100, 0, 0, 1478, 1479, 5, 111, 0, 0, 1479, 1480, 5, 109, 0, 0, 1480, 1481, 5, 97, 0, 0, 1481, 1482, 5, 105, 0, 0, 1482, 1483, 5, 110, 0, 0, 1483, 1484, 5, 40, 0, 0, 1484, 364, 1, 0, 0, 0, 1485, 1486, 5, 112, 0, 0, 1486, 1487, 5, 105, 0, 0, 1487, 1488, 5, 101, 0, 0, 1488, 1489, 5, 99, 0, 0, 1489, 1490, 5, 101, 0, 0, 1490, 1491, 5, 119, 0, 0, 1491, 1492, 5, 105, 0, 0, 1492, 1493, 5, 115, 0, 0, 1493, 1494, 5, 101, 0, 0, 1494, 1495, 5, 40, 0, 0, 1495, 366, 1, 0, 0, 0, 1496, 1497, 5, 97, 0, 0, 1497, 1498, 5, 112, 0, 0, 1498, 1499, 5, 112, 0, 0, 1499, 1500, 5, 108, 0, 0, 1500, 1501, 5, 121, 0, 0, 1501, 1502, 5, 40, 0, 0, 1502, 368, 1, 0, 0, 0, 1503, 1504, 5, 108, 0, 0, 1504, 1505, 5, 97, 0, 0, 1505, 1506, 5, 109, 0, 0, 1506, 1507, 5, 98, 0, 0, 1507, 1508, 5, 100, 0, 0, 1508, 1509, 5, 97, 0, 0, 1509, 1510, 5, 40, 0, 0, 1510, 370, 1, 0, 0, 0, 1511, 1513, 5, 13, 0, 0, 1512, 1511, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1516, 5, 10, 0, 0, 1515, 1512, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 6, 185, 0, 0, 1520, 372, 1, 0, 0, 0, 1521, 1523, 7, 0, 0, 0, 1522, 1524, 7, 1, 0, 0, 1523, 1522, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1526, 1, 0, 0, 0, 1525, 1527, 2, 48, 57, 0, 1526, 1525, 1, 0, 0, 0, 1527, 1528, 1, 0, 0, 0, 1528, 1526, 1, 0, 0, 0, 1528, 1529, 1, 0, 0, 0, 1529, 374, 1, 0, 0, 0, 1530, 1532, 2, 48, 57, 0, 1531, 1530, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1531, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1535, 1, 0, 0, 0, 1535, 1539, 5, 46, 0, 0, 1536, 1538, 2, 48, 57, 0, 1537, 1536, 1, 0, 0, 0, 1538, 1541, 1, 0, 0, 0, 1539, 1537, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1543, 1, 0, 0, 0, 1541, 1539, 1, 0, 0, 0, 1542, 1544, 3, 373, 186, 0, 1543, 1542, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1546, 1, 0, 0, 0, 1545, 1547, 5, 105, 0, 0, 1546, 1545, 1, 0, 0, 0, 1546, 1547, 1, 0, 0, 0, 1547, 1564, 1, 0, 0, 0, 1548, 1550, 5, 46, 0, 0, 1549, 1548, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1553, 2, 48, 57, 0, 1552, 1551, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1552, 1, 0, 0, 0, 1554, 1555, 1, 0, 0, 0, 1555, 1557, 1, 0, 0, 0, 1556, 1558, 3, 373, 186, 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1560, 1, 0, 0, 0, 1559, 1561, 5, 105, 0, 0, 1560, 1559, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1564, 1, 0, 0, 0, 1562, 1564, 5, 105, 0, 0, 1563, 1531, 1, 0, 0, 0, 1563, 1549, 1, 0, 0, 0, 1563, 1562, 1, 0, 0, 0, 1564, 376, 1, 0, 0, 0, 1565, 1566, 5, 67, 0, 0, 1566, 1584, 5, 67, 0, 0, 1567, 1568, 5, 82, 0, 0, 1568, 1584, 5, 82, 0, 0, 1569, 1570, 5, 81, 0, 0, 1570, 1584, 5, 81, 0, 0, 1571, 1572, 5, 90, 0, 0, 1572, 1584, 5, 90, 0, 0, 1573, 1574, 5, 66, 0, 0, 1574, 1584, 5, 66, 0, 0, 1575, 1576, 5, 90, 0, 0, 1576, 1577, 5, 90, 0, 0, 1577, 1584, 5, 42, 0, 0, 1578, 1579, 5, 90, 0, 0, 1579, 1580, 5, 90, 0, 0, 1580, 1584, 5, 43, 0, 0, 1581, 1582, 5, 80, 0, 0, 1582, 1584, 5, 80, 0, 0, 1583, 1565, 1, 0, 0, 0, 1583, 1567, 1, 0, 0, 0, 1583, 1569, 1, 0, 0, 0, 1583, 1571, 1, 0, 0, 0, 1583, 1573, 1, 0, 0, 0, 1583, 1575, 1, 0, 0, 0, 1583, 1578, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1584, 378, 1, 0, 0, 0, 1585, 1586, 5, 116, 0, 0, 1586, 1587, 5, 114, 0, 0, 1587, 1588, 5, 117, 0, 0, 1588, 1604, 5, 101, 0, 0, 1589, 1590, 5, 84, 0, 0, 1590, 1591, 5, 114, 0, 0, 1591, 1592, 5, 117, 0, 0, 1592, 1604, 5, 101, 0, 0, 1593, 1594, 5, 102, 0, 0, 1594, 1595, 5, 97, 0, 0, 1595, 1596, 5, 108, 0, 0, 1596, 1597, 5, 115, 0, 0, 1597, 1604, 5, 101, 0, 0, 1598, 1599, 5, 70, 0, 0, 1599, 1600, 5, 97, 0, 0, 1600, 1601, 5, 108, 0, 0, 1601, 1602, 5, 115, 0, 0, 1602, 1604, 5, 101, 0, 0, 1603, 1585, 1, 0, 0, 0, 1603, 1589, 1, 0, 0, 0, 1603, 1593, 1, 0, 0, 0, 1603, 1598, 1, 0, 0, 0, 1604, 380, 1, 0, 0, 0, 1605, 1606, 5, 78, 0, 0, 1606, 1607, 5, 97, 0, 0, 1607, 1608, 5, 78, 0, 0, 1608, 382, 1, 0, 0, 0, 1609, 1611, 7, 2, 0, 0, 1610, 1609, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1610, 1, 0, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 1620, 1, 0, 0, 0, 1614, 1616, 5, 95, 0, 0, 1615, 1617, 7, 3, 0, 0, 1616, 1615, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1616, 1, 0, 0, 0, 1618, 1619, 1, 0, 0, 0, 1619, 1621, 1, 0, 0, 0, 1620, 1614, 1, 0, 0, 0, 1620, 1621, 1, 0, 0, 0, 1621, 384, 1, 0, 0, 0, 1622, 1623, 5, 47, 0, 0, 1623, 1624, 5, 47, 0, 0, 1624, 1628, 1, 0, 0, 0, 1625, 1627, 8, 4, 0, 0, 1626, 1625, 1, 0, 0, 0, 1627, 1630, 1, 0, 0, 0, 1628, 1626, 1, 0, 0, 0, 1628, 1629, 1, 0, 0, 0, 1629, 1635, 1, 0, 0, 0, 1630, 1628, 1, 0, 0, 0, 1631, 1633, 5, 13, 0, 0, 1632, 1631, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 5, 10, 0, 0, 1635, 1632, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1649, 1, 0, 0, 0, 1637, 1638, 5, 47, 0, 0, 1638, 1639, 5, 42, 0, 0, 1639, 1643, 1, 0, 0, 0, 1640, 1642, 9, 0, 0, 0, 1641, 1640, 1, 0, 0, 0, 1642, 1645, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1643, 1641, 1, 0, 0, 0, 1644, 1646, 1, 0, 0, 0, 1645, 1643, 1, 0, 0, 0, 1646, 1647, 5, 42, 0, 0, 1647, 1649, 5, 47, 0, 0, 1648, 1622, 1, 0, 0, 0, 1648, 1637, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1651, 6, 192, 0, 0, 1651, 386, 1, 0, 0, 0, 1652, 1654, 7, 5, 0, 0, 1653, 1652, 1, 0, 0, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1653, 1, 0, 0, 0, 1655, 1656, 1, 0, 0, 0, 1656, 1657, 1, 0, 0, 0, 1657, 1658, 6, 193, 0, 0, 1658, 388, 1, 0, 0, 0, 25, 0, 1512, 1517, 1523, 1528, 1533, 1539, 1543, 1546, 1549, 1554, 1557, 1560, 1563, 1583, 1603, 1612, 1618, 1620, 1628, 1632, 1635, 1643, 1648, 1655, 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 d3b5bc330..5539119a5 100644
--- a/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.tokens
+++ b/Sources/AngouriMath/Core/Antlr/AngouriMathLexer.tokens
@@ -181,14 +181,16 @@ T__179=180
T__180=181
T__181=182
T__182=183
-NEWLINE=184
-NUMBER=185
-SPECIALSET=186
-BOOLEAN=187
-NAN=188
-VARIABLE=189
-COMMENT=190
-WS=191
+T__183=184
+T__184=185
+NEWLINE=186
+NUMBER=187
+SPECIALSET=188
+BOOLEAN=189
+NAN=190
+VARIABLE=191
+COMMENT=192
+WS=193
'!'=1
'^'=2
'-'=3
@@ -362,14 +364,16 @@ WS=191
'erfi('=171
'Ei('=172
'li('=173
-'Si('=174
-'Ci('=175
-'Shi('=176
-'Chi('=177
-'trunc('=178
-'conjugate('=179
-'domain('=180
-'piecewise('=181
-'apply('=182
-'lambda('=183
-'NaN'=188
+'polygamma('=174
+'digamma('=175
+'Si('=176
+'Ci('=177
+'Shi('=178
+'Chi('=179
+'trunc('=180
+'conjugate('=181
+'domain('=182
+'piecewise('=183
+'apply('=184
+'lambda('=185
+'NaN'=190
diff --git a/Sources/AngouriMath/Core/Antlr/AngouriMathParser.cs b/Sources/AngouriMath/Core/Antlr/AngouriMathParser.cs
index 1e11d2dc1..0afd596d3 100644
--- a/Sources/AngouriMath/Core/Antlr/AngouriMathParser.cs
+++ b/Sources/AngouriMath/Core/Antlr/AngouriMathParser.cs
@@ -73,8 +73,9 @@ public const int
T__161=162, T__162=163, T__163=164, T__164=165, T__165=166, T__166=167,
T__167=168, T__168=169, T__169=170, T__170=171, T__171=172, T__172=173,
T__173=174, T__174=175, T__175=176, T__176=177, T__177=178, T__178=179,
- T__179=180, T__180=181, T__181=182, T__182=183, NEWLINE=184, NUMBER=185,
- SPECIALSET=186, BOOLEAN=187, NAN=188, VARIABLE=189, COMMENT=190, WS=191;
+ T__179=180, T__180=181, T__181=182, T__182=183, T__183=184, T__184=185,
+ NEWLINE=186, NUMBER=187, SPECIALSET=188, BOOLEAN=189, NAN=190, VARIABLE=191,
+ COMMENT=192, WS=193;
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,
@@ -122,8 +123,9 @@ public const int
"'preimage('", "'floor('", "'ceil('", "'ceiling('", "'round('", "'min('",
"'max('", "'argmax('", "'argmin('", "'gcd('", "'lcm('", "'binomial('",
"'iverson('", "'aleph('", "'erf('", "'erfc('", "'erfi('", "'Ei('", "'li('",
- "'Si('", "'Ci('", "'Shi('", "'Chi('", "'trunc('", "'conjugate('", "'domain('",
- "'piecewise('", "'apply('", "'lambda('", null, null, null, null, "'NaN'"
+ "'polygamma('", "'digamma('", "'Si('", "'Ci('", "'Shi('", "'Chi('", "'trunc('",
+ "'conjugate('", "'domain('", "'piecewise('", "'apply('", "'lambda('",
+ null, null, null, null, "'NaN'"
};
private static readonly string[] _SymbolicNames = {
null, null, null, null, null, null, null, null, null, null, null, null,
@@ -141,8 +143,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,
- null, null, null, null, "NEWLINE", "NUMBER", "SPECIALSET", "BOOLEAN",
- "NAN", "VARIABLE", "COMMENT", "WS"
+ null, null, null, null, null, null, "NEWLINE", "NUMBER", "SPECIALSET",
+ "BOOLEAN", "NAN", "VARIABLE", "COMMENT", "WS"
};
public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
@@ -751,6 +753,8 @@ public Mult_expressionContext mult_expression() {
case T__180:
case T__181:
case T__182:
+ case T__183:
+ case T__184:
case NUMBER:
case SPECIALSET:
case BOOLEAN:
@@ -1009,6 +1013,8 @@ public Sum_expressionContext sum_expression() {
case T__180:
case T__181:
case T__182:
+ case T__183:
+ case T__184:
case NUMBER:
case SPECIALSET:
case BOOLEAN:
@@ -2277,6 +2283,8 @@ public ExpressionContext expression() {
case T__180:
case T__181:
case T__182:
+ case T__183:
+ case T__184:
case NUMBER:
case SPECIALSET:
case BOOLEAN:
@@ -2642,7 +2650,7 @@ public Function_argumentsContext function_arguments() {
State = 410;
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)) & 4539628424389459967L) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -802489551279882216L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -1L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & -288230376151711745L) != 0)) {
{
State = 399;
_localctx.e = expression();
@@ -2718,7 +2726,7 @@ public Set_itemsContext set_items() {
State = 432;
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)) & 4539628424389459967L) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -802489551279882024L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -1L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & -288230376151711745L) != 0)) {
{
State = 417;
ErrorHandler.Sync(this);
@@ -2863,6 +2871,8 @@ public Set_itemsContext set_items() {
case T__180:
case T__181:
case T__182:
+ case T__183:
+ case T__184:
case NUMBER:
case SPECIALSET:
case BOOLEAN:
@@ -3043,6 +3053,8 @@ public Set_itemsContext set_items() {
case T__180:
case T__181:
case T__182:
+ case T__183:
+ case T__184:
case NUMBER:
case SPECIALSET:
case BOOLEAN:
@@ -3262,7 +3274,7 @@ public AtomContext atom() {
AtomContext _localctx = new AtomContext(Context, State);
EnterRule(_localctx, 48, RULE_atom);
try {
- State = 1134;
+ State = 1144;
ErrorHandler.Sync(this);
switch ( Interpreter.AdaptivePredict(TokenStream,43,Context) ) {
case 1:
@@ -4857,7 +4869,7 @@ public AtomContext atom() {
_localctx.args = function_arguments();
State = 1086;
Match(T__30);
- Assert("Si", 1, _localctx.args.list.Count); _localctx.value = MathS.Si(_localctx.args.list[0]);
+ Assert("polygamma", 2, _localctx.args.list.Count); _localctx.value = MathS.Polygamma(_localctx.args.list[0], _localctx.args.list[1]);
}
break;
case 134:
@@ -4869,7 +4881,7 @@ public AtomContext atom() {
_localctx.args = function_arguments();
State = 1091;
Match(T__30);
- Assert("Ci", 1, _localctx.args.list.Count); _localctx.value = MathS.Ci(_localctx.args.list[0]);
+ Assert("digamma", 1, _localctx.args.list.Count); _localctx.value = MathS.Digamma(_localctx.args.list[0]);
}
break;
case 135:
@@ -4881,7 +4893,7 @@ public AtomContext atom() {
_localctx.args = function_arguments();
State = 1096;
Match(T__30);
- Assert("Shi", 1, _localctx.args.list.Count); _localctx.value = MathS.Shi(_localctx.args.list[0]);
+ Assert("Si", 1, _localctx.args.list.Count); _localctx.value = MathS.Si(_localctx.args.list[0]);
}
break;
case 136:
@@ -4893,7 +4905,7 @@ public AtomContext atom() {
_localctx.args = function_arguments();
State = 1101;
Match(T__30);
- Assert("Chi", 1, _localctx.args.list.Count); _localctx.value = MathS.Chi(_localctx.args.list[0]);
+ Assert("Ci", 1, _localctx.args.list.Count); _localctx.value = MathS.Ci(_localctx.args.list[0]);
}
break;
case 137:
@@ -4905,7 +4917,7 @@ public AtomContext atom() {
_localctx.args = function_arguments();
State = 1106;
Match(T__30);
- _localctx.value = NotImplementedFunction("trunc", "rounding functions");
+ Assert("Shi", 1, _localctx.args.list.Count); _localctx.value = MathS.Shi(_localctx.args.list[0]);
}
break;
case 138:
@@ -4917,7 +4929,7 @@ public AtomContext atom() {
_localctx.args = function_arguments();
State = 1111;
Match(T__30);
- _localctx.value = NotImplementedFunction("conjugate", "complex conjugate as a symbolic function");
+ Assert("Chi", 1, _localctx.args.list.Count); _localctx.value = MathS.Chi(_localctx.args.list[0]);
}
break;
case 139:
@@ -4928,6 +4940,30 @@ public AtomContext atom() {
State = 1115;
_localctx.args = function_arguments();
State = 1116;
+ Match(T__30);
+ _localctx.value = NotImplementedFunction("trunc", "rounding functions");
+ }
+ break;
+ case 140:
+ EnterOuterAlt(_localctx, 140);
+ {
+ State = 1119;
+ Match(T__180);
+ State = 1120;
+ _localctx.args = function_arguments();
+ State = 1121;
+ Match(T__30);
+ _localctx.value = NotImplementedFunction("conjugate", "complex conjugate as a symbolic function");
+ }
+ break;
+ case 141:
+ EnterOuterAlt(_localctx, 141);
+ {
+ State = 1124;
+ Match(T__181);
+ State = 1125;
+ _localctx.args = function_arguments();
+ State = 1126;
Match(T__30);
Assert("domain", 2, _localctx.args.list.Count);
@@ -4954,14 +4990,14 @@ public AtomContext atom() {
}
break;
- case 140:
- EnterOuterAlt(_localctx, 140);
+ case 142:
+ EnterOuterAlt(_localctx, 142);
{
- State = 1119;
- Match(T__180);
- State = 1120;
+ State = 1129;
+ Match(T__182);
+ State = 1130;
_localctx.args = function_arguments();
- State = 1121;
+ State = 1131;
Match(T__30);
var cases = new List();
@@ -4974,14 +5010,14 @@ public AtomContext atom() {
}
break;
- case 141:
- EnterOuterAlt(_localctx, 141);
+ case 143:
+ EnterOuterAlt(_localctx, 143);
{
- State = 1124;
- Match(T__181);
- State = 1125;
+ State = 1134;
+ Match(T__183);
+ State = 1135;
_localctx.args = function_arguments();
- State = 1126;
+ State = 1136;
Match(T__30);
if (_localctx.args.list.Count < 2)
@@ -4990,14 +5026,14 @@ public AtomContext atom() {
}
break;
- case 142:
- EnterOuterAlt(_localctx, 142);
+ case 144:
+ EnterOuterAlt(_localctx, 144);
{
- State = 1129;
- Match(T__182);
- State = 1130;
+ State = 1139;
+ Match(T__184);
+ State = 1140;
_localctx.args = function_arguments();
- State = 1131;
+ State = 1141;
Match(T__30);
if (_localctx.args.list.Count < 2)
@@ -5060,9 +5096,9 @@ public StatementContext statement() {
try {
EnterOuterAlt(_localctx, 1);
{
- State = 1136;
+ State = 1146;
_localctx._expression = expression();
- State = 1137;
+ State = 1147;
Match(Eof);
Result = _localctx._expression.value;
}
@@ -5079,7 +5115,7 @@ public StatementContext statement() {
}
private static int[] _serializedATN = {
- 4,1,191,1141,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,193,1151,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,
@@ -5159,332 +5195,336 @@ 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,1,24,1,24,1,24,1,24,3,24,1135,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,1317,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,1134,1,0,0,0,50,1136,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,1135,6,24,-1,0,448,449,5,51,0,0,
- 449,1135,6,24,-1,0,450,451,5,188,0,0,451,1135,6,24,-1,0,452,453,5,185,
- 0,0,453,1135,6,24,-1,0,454,455,5,187,0,0,455,1135,6,24,-1,0,456,457,5,
- 186,0,0,457,1135,6,24,-1,0,458,459,5,189,0,0,459,1135,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,1135,
- 1,0,0,0,465,466,5,54,0,0,466,467,3,48,24,0,467,468,6,24,-1,0,468,1135,
- 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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,
- 1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,
- 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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,
- 1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,
- 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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,
- 1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,
- 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,1135,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,1135,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,
- 1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,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,1135,
- 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,1135,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,1135,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,
- 1135,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,1135,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,1135,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,1135,1,0,0,0,1134,446,1,0,0,0,1134,448,1,0,0,0,1134,450,1,0,0,0,
- 1134,452,1,0,0,0,1134,454,1,0,0,0,1134,456,1,0,0,0,1134,458,1,0,0,0,1134,
- 460,1,0,0,0,1134,465,1,0,0,0,1134,469,1,0,0,0,1134,474,1,0,0,0,1134,479,
- 1,0,0,0,1134,484,1,0,0,0,1134,489,1,0,0,0,1134,494,1,0,0,0,1134,499,1,
- 0,0,0,1134,504,1,0,0,0,1134,509,1,0,0,0,1134,514,1,0,0,0,1134,519,1,0,
- 0,0,1134,524,1,0,0,0,1134,529,1,0,0,0,1134,534,1,0,0,0,1134,539,1,0,0,
- 0,1134,544,1,0,0,0,1134,549,1,0,0,0,1134,554,1,0,0,0,1134,559,1,0,0,0,
- 1134,564,1,0,0,0,1134,569,1,0,0,0,1134,574,1,0,0,0,1134,579,1,0,0,0,1134,
- 584,1,0,0,0,1134,589,1,0,0,0,1134,594,1,0,0,0,1134,599,1,0,0,0,1134,604,
- 1,0,0,0,1134,609,1,0,0,0,1134,614,1,0,0,0,1134,619,1,0,0,0,1134,624,1,
- 0,0,0,1134,629,1,0,0,0,1134,634,1,0,0,0,1134,639,1,0,0,0,1134,644,1,0,
- 0,0,1134,649,1,0,0,0,1134,654,1,0,0,0,1134,659,1,0,0,0,1134,664,1,0,0,
- 0,1134,669,1,0,0,0,1134,674,1,0,0,0,1134,679,1,0,0,0,1134,684,1,0,0,0,
- 1134,689,1,0,0,0,1134,694,1,0,0,0,1134,699,1,0,0,0,1134,704,1,0,0,0,1134,
- 709,1,0,0,0,1134,714,1,0,0,0,1134,719,1,0,0,0,1134,724,1,0,0,0,1134,729,
- 1,0,0,0,1134,734,1,0,0,0,1134,739,1,0,0,0,1134,744,1,0,0,0,1134,749,1,
- 0,0,0,1134,754,1,0,0,0,1134,759,1,0,0,0,1134,764,1,0,0,0,1134,769,1,0,
- 0,0,1134,774,1,0,0,0,1134,779,1,0,0,0,1134,784,1,0,0,0,1134,789,1,0,0,
- 0,1134,794,1,0,0,0,1134,799,1,0,0,0,1134,804,1,0,0,0,1134,809,1,0,0,0,
- 1134,814,1,0,0,0,1134,819,1,0,0,0,1134,824,1,0,0,0,1134,829,1,0,0,0,1134,
- 834,1,0,0,0,1134,839,1,0,0,0,1134,844,1,0,0,0,1134,849,1,0,0,0,1134,854,
- 1,0,0,0,1134,859,1,0,0,0,1134,864,1,0,0,0,1134,869,1,0,0,0,1134,874,1,
- 0,0,0,1134,879,1,0,0,0,1134,884,1,0,0,0,1134,889,1,0,0,0,1134,894,1,0,
- 0,0,1134,899,1,0,0,0,1134,904,1,0,0,0,1134,909,1,0,0,0,1134,914,1,0,0,
- 0,1134,919,1,0,0,0,1134,924,1,0,0,0,1134,929,1,0,0,0,1134,934,1,0,0,0,
- 1134,939,1,0,0,0,1134,944,1,0,0,0,1134,949,1,0,0,0,1134,954,1,0,0,0,1134,
- 959,1,0,0,0,1134,964,1,0,0,0,1134,969,1,0,0,0,1134,974,1,0,0,0,1134,979,
- 1,0,0,0,1134,984,1,0,0,0,1134,989,1,0,0,0,1134,994,1,0,0,0,1134,999,1,
- 0,0,0,1134,1004,1,0,0,0,1134,1009,1,0,0,0,1134,1014,1,0,0,0,1134,1019,
- 1,0,0,0,1134,1024,1,0,0,0,1134,1029,1,0,0,0,1134,1034,1,0,0,0,1134,1039,
- 1,0,0,0,1134,1044,1,0,0,0,1134,1049,1,0,0,0,1134,1054,1,0,0,0,1134,1059,
- 1,0,0,0,1134,1064,1,0,0,0,1134,1069,1,0,0,0,1134,1074,1,0,0,0,1134,1079,
- 1,0,0,0,1134,1084,1,0,0,0,1134,1089,1,0,0,0,1134,1094,1,0,0,0,1134,1099,
- 1,0,0,0,1134,1104,1,0,0,0,1134,1109,1,0,0,0,1134,1114,1,0,0,0,1134,1119,
- 1,0,0,0,1134,1124,1,0,0,0,1134,1129,1,0,0,0,1135,49,1,0,0,0,1136,1137,
- 3,32,16,0,1137,1138,5,0,0,1,1138,1139,6,25,-1,0,1139,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,1134
+ 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,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,1145,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,1329,
+ 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,
+ 1144,1,0,0,0,50,1146,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,1145,6,24,-1,0,448,449,5,51,0,0,449,1145,6,24,-1,
+ 0,450,451,5,190,0,0,451,1145,6,24,-1,0,452,453,5,187,0,0,453,1145,6,24,
+ -1,0,454,455,5,189,0,0,455,1145,6,24,-1,0,456,457,5,188,0,0,457,1145,6,
+ 24,-1,0,458,459,5,191,0,0,459,1145,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,1145,1,0,0,0,465,466,
+ 5,54,0,0,466,467,3,48,24,0,467,468,6,24,-1,0,468,1145,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,1145,
+ 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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,
+ 1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,
+ 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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,
+ 1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,
+ 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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,
+ 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,1145,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,1145,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,
+ 1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,
+ 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,1145,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,1145,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,
+ 1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,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,1145,
+ 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,1145,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,1145,1,0,0,0,1144,446,1,
+ 0,0,0,1144,448,1,0,0,0,1144,450,1,0,0,0,1144,452,1,0,0,0,1144,454,1,0,
+ 0,0,1144,456,1,0,0,0,1144,458,1,0,0,0,1144,460,1,0,0,0,1144,465,1,0,0,
+ 0,1144,469,1,0,0,0,1144,474,1,0,0,0,1144,479,1,0,0,0,1144,484,1,0,0,0,
+ 1144,489,1,0,0,0,1144,494,1,0,0,0,1144,499,1,0,0,0,1144,504,1,0,0,0,1144,
+ 509,1,0,0,0,1144,514,1,0,0,0,1144,519,1,0,0,0,1144,524,1,0,0,0,1144,529,
+ 1,0,0,0,1144,534,1,0,0,0,1144,539,1,0,0,0,1144,544,1,0,0,0,1144,549,1,
+ 0,0,0,1144,554,1,0,0,0,1144,559,1,0,0,0,1144,564,1,0,0,0,1144,569,1,0,
+ 0,0,1144,574,1,0,0,0,1144,579,1,0,0,0,1144,584,1,0,0,0,1144,589,1,0,0,
+ 0,1144,594,1,0,0,0,1144,599,1,0,0,0,1144,604,1,0,0,0,1144,609,1,0,0,0,
+ 1144,614,1,0,0,0,1144,619,1,0,0,0,1144,624,1,0,0,0,1144,629,1,0,0,0,1144,
+ 634,1,0,0,0,1144,639,1,0,0,0,1144,644,1,0,0,0,1144,649,1,0,0,0,1144,654,
+ 1,0,0,0,1144,659,1,0,0,0,1144,664,1,0,0,0,1144,669,1,0,0,0,1144,674,1,
+ 0,0,0,1144,679,1,0,0,0,1144,684,1,0,0,0,1144,689,1,0,0,0,1144,694,1,0,
+ 0,0,1144,699,1,0,0,0,1144,704,1,0,0,0,1144,709,1,0,0,0,1144,714,1,0,0,
+ 0,1144,719,1,0,0,0,1144,724,1,0,0,0,1144,729,1,0,0,0,1144,734,1,0,0,0,
+ 1144,739,1,0,0,0,1144,744,1,0,0,0,1144,749,1,0,0,0,1144,754,1,0,0,0,1144,
+ 759,1,0,0,0,1144,764,1,0,0,0,1144,769,1,0,0,0,1144,774,1,0,0,0,1144,779,
+ 1,0,0,0,1144,784,1,0,0,0,1144,789,1,0,0,0,1144,794,1,0,0,0,1144,799,1,
+ 0,0,0,1144,804,1,0,0,0,1144,809,1,0,0,0,1144,814,1,0,0,0,1144,819,1,0,
+ 0,0,1144,824,1,0,0,0,1144,829,1,0,0,0,1144,834,1,0,0,0,1144,839,1,0,0,
+ 0,1144,844,1,0,0,0,1144,849,1,0,0,0,1144,854,1,0,0,0,1144,859,1,0,0,0,
+ 1144,864,1,0,0,0,1144,869,1,0,0,0,1144,874,1,0,0,0,1144,879,1,0,0,0,1144,
+ 884,1,0,0,0,1144,889,1,0,0,0,1144,894,1,0,0,0,1144,899,1,0,0,0,1144,904,
+ 1,0,0,0,1144,909,1,0,0,0,1144,914,1,0,0,0,1144,919,1,0,0,0,1144,924,1,
+ 0,0,0,1144,929,1,0,0,0,1144,934,1,0,0,0,1144,939,1,0,0,0,1144,944,1,0,
+ 0,0,1144,949,1,0,0,0,1144,954,1,0,0,0,1144,959,1,0,0,0,1144,964,1,0,0,
+ 0,1144,969,1,0,0,0,1144,974,1,0,0,0,1144,979,1,0,0,0,1144,984,1,0,0,0,
+ 1144,989,1,0,0,0,1144,994,1,0,0,0,1144,999,1,0,0,0,1144,1004,1,0,0,0,1144,
+ 1009,1,0,0,0,1144,1014,1,0,0,0,1144,1019,1,0,0,0,1144,1024,1,0,0,0,1144,
+ 1029,1,0,0,0,1144,1034,1,0,0,0,1144,1039,1,0,0,0,1144,1044,1,0,0,0,1144,
+ 1049,1,0,0,0,1144,1054,1,0,0,0,1144,1059,1,0,0,0,1144,1064,1,0,0,0,1144,
+ 1069,1,0,0,0,1144,1074,1,0,0,0,1144,1079,1,0,0,0,1144,1084,1,0,0,0,1144,
+ 1089,1,0,0,0,1144,1094,1,0,0,0,1144,1099,1,0,0,0,1144,1104,1,0,0,0,1144,
+ 1109,1,0,0,0,1144,1114,1,0,0,0,1144,1119,1,0,0,0,1144,1124,1,0,0,0,1144,
+ 1129,1,0,0,0,1144,1134,1,0,0,0,1144,1139,1,0,0,0,1145,49,1,0,0,0,1146,
+ 1147,3,32,16,0,1147,1148,5,0,0,1,1148,1149,6,25,-1,0,1149,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,1144
};
public static readonly ATN _ATN =
diff --git a/Sources/AngouriMath/Core/Domains.Classes.cs b/Sources/AngouriMath/Core/Domains.Classes.cs
index 1da51eaa3..08a75c9c7 100644
--- a/Sources/AngouriMath/Core/Domains.Classes.cs
+++ b/Sources/AngouriMath/Core/Domains.Classes.cs
@@ -376,6 +376,14 @@ partial record Lif
internal override Domain DefaultCodomain => Domain.Complex;
}
+ partial record Polygammaf
+ {
+ ///
+ public override Domain Codomain { get; protected init; } = Domain.Complex;
+ ///
+ internal override Domain DefaultCodomain => Domain.Complex;
+ }
+
partial record Sif
{
///
diff --git a/Sources/AngouriMath/Core/Entity/Continuous/Entity.Continuous.Polygamma.Classes.cs b/Sources/AngouriMath/Core/Entity/Continuous/Entity.Continuous.Polygamma.Classes.cs
new file mode 100644
index 000000000..597163a16
--- /dev/null
+++ b/Sources/AngouriMath/Core/Entity/Continuous/Entity.Continuous.Polygamma.Classes.cs
@@ -0,0 +1,37 @@
+//
+// 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 System;
+
+namespace AngouriMath
+{
+ partial record Entity
+ {
+ ///
+ /// The polygamma function psi^(n)(z), the (n + 1)-th derivative of ln Gamma(z), for a whole
+ /// n >= 0; psi^(0) is the digamma function, Gamma'(z)/Gamma(z). Its poles are
+ /// 0, -1, -2, ....
+ ///
+ /// https://github.com/asc-community/AngouriMath/issues/171
+ public sealed partial record Polygammaf(Entity Order, Entity Argument) : Function, IBinaryNode
+ {
+ private Polygammaf New(Entity order, Entity argument) =>
+ ReferenceEquals(Order, order) && ReferenceEquals(Argument, argument) ? this : new(order, argument) { Codomain = Codomain };
+
+ ///
+ public Entity NodeFirstChild => Order;
+
+ ///
+ public Entity NodeSecondChild => Argument;
+
+ ///
+ public override Entity Replace(Func func) => func(New(Order.Replace(func), Argument.Replace(func)));
+ ///
+ protected override Entity[] InitDirectChildren() => new[] { Order, Argument };
+ }
+ }
+}
diff --git a/Sources/AngouriMath/Core/Entity/Continuous/Number/Polygamma.cs b/Sources/AngouriMath/Core/Entity/Continuous/Number/Polygamma.cs
new file mode 100644
index 000000000..c505ed5c3
--- /dev/null
+++ b/Sources/AngouriMath/Core/Entity/Continuous/Number/Polygamma.cs
@@ -0,0 +1,260 @@
+//
+// 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 System;
+using System.Collections.Generic;
+using PeterO.Numbers;
+
+namespace AngouriMath
+{
+ partial record Entity
+ {
+ partial record Number
+ {
+ ///
+ /// The polygamma function psi^(n)(z), the (n + 1)-th derivative of ln Gamma(z), at the
+ /// working precision, for a whole n >= 0 and every complex z but its poles 0, -1, -2, ...,
+ /// where it is NaN. psi^(0) is the digamma function, Gamma'(z)/Gamma(z).
+ ///
+ ///
+ ///
+ /// Left of Re z = 1/2 it is reflected (DLMF 5.15.6),
+ /// psi^(n)(z) = (-1)^n psi^(n)(1 - z) - pi^(n + 1) Q_n(cot(pi z)), where Q_n is the polynomial
+ /// with d^n/dz^n cot(pi z) = pi^n Q_n(cot(pi z)): Q_0(c) = c and
+ /// Q_(k + 1)(c) = -(1 + c^2) Q_k'(c).
+ ///
+ ///
+ /// Right of it, the recurrence psi^(n)(z + 1) = psi^(n)(z) + (-1)^n n!/z^(n + 1) (DLMF 5.15.5) moves
+ /// the argument to Re w >= R, with R the working digits and n, where the asymptotic
+ /// series (DLMF 5.11.2 and 5.15.8) is summed until a term is below the working precision:
+ /// ln w - 1/(2 w) - sum B_(2k)/(2k w^(2k)) for the digamma function, and
+ /// (-1)^(n + 1) ((n - 1)!/w^n + n!/(2 w^(n + 1)) + sum B_(2k) (2k + n - 1)!/((2k)! w^(2k + n))) for
+ /// n >= 1. Its smallest term is about e^(-2 pi R) of the sum, so it converges well before
+ /// it diverges.
+ ///
+ ///
+ /// The Bernoulli numbers are exact, from the tangent numbers by Brent and Harvey's recurrence,
+ /// B_(2k) = (-1)^(k - 1) 2k T_k/(4^k (4^k - 1)), and cached.
+ ///
+ /// https://github.com/asc-community/AngouriMath/issues/171
+ ///
+ public static Complex Polygamma(EInteger order, Complex z)
+ {
+ var context = MathS.Settings.DecimalPrecisionContext.Value;
+ var (re, im) = (z.RealPart.EDecimal, z.ImaginaryPart.EDecimal);
+ if (re.IsNaN() || im.IsNaN() || order.Sign < 0 || !order.CanFitInInt32())
+ return Real.NaN;
+ var n = order.ToInt32Checked();
+ if (re.IsInfinity() || im.IsInfinity())
+ // Toward +oo on the real line the digamma function grows as ln x and the others vanish.
+ return im.IsZero && re.IsPositiveInfinity() ? (n == 0 ? Real.PositiveInfinity : Integer.Zero) : Real.NaN;
+ if (im.IsZero && re.Sign <= 0 && re.IsInteger())
+ return Real.NaN;
+ var work = Working(context, 10 + n.ToString().Length + context.Precision.ToString().Length);
+ var (valueRe, valueIm) = Polygamma(n, re, im, work);
+ return Complex.Create(valueRe.RoundToPrecision(context), valueIm.RoundToPrecision(context));
+ }
+
+ private static (EDecimal Re, EDecimal Im) Polygamma(int n, EDecimal re, EDecimal im, EContext work)
+ {
+ if (re.CompareTo(EDecimal.FromString("0.5")) < 0)
+ {
+ // psi^(n)(z) = (-1)^n psi^(n)(1 - z) - pi^(n + 1) Q_n(cot(pi z))
+ var reflected = Polygamma(n, EDecimal.One.Subtract(re, work), im.Negate(), work);
+ if (n % 2 == 1)
+ reflected = (reflected.Re.Negate(), reflected.Im.Negate());
+ var pi = EDecimal.PI(work);
+ var cot = Cot(pi.Multiply(re, work), pi.Multiply(im, work), work);
+ var q = Evaluate(CotangentDerivative(n), cot, work);
+ var piPower = pi.Pow(n + 1, work);
+ return (reflected.Re.Subtract(piPower.Multiply(q.Re, work), work), reflected.Im.Subtract(piPower.Multiply(q.Im, work), work));
+ }
+ var radius = work.Precision.ToInt32Checked() + n;
+ var shift = Math.Max(0, (int)Math.Ceiling(radius - re.ToDouble()));
+ // sum_(k < shift) 1/(z + k)^(n + 1)
+ var sum = (Re: EDecimal.Zero, Im: EDecimal.Zero);
+ for (var k = 0; k < shift; k++)
+ {
+ var term = Reciprocal(Power((re.Add(EDecimal.FromInt32(k), work), im), n + 1, work), work);
+ sum = (sum.Re.Add(term.Re, work), sum.Im.Add(term.Im, work));
+ }
+ var w = (Re: re.Add(EDecimal.FromInt32(shift), work), Im: im);
+ var tail = AsymptoticPolygamma(n, w, work);
+ // psi^(n)(z) = psi^(n)(z + shift) - (-1)^n n! sum
+ var factorial = EDecimal.FromEInteger(Factorial(n));
+ var scaled = (Re: sum.Re.Multiply(factorial, work), Im: sum.Im.Multiply(factorial, work));
+ return n % 2 == 0
+ ? (tail.Re.Subtract(scaled.Re, work), tail.Im.Subtract(scaled.Im, work))
+ : (tail.Re.Add(scaled.Re, work), tail.Im.Add(scaled.Im, work));
+ }
+
+ /// The asymptotic series of psi^(n)(w), for Re w at least the working digits.
+ private static (EDecimal Re, EDecimal Im) AsymptoticPolygamma(int n, (EDecimal Re, EDecimal Im) w, EContext work)
+ {
+ var epsilon = EDecimal.Create(EInteger.One, EInteger.FromInt32(-work.Precision.ToInt32Checked()));
+ var inverse = Reciprocal(w, work);
+ var inverseSquared = Multiply(inverse, inverse, work);
+ (EDecimal Re, EDecimal Im) sum;
+ // The power of 1/w the first Bernoulli term carries: w^-(2 + n).
+ (EDecimal Re, EDecimal Im) power;
+ if (n == 0)
+ {
+ // ln w - 1/(2 w)
+ var modulus = w.Re.Multiply(w.Re, work).Add(w.Im.Multiply(w.Im, work), work).Sqrt(work);
+ sum = (modulus.Log(work).Subtract(inverse.Re.Divide(2, work), work), w.Im.Arctan2(w.Re, work).Subtract(inverse.Im.Divide(2, work), work));
+ power = inverseSquared;
+ }
+ else
+ {
+ // (n - 1)!/w^n + n!/(2 w^(n + 1))
+ var toTheN = Power(inverse, n, work);
+ var toTheNPlusOne = Multiply(toTheN, inverse, work);
+ var (previous, current) = (EDecimal.FromEInteger(Factorial(n - 1)), EDecimal.FromEInteger(Factorial(n)).Divide(2, work));
+ sum = (toTheN.Re.Multiply(previous, work).Add(toTheNPlusOne.Re.Multiply(current, work), work),
+ toTheN.Im.Multiply(previous, work).Add(toTheNPlusOne.Im.Multiply(current, work), work));
+ power = Multiply(toTheN, inverseSquared, work);
+ }
+ for (var k = 1; k <= 4 * work.Precision.ToInt32Checked() + 4 * n + 16; k++)
+ {
+ // B_(2k)/(2k) for the digamma function, B_(2k) (2k + n - 1)!/(2k)! otherwise.
+ var bernoulli = Bernoulli(k);
+ var coefficient = n == 0
+ ? EDecimal.FromEInteger(bernoulli.Numerator).Divide(EDecimal.FromEInteger(bernoulli.Denominator.Multiply(2 * k)), work)
+ : EDecimal.FromEInteger(bernoulli.Numerator.Multiply(RisingProduct(2 * k + 1, n - 1))).Divide(EDecimal.FromEInteger(bernoulli.Denominator), work);
+ var term = (Re: power.Re.Multiply(coefficient, work), Im: power.Im.Multiply(coefficient, work));
+ sum = n == 0 ? (sum.Re.Subtract(term.Re, work), sum.Im.Subtract(term.Im, work)) : (sum.Re.Add(term.Re, work), sum.Im.Add(term.Im, work));
+ if (Magnitude(term).CompareTo(Magnitude(sum).Multiply(epsilon, work)) < 0)
+ break;
+ power = Multiply(power, inverseSquared, work);
+ }
+ // (-1)^(n + 1) in front of the series for n >= 1
+ return n == 0 || n % 2 == 1 ? sum : (sum.Re.Negate(), sum.Im.Negate());
+ }
+
+ /// (from)(from + 1)...(from + count - 1), and one for a count of zero.
+ private static EInteger RisingProduct(int from, int count)
+ {
+ var product = EInteger.One;
+ for (var i = 0; i < count; i++)
+ product = product.Multiply(from + i);
+ return product;
+ }
+
+ private static EInteger Factorial(int n)
+ {
+ var product = EInteger.One;
+ for (var i = 2; i <= n; i++)
+ product = product.Multiply(i);
+ return product;
+ }
+
+ /// B_(2k), exactly, from the tangent numbers.
+ private static ERational Bernoulli(int k)
+ {
+ var tangent = Tangent(k);
+ var fourToTheK = EInteger.One.ShiftLeft(2 * k);
+ var value = ERational.Create(tangent.Multiply(2 * k), fourToTheK.Multiply(fourToTheK.Subtract(EInteger.One)));
+ return k % 2 == 1 ? value : value.Negate();
+ }
+
+ ///
+ /// The tangent number T_k, the (2k - 1)-th derivative of tan at 0: 1, 2, 16, 272, ...
+ /// Brent and Harvey's in-place recurrence for T_1 ... T_m, recomputed at twice the length whenever a
+ /// larger one is asked for.
+ ///
+ private static EInteger Tangent(int k)
+ {
+ lock (tangentNumbers)
+ {
+ if (k > tangentNumbers.Count)
+ {
+ var m = Math.Max(k, 2 * tangentNumbers.Count);
+ var t = new EInteger[m + 1];
+ t[1] = EInteger.One;
+ for (var i = 2; i <= m; i++)
+ t[i] = t[i - 1].Multiply(i - 1);
+ for (var i = 2; i <= m; i++)
+ for (var j = i; j <= m; j++)
+ t[j] = t[j - 1].Multiply(j - i).Add(t[j].Multiply(j - i + 2));
+ tangentNumbers.Clear();
+ for (var i = 1; i <= m; i++)
+ tangentNumbers.Add(t[i]);
+ }
+ return tangentNumbers[k - 1];
+ }
+ }
+ [ConcurrentField] private static readonly List tangentNumbers = new();
+
+ /// The coefficients, lowest first, of Q_n, with d^n/dz^n cot(pi z) = pi^n Q_n(cot(pi z)).
+ private static EInteger[] CotangentDerivative(int n)
+ {
+ var q = new[] { EInteger.Zero, EInteger.One };
+ for (var step = 0; step < n; step++)
+ {
+ // -(1 + c^2) q'(c)
+ var derivative = new EInteger[q.Length - 1];
+ for (var i = 1; i < q.Length; i++)
+ derivative[i - 1] = q[i].Multiply(i);
+ var next = new EInteger[derivative.Length + 2];
+ for (var i = 0; i < next.Length; i++)
+ next[i] = EInteger.Zero;
+ for (var i = 0; i < derivative.Length; i++)
+ {
+ next[i] = next[i].Subtract(derivative[i]);
+ next[i + 2] = next[i + 2].Subtract(derivative[i]);
+ }
+ q = next;
+ }
+ return q;
+ }
+
+ private static (EDecimal Re, EDecimal Im) Evaluate(EInteger[] coefficients, (EDecimal Re, EDecimal Im) x, EContext work)
+ {
+ var value = (Re: EDecimal.Zero, Im: EDecimal.Zero);
+ for (var i = coefficients.Length - 1; i >= 0; i--)
+ {
+ value = Multiply(value, x, work);
+ value = (value.Re.Add(EDecimal.FromEInteger(coefficients[i]), work), value.Im);
+ }
+ return value;
+ }
+
+ /// cot(x + i y) = (sin 2x - i sinh 2y)/(cosh 2y - cos 2x).
+ private static (EDecimal Re, EDecimal Im) Cot(EDecimal x, EDecimal y, EContext work)
+ {
+ var (twoX, twoY) = (x.Multiply(2, work), y.Multiply(2, work));
+ if (twoY.IsZero)
+ return (twoX.Sin(work).Divide(EDecimal.One.Subtract(twoX.Cos(work), work), work), EDecimal.Zero);
+ var exponential = twoY.Exponential(work);
+ var inverseExponential = EDecimal.One.Divide(exponential, work);
+ var sinh = exponential.Subtract(inverseExponential, work).Divide(2, work);
+ var cosh = exponential.Add(inverseExponential, work).Divide(2, work);
+ var denominator = cosh.Subtract(twoX.Cos(work), work);
+ return (twoX.Sin(work).Divide(denominator, work), sinh.Negate().Divide(denominator, work));
+ }
+
+ private static (EDecimal Re, EDecimal Im) Reciprocal((EDecimal Re, EDecimal Im) a, EContext work)
+ {
+ var squared = a.Re.Multiply(a.Re, work).Add(a.Im.Multiply(a.Im, work), work);
+ return (a.Re.Divide(squared, work), a.Im.Negate().Divide(squared, work));
+ }
+
+ private static (EDecimal Re, EDecimal Im) Power((EDecimal Re, EDecimal Im) a, int exponent, EContext work)
+ {
+ var result = (Re: EDecimal.One, Im: EDecimal.Zero);
+ for (var square = a; exponent > 0; exponent >>= 1)
+ {
+ if ((exponent & 1) == 1)
+ result = Multiply(result, square, work);
+ if (exponent > 1)
+ square = Multiply(square, square, work);
+ }
+ return result;
+ }
+ }
+ }
+}
diff --git a/Sources/AngouriMath/Core/Serialization/Entity.Serialization.cs b/Sources/AngouriMath/Core/Serialization/Entity.Serialization.cs
index c0f7a6f05..e9ff31a3a 100644
--- a/Sources/AngouriMath/Core/Serialization/Entity.Serialization.cs
+++ b/Sources/AngouriMath/Core/Serialization/Entity.Serialization.cs
@@ -126,6 +126,7 @@ [EntityJsonConverter] partial record SpecialSet
[EntityJsonConverter] partial record Erfif;
[EntityJsonConverter] partial record Eif;
[EntityJsonConverter] partial record Lif;
+ [EntityJsonConverter] partial record Polygammaf;
[EntityJsonConverter] partial record Sif;
[EntityJsonConverter] partial record Cif;
[EntityJsonConverter] partial record Shif;
diff --git a/Sources/AngouriMath/Core/Transformations/Matching/MatchPattern.cs b/Sources/AngouriMath/Core/Transformations/Matching/MatchPattern.cs
index 69ad80e14..d0fc54f57 100644
--- a/Sources/AngouriMath/Core/Transformations/Matching/MatchPattern.cs
+++ b/Sources/AngouriMath/Core/Transformations/Matching/MatchPattern.cs
@@ -478,6 +478,7 @@ internal abstract bool ETryBuild(
[typeof(Entity.Erfif)] = (1, static c => new Entity.Erfif(c[0])),
[typeof(Entity.Eif)] = (1, static c => new Entity.Eif(c[0])),
[typeof(Entity.Lif)] = (1, static c => new Entity.Lif(c[0])),
+ [typeof(Entity.Polygammaf)] = (2, static c => new Entity.Polygammaf(c[0], c[1])),
[typeof(Entity.Sif)] = (1, static c => new Entity.Sif(c[0])),
[typeof(Entity.Cif)] = (1, static c => new Entity.Cif(c[0])),
[typeof(Entity.Shif)] = (1, static c => new Entity.Shif(c[0])),
diff --git a/Sources/AngouriMath/Docs/Contributing/WritingARule.md b/Sources/AngouriMath/Docs/Contributing/WritingARule.md
index 8589f2dff..57f1ae9e6 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 **61** such types.
+pattern used as a **replacement** must be one the library can construct: there are **62** 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 ab54245aa..7ae45cc54 100644
--- a/Sources/AngouriMath/Docs/Usage/Syntax.md
+++ b/Sources/AngouriMath/Docs/Usage/Syntax.md
@@ -326,6 +326,15 @@ differentiated from its definition: the derivative of `Si(x)` is `sin(x) / x`, o
`cos(x) / x`, and of `Shi(x)` and `Chi(x)` it is `sinh(x) / x` and `cosh(x) / x`. `Ci` and `Chi` are
undefined at `0`; `Si(+oo)` is `pi / 2` and `Ci(+oo)` is `0`.
+**Polygamma functions** — `polygamma(n, z)` `digamma(z)`. The polygamma function `psi^(n)(z)`, the
+`(n + 1)`-th derivative of `ln Gamma(z)` for a whole `n >= 0`, and the digamma function
+`psi(z) = Gamma'(z)/Gamma(z)`, which is `polygamma(0, z)` and prints as `digamma(z)`. Each is evaluated
+to the working precision anywhere in the complex plane but at `0, -1, -2, ...`, its poles, and each
+order is the derivative of the one before: the derivative of `polygamma(n, x)` is
+`polygamma(n + 1, x)`. The derivative of `x!` is `x! * digamma(x + 1)`, and of `gamma(x)` it is
+`(x - 1)! * digamma(x)`. Special values, such as `digamma(1) = -gamma`, stay as written, since the
+library has no symbol for Euler's constant.
+
**Calculus** — `derivative(expr, var, order)`, `integral(expr, var)`,
`integral(expr, var, from, to)`, `limit(expr, var, dest)`, `limitleft(...)`, `limitright(...)`;
`sum(expr, var in set)` for a sum over a set; `max(expr, var in set)` and `min` for the extremum of
diff --git a/Sources/AngouriMath/Functions/Continuous/Differentiation.cs b/Sources/AngouriMath/Functions/Continuous/Differentiation.cs
index 17a91ed27..8ca962ba9 100644
--- a/Sources/AngouriMath/Functions/Continuous/Differentiation.cs
+++ b/Sources/AngouriMath/Functions/Continuous/Differentiation.cs
@@ -327,6 +327,17 @@ protected override Entity InnerDifferentiate(Variable variable) =>
Argument.DerivativeOver(variable) / MathS.Ln(Argument);
}
+ partial record Polygammaf
+ {
+ // psi^(n)(a)' = psi^(n + 1)(a) a'. The order is whole, so an order that varies has no derivative
+ // in it, and this declines. https://github.com/asc-community/AngouriMath/issues/171
+ ///
+ protected override Entity InnerDifferentiate(Variable variable) =>
+ Order.ContainsNode(variable)
+ ? base.InnerDifferentiate(variable)
+ : MathS.Polygamma(Order + 1, Argument) * Argument.DerivativeOver(variable);
+ }
+
partial record Sif
{
// Si(a)' = sin(a)/a a', the integrand of its definition, and so for the other three.
@@ -458,34 +469,18 @@ protected override Entity InnerDifferentiate(Variable variable) =>
partial record Factorialf
{
///
- /// (x!)' = Γ(x + 1) ψ(x + 1), which needs a symbolic gamma and polygamma the
- /// library does not have — so this declines rather than answering.
+ /// (a!)' = a! psi(a + 1) a': x! is Gamma(x + 1), and the digamma function is
+ /// Gamma'/Gamma.
///
///
- ///
- /// It used to answer , which says the derivative does
- /// not exist. It does: x! is Γ(x + 1) and the library already
- /// evaluates it away from the integers — (1/2)! is 0.886… — so it is
- /// smooth except at the poles, and d/dx x! at 3 is an ordinary
- /// Γ'(4) ≈ 3.966. Saying NaN was a wrong answer rather than a missing
- /// feature, and it propagated: one factorial anywhere turned an otherwise fine
- /// derivative into NaN.
- /// https://github.com/asc-community/AngouriMath/issues/958
- ///
- ///
- /// Returning the unevaluated derivative is what every other node the library cannot
- /// differentiate already does — apply(f, x) among them — and it is what
- /// AGENTS.md asks for: unevaluated means "I could not settle this", NaN
- /// means "this does not exist", and only the first is true here.
- ///
- ///
- /// Computing it properly is
- /// #171, which is
- /// a separate and larger piece of work; this rule stays correct once that lands.
- ///
+ /// It declined while the library had no digamma function, and before that answered
+ /// , which says the derivative does not exist where it does
+ /// (https://github.com/asc-community/AngouriMath/issues/958): d/dx x! at 3 is
+ /// Gamma'(4) = 6 psi(4), about 7.5367.
+ /// https://github.com/asc-community/AngouriMath/issues/171
///
protected override Entity InnerDifferentiate(Variable variable)
- => base.InnerDifferentiate(variable);
+ => this * MathS.Digamma(Argument + 1) * Argument.DerivativeOver(variable);
}
#pragma warning disable IDE0054 // Use compound assignment
diff --git a/Sources/AngouriMath/Functions/Continuous/Solvers/EquationSolver/InvertNode.Classes.cs b/Sources/AngouriMath/Functions/Continuous/Solvers/EquationSolver/InvertNode.Classes.cs
index a81fe9cba..a43bbdbda 100644
--- a/Sources/AngouriMath/Functions/Continuous/Solvers/EquationSolver/InvertNode.Classes.cs
+++ b/Sources/AngouriMath/Functions/Continuous/Solvers/EquationSolver/InvertNode.Classes.cs
@@ -277,6 +277,14 @@ partial record Lif
null;
}
+ // The polygamma functions have no inverse among the library's nodes.
+ // https://github.com/asc-community/AngouriMath/issues/171
+ partial record Polygammaf
+ {
+ private protected override IEnumerable? InvertNode(Entity value, Entity x) =>
+ null;
+ }
+
// None of the four has an inverse among the library's nodes, and none of their preimages
// is empty: Si(x) = 1 near 1.1654, Ci(x) = 0 near 0.6165.
// https://github.com/asc-community/AngouriMath/issues/1501
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 b12f540d0..797005a64 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
@@ -590,6 +590,25 @@ Real r when r.EDecimal.IsPositiveInfinity() => Real.PositiveInfinity,
(@this, a) => ((Lif)@this).New(a), isExact);
}
+ public partial record Polygammaf
+ {
+ // A whole order n >= 0, and an argument other than the poles 0, -1, -2, ...
+ // https://github.com/asc-community/AngouriMath/issues/171
+ private protected override Entity IntrinsicCondition =>
+ Order.In(MathS.Sets.Z) & Order >= 0 & (!Argument.In(MathS.Sets.Z) | Argument > 0);
+
+ ///
+ protected override Entity InnerSimplify(bool isExact)
+ => ExpandOnTwoArguments(Order, Argument,
+ (order, argument) => (order, argument) switch
+ {
+ (Integer { EInteger: var n }, Complex z) when !isExact && n.Sign >= 0 => Number.Polygamma(n, z),
+ (Integer { EInteger: var n }, Real r) when n.Sign >= 0 && r.EDecimal.IsPositiveInfinity() => n.IsZero ? Real.PositiveInfinity : Integer.Zero,
+ _ => null
+ },
+ (@this, order, argument) => ((Polygammaf)@this).New(order, argument), isExact);
+ }
+
public partial record Sif
{
// Entire, so defined for every argument. https://github.com/asc-community/AngouriMath/issues/1501
diff --git a/Sources/AngouriMath/Functions/Output/Latex/Latex.Arithmetics.Classes.cs b/Sources/AngouriMath/Functions/Output/Latex/Latex.Arithmetics.Classes.cs
index c33346f69..4167661f1 100644
--- a/Sources/AngouriMath/Functions/Output/Latex/Latex.Arithmetics.Classes.cs
+++ b/Sources/AngouriMath/Functions/Output/Latex/Latex.Arithmetics.Classes.cs
@@ -211,6 +211,15 @@ private protected override string LatexizeNode()
=> $@"\operatorname{{li}}\left({Argument.Latexize()}\right)";
}
+ partial record Polygammaf
+ {
+ ///
+ private protected override string LatexizeNode()
+ => Order is Number.Integer { IsZero: true }
+ ? $@"\psi\left({Argument.Latexize()}\right)"
+ : $@"\psi^{{({Order.Latexize()})}}\left({Argument.Latexize()}\right)";
+ }
+
partial record Sif
{
///
diff --git a/Sources/AngouriMath/Functions/Output/ToString/ToString.Arithmetics.Classes.cs b/Sources/AngouriMath/Functions/Output/ToString/ToString.Arithmetics.Classes.cs
index 58b18a185..52aaadefa 100644
--- a/Sources/AngouriMath/Functions/Output/ToString/ToString.Arithmetics.Classes.cs
+++ b/Sources/AngouriMath/Functions/Output/ToString/ToString.Arithmetics.Classes.cs
@@ -188,6 +188,17 @@ public partial record Lif
public override string ToString() => Stringize();
}
+ public partial record Polygammaf
+ {
+ ///
+ private protected override string StringizeNode()
+ => Order is Number.Integer { IsZero: true }
+ ? $"digamma({Argument.Stringize()})"
+ : $"polygamma({Order.Stringize()}, {Argument.Stringize()})";
+ ///
+ public override string ToString() => Stringize();
+ }
+
public partial record Sif
{
///
diff --git a/Sources/AngouriMath/Functions/Output/ToSympy/ToSympy.Arithmetics.Classes.cs b/Sources/AngouriMath/Functions/Output/ToSympy/ToSympy.Arithmetics.Classes.cs
index 50dfc4060..6db3325af 100644
--- a/Sources/AngouriMath/Functions/Output/ToSympy/ToSympy.Arithmetics.Classes.cs
+++ b/Sources/AngouriMath/Functions/Output/ToSympy/ToSympy.Arithmetics.Classes.cs
@@ -125,6 +125,14 @@ internal override string ToSymPy()
=> $@"sympy.li({Argument.ToSymPy()})";
}
+ public partial record Polygammaf
+ {
+ internal override string ToSymPy()
+ => Order is Number.Integer { IsZero: true }
+ ? $@"sympy.digamma({Argument.ToSymPy()})"
+ : $@"sympy.polygamma({Order.ToSymPy()}, {Argument.ToSymPy()})";
+ }
+
public partial record Sif
{
internal override string ToSymPy()
diff --git a/Sources/AngouriMath/Functions/Substitute.cs b/Sources/AngouriMath/Functions/Substitute.cs
index 0cbb04a1f..1c4bd25e7 100644
--- a/Sources/AngouriMath/Functions/Substitute.cs
+++ b/Sources/AngouriMath/Functions/Substitute.cs
@@ -230,6 +230,13 @@ public override Entity Substitute(Entity x, Entity value)
=> this == x ? value : New(Argument.Substitute(x, value));
}
+ partial record Polygammaf
+ {
+ ///
+ public override Entity Substitute(Entity x, Entity value)
+ => this == x ? value : New(Order.Substitute(x, value), Argument.Substitute(x, value));
+ }
+
partial record Sif
{
///
diff --git a/Sources/AngouriMath/Functions/TreeAnalyzer/RealValued.cs b/Sources/AngouriMath/Functions/TreeAnalyzer/RealValued.cs
index f6ce4aef4..034bb65e8 100644
--- a/Sources/AngouriMath/Functions/TreeAnalyzer/RealValued.cs
+++ b/Sources/AngouriMath/Functions/TreeAnalyzer/RealValued.cs
@@ -66,6 +66,9 @@ internal static bool IsRealValued(Entity expr, Variable x)
case Sinf or Cosf or Tanf or Cotanf or Secantf or Cosecantf
or Arctanf or Arccotanf or Signumf or Erff or Erfcf or Erfif or Eif or Sif or Shif:
return IsRealValued(expr.DirectChildren[0], x);
+ // A polygamma function of a whole order is real on the real line between its poles.
+ case Polygammaf(var order, var argument) when !order.ContainsNode(x):
+ return IsRealValued(argument, x);
// A modulus is real whatever it is taken of, and an Iverson bracket is 0 or 1.
case Absf or Iversonf:
return true;
@@ -149,6 +152,8 @@ private static bool GatherTheBasesOfRoots(Entity expr, Variable x, List
case Sinf or Cosf or Tanf or Cotanf or Secantf or Cosecantf
or Arctanf or Arccotanf or Signumf or Erff or Erfcf or Erfif or Eif or Sif or Shif:
return GatherTheBasesOfRoots(expr.DirectChildren[0], x, bases);
+ case Polygammaf(var order, var argument) when !order.ContainsNode(x):
+ return GatherTheBasesOfRoots(argument, x, bases);
case Absf or Iversonf:
return true;
default:
diff --git a/Sources/AngouriMath/Functions/TreeAnalyzer/Sort.Classes.cs b/Sources/AngouriMath/Functions/TreeAnalyzer/Sort.Classes.cs
index bd4346add..b72c951df 100644
--- a/Sources/AngouriMath/Functions/TreeAnalyzer/Sort.Classes.cs
+++ b/Sources/AngouriMath/Functions/TreeAnalyzer/Sort.Classes.cs
@@ -279,6 +279,12 @@ private protected override string SortHashName(SortLevel level)
=> Choice(level, "ei_", "li_", "li_");
}
+ public partial record Polygammaf
+ {
+ private protected override string SortHashName(SortLevel level)
+ => Choice(level, "polygamma_", "polygamma_", "polygamma_");
+ }
+
public partial record Sif
{
private protected override string SortHashName(SortLevel level)
diff --git a/Sources/MCP/AngouriMath.Mcp/Resources.cs b/Sources/MCP/AngouriMath.Mcp/Resources.cs
index 998b98880..812bbd271 100644
--- a/Sources/MCP/AngouriMath.Mcp/Resources.cs
+++ b/Sources/MCP/AngouriMath.Mcp/Resources.cs
@@ -95,7 +95,7 @@ that every response returns.
- `ln log log2 log10 exp pow sqrt cbrt sqr abs signum sign sgn`
- `floor ceil ceiling round min max gcd lcm`
- `gamma factorial binomial phi prime valuation`
- - special functions: `erf erfc erfi Ei li Si Ci Shi Chi`
+ - special functions: `erf erfc erfi Ei li Si Ci Shi Chi`, and `digamma(z)` and `polygamma(n, z)`
- sets: `card powerset union intersection complement image preimage domain aleph
iverson`
- `derivative integral limit limitleft limitright sum product argmax argmin piecewise
diff --git a/Sources/Tests/UnitTests/Calculus/DerivativeTest.cs b/Sources/Tests/UnitTests/Calculus/DerivativeTest.cs
index 7af19ba22..a40c39def 100644
--- a/Sources/Tests/UnitTests/Calculus/DerivativeTest.cs
+++ b/Sources/Tests/UnitTests/Calculus/DerivativeTest.cs
@@ -202,22 +202,22 @@ [Fact] public void TestNamedAppliedFunctions3()
///
/// https://github.com/asc-community/AngouriMath/issues/958 -- differentiating a factorial
/// answered NaN, which claims the derivative does not exist. It does: x! is
- /// smooth away from the poles and the library evaluates (1/2)! happily. The honest
- /// answer is the unevaluated derivative, which is what every other node it cannot
- /// differentiate already returns.
+ /// smooth away from the poles, and it declined until the library had the digamma function
+ /// to write it with: (x!)' = x! psi(x + 1).
+ /// #171
///
- [Fact] public void AFactorialDeclinesRatherThanClaimingNoDerivativeExists()
+ [Fact] public void AFactorialDifferentiatesThroughTheDigammaFunction()
{
var derivative = MathS.Derivative(MathS.Factorial(x), x).InnerSimplified;
Assert.NotEqual(MathS.NaN, derivative);
- Assert.Contains(derivative.Nodes, node => node is Entity.Derivativef);
+ Assert.Equal((MathS.Factorial(x) * MathS.Digamma(x + 1)).InnerSimplified, derivative);
}
///
/// The reason it mattered: NaN propagates, so one factorial destroyed the whole
- /// derivative. Declining leaves every other term intact.
+ /// derivative.
///
- [Fact] public void APartOfADerivativeSurvivesAFactorialItCannotTake()
+ [Fact] public void APartOfADerivativeSurvivesBesideAFactorial()
{
var derivative = (MathS.Factorial(x) + x.Pow(2)).Differentiate(x).InnerSimplified;
Assert.NotEqual(MathS.NaN, derivative);
@@ -347,10 +347,13 @@ [Fact] public void ANegativePowerStillIntegrates()
/// #1002
///
[Theory(Timeout = 30000)]
- // a derivative that cannot be taken at all, so the node survives every pass
- [InlineData("derivative(x!, x, 2)")]
+ // a derivative that cannot be taken at all, so the node survives every pass: a polygamma
+ // function's order is whole, so an order that varies has no derivative in it
+ [InlineData("derivative(polygamma(x, 2), x, 2)")]
+ [InlineData("derivative(polygamma(x, 2), x, 3)")]
+ [InlineData("derivative(sin(polygamma(x, 2)) + x, x, 2)")]
+ // and the factorial's, which it can take, to every power
[InlineData("derivative(x!, x, 3)")]
- [InlineData("derivative(sin(x!) + x, x, 2)")]
public void ADerivativeThatCannotBeTakenTerminatesAtEveryPower(string exprRaw)
{
var expr = exprRaw.ToEntity();
@@ -363,8 +366,8 @@ public void ADerivativeThatCannotBeTakenTerminatesAtEveryPower(string exprRaw)
/// #1002
///
[Fact] public void ADerivativeThatCannotBeTakenIsStillUnevaluated()
- => Assert.True("derivative(x!, x, 2)".ToEntity().InnerSimplified is Derivativef,
- $"expected it to stay a Derivativef, got {"derivative(x!, x, 2)".ToEntity().InnerSimplified}");
+ => Assert.True("derivative(polygamma(x, 2), x, 2)".ToEntity().InnerSimplified is Derivativef,
+ $"expected it to stay a Derivativef, got {"derivative(polygamma(x, 2), x, 2)".ToEntity().InnerSimplified}");
///
/// A node that does not mention the variable is a constant in it, and its derivative is 0,
diff --git a/Sources/Tests/UnitTests/Common/PublicApi.txt b/Sources/Tests/UnitTests/Common/PublicApi.txt
index a9955985f..b609d322a 100644
--- a/Sources/Tests/UnitTests/Common/PublicApi.txt
+++ b/Sources/Tests/UnitTests/Common/PublicApi.txt
@@ -1879,6 +1879,7 @@ AngouriMath.Entity+Number.IsZero(PeterO.Numbers.EDecimal) : System.Boolean
AngouriMath.Entity+Number.Li(AngouriMath.Entity+Number+Complex) : AngouriMath.Entity+Number+Complex
AngouriMath.Entity+Number.Ln(AngouriMath.Entity+Number+Complex) : AngouriMath.Entity+Number+Complex
AngouriMath.Entity+Number.Log(AngouriMath.Entity+Number+Complex, AngouriMath.Entity+Number+Complex) : AngouriMath.Entity+Number+Complex
+AngouriMath.Entity+Number.Polygamma(PeterO.Numbers.EInteger, AngouriMath.Entity+Number+Complex) : AngouriMath.Entity+Number+Complex
AngouriMath.Entity+Number.Pow(AngouriMath.Entity+Number+Complex, AngouriMath.Entity+Number+Complex) : AngouriMath.Entity+Number+Complex
AngouriMath.Entity+Number.PrintMembers(System.Text.StringBuilder) : System.Boolean
AngouriMath.Entity+Number.Replace(System.Func) : AngouriMath.Entity
@@ -1985,6 +1986,28 @@ AngouriMath.Entity+Piecewise.ToString() : System.String
AngouriMath.Entity+Piecewise.ctor(System.Collections.Generic.IEnumerable)
AngouriMath.Entity+Piecewise.op_Equality(AngouriMath.Entity+Piecewise, AngouriMath.Entity+Piecewise) : System.Boolean
AngouriMath.Entity+Piecewise.op_Inequality(AngouriMath.Entity+Piecewise, AngouriMath.Entity+Piecewise) : System.Boolean
+AngouriMath.Entity+Polygammaf.$() : AngouriMath.Entity+Polygammaf
+AngouriMath.Entity+Polygammaf.Argument { } : AngouriMath.Entity
+AngouriMath.Entity+Polygammaf.Codomain { } : AngouriMath.Core.Domain
+AngouriMath.Entity+Polygammaf.Deconstruct(AngouriMath.Entity&, AngouriMath.Entity&) : System.Void
+AngouriMath.Entity+Polygammaf.EqualityContract { } : System.Type
+AngouriMath.Entity+Polygammaf.Equals(AngouriMath.Entity+Function) : System.Boolean
+AngouriMath.Entity+Polygammaf.Equals(AngouriMath.Entity+Polygammaf) : System.Boolean
+AngouriMath.Entity+Polygammaf.Equals(System.Object) : System.Boolean
+AngouriMath.Entity+Polygammaf.GetHashCode() : System.Int32
+AngouriMath.Entity+Polygammaf.InitDirectChildren() : AngouriMath.Entity[]
+AngouriMath.Entity+Polygammaf.InnerDifferentiate(AngouriMath.Entity+Variable) : AngouriMath.Entity
+AngouriMath.Entity+Polygammaf.InnerSimplify(System.Boolean) : AngouriMath.Entity
+AngouriMath.Entity+Polygammaf.NodeFirstChild { } : AngouriMath.Entity
+AngouriMath.Entity+Polygammaf.NodeSecondChild { } : AngouriMath.Entity
+AngouriMath.Entity+Polygammaf.Order { } : AngouriMath.Entity
+AngouriMath.Entity+Polygammaf.PrintMembers(System.Text.StringBuilder) : System.Boolean
+AngouriMath.Entity+Polygammaf.Replace(System.Func) : AngouriMath.Entity
+AngouriMath.Entity+Polygammaf.Substitute(AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity
+AngouriMath.Entity+Polygammaf.ToString() : System.String
+AngouriMath.Entity+Polygammaf.ctor(AngouriMath.Entity, AngouriMath.Entity)
+AngouriMath.Entity+Polygammaf.op_Equality(AngouriMath.Entity+Polygammaf, AngouriMath.Entity+Polygammaf) : System.Boolean
+AngouriMath.Entity+Polygammaf.op_Inequality(AngouriMath.Entity+Polygammaf, AngouriMath.Entity+Polygammaf) : System.Boolean
AngouriMath.Entity+Powf.$() : AngouriMath.Entity+Powf
AngouriMath.Entity+Powf.Base { } : AngouriMath.Entity
AngouriMath.Entity+Powf.Codomain { } : AngouriMath.Core.Domain
@@ -3180,6 +3203,7 @@ AngouriMath.MathS.Cotan(AngouriMath.Entity) : AngouriMath.Entity
AngouriMath.MathS.Derivative(AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity
AngouriMath.MathS.Derivative(AngouriMath.Entity, AngouriMath.Entity, System.Int32) : AngouriMath.Entity
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.Ei(AngouriMath.Entity) : AngouriMath.Entity
AngouriMath.MathS.Equality(AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity
@@ -3242,6 +3266,7 @@ AngouriMath.MathS.O_4 : AngouriMath.Entity+Matrix
AngouriMath.MathS.Parse(System.String) : HonkSharp.Functional.Either>>
AngouriMath.MathS.Piecewise(System.Collections.Generic.IEnumerable, AngouriMath.Entity) : AngouriMath.Entity
AngouriMath.MathS.Piecewise(System.ValueTuple[]) : AngouriMath.Entity
+AngouriMath.MathS.Polygamma(AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity
AngouriMath.MathS.Pow(AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity
AngouriMath.MathS.Product(AngouriMath.Entity, AngouriMath.Entity, AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity
AngouriMath.MathS.Provided(AngouriMath.Entity, AngouriMath.Entity) : AngouriMath.Entity
@@ -3416,6 +3441,7 @@ class AngouriMath.Entity+Number+Real
class AngouriMath.Entity+Orf
class AngouriMath.Entity+Phif
class AngouriMath.Entity+Piecewise
+class AngouriMath.Entity+Polygammaf
class AngouriMath.Entity+Powf
class AngouriMath.Entity+Primef
class AngouriMath.Entity+Productf
diff --git a/Sources/Tests/UnitTests/Convenience/PolygammaTest.cs b/Sources/Tests/UnitTests/Convenience/PolygammaTest.cs
new file mode 100644
index 000000000..85f5938bf
--- /dev/null
+++ b/Sources/Tests/UnitTests/Convenience/PolygammaTest.cs
@@ -0,0 +1,95 @@
+//
+// 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.Extensions;
+using PeterO.Numbers;
+using Xunit;
+using static AngouriMath.Entity.Number;
+
+namespace AngouriMath.Tests.Convenience
+{
+ ///
+ /// The polygamma functions psi^(n)(z), the digamma function among them, and the derivative of the
+ /// factorial they give: (x!)' = x! psi(x + 1), which declined while the library had no digamma function.
+ /// References from mpmath at 130 digits.
+ /// #171
+ ///
+ [Trait("Area", "Convenience")]
+ public sealed class PolygammaTest
+ {
+ private static void AssertClose(string reference, EDecimal actual)
+ {
+ var expected = EDecimal.FromString(reference);
+ var error = actual.Subtract(expected, EContext.ForPrecision(200)).Abs().Divide(expected.Abs(), EContext.ForPrecision(10));
+ Assert.True(error.LessThan(EDecimal.FromString("1E-55")), $"{actual} where it is {expected}");
+ }
+
+ [Theory]
+ // -gamma, -gamma - 2 ln 2, by reflection, and the digamma function of a large argument.
+ [InlineData("digamma(1)", "-0.577215664901532860606512090082402431042159335939923598805767")]
+ [InlineData("digamma(1/2)", "-1.96351002602142347944097633299875556719315960466043410704713")]
+ [InlineData("digamma(-1/2)", "0.0364899739785765205590236670012444328068403953395658929528727")]
+ [InlineData("digamma(21/2)", "2.30300103429768637527259355084976605222629263212926398296056")]
+ [InlineData("digamma(10^10)", "23.0258509298904568401790812135103087426776823862877297603333")]
+ [InlineData("digamma(-10^6 + 1/2)", "13.8155105579643157707746153874811852456104531778043797538314")]
+ // pi^2/6, and orders past one on either side of 0.
+ [InlineData("polygamma(1, 1)", "1.64493406684822643647241516664602518921894990120679843773556")]
+ [InlineData("polygamma(2, 3)", "-0.154113806319188570799476323022899981529972584680997763584543")]
+ [InlineData("polygamma(3, -5/2)", "194.747876219187622421625517873890296434912770857870606876653")]
+ [InlineData("polygamma(5, 1/3)", "87502.2152361966023795285638471692738850417457051333041487639")]
+ public void IsItsValueOnTheRealLine(string expression, string reference)
+ => AssertClose(reference, Assert.IsType(expression.EvalNumerical()).EDecimal);
+
+ [Theory]
+ [InlineData("digamma(1 + i)", "0.0946503206224769772718784827219107224762629717635416232329897", "1.07667404746858117413405079475000049044565626640381666557506")]
+ [InlineData("polygamma(1, 1/4 + 2i)", "-0.0659875969316856927740067718219804136807514101395018917845139", "-0.502733085636287710672357390342666507577585357074072483065022")]
+ [InlineData("digamma(-3/2 + i)", "0.809776810544048995668935476826367320162050302850132323665155", "2.67263282550818697494581681264808164030881630446709282234297")]
+ public void IsItsValueOffTheRealLine(string expression, string real, string imaginary)
+ {
+ var value = Assert.IsType(expression.EvalNumerical());
+ AssertClose(real, value.RealPart.EDecimal);
+ AssertClose(imaginary, value.ImaginaryPart.EDecimal);
+ }
+
+ [Theory]
+ [InlineData("digamma(0)")]
+ [InlineData("digamma(-3)")]
+ [InlineData("polygamma(2, -1)")]
+ public void IsUndefinedAtAPole(string expression)
+ => Assert.True(expression.EvalNumerical() is Complex { IsNaN: true }, $"{expression} is {expression.EvalNumerical()}");
+
+ [Fact]
+ public void TheDerivativeOfTheFactorialIsWrittenWithTheDigammaFunction()
+ {
+ var derivative = "x!".ToEntity().Differentiate("x");
+ Assert.Equal("x! * digamma(x + 1)".ToEntity().InnerSimplified, derivative.InnerSimplified);
+ AssertClose("7.5367060105908028363609274595055854137470439843604584071654",
+ Assert.IsType(derivative.Substitute("x", 3).EvalNumerical()).EDecimal);
+ }
+
+ [Fact]
+ public void EachOrderIsTheDerivativeOfTheOneBefore()
+ {
+ Assert.Equal(MathS.Polygamma(1, "x"), "digamma(x)".ToEntity().Differentiate("x"));
+ Assert.Equal((MathS.Polygamma(3, "x^2") * (2 * MathS.Var("x"))).InnerSimplified, "polygamma(2, x^2)".ToEntity().Differentiate("x").InnerSimplified);
+ }
+
+ [Theory]
+ [InlineData("digamma(x)", "digamma(x)", @"\psi\left(x\right)", "sympy.digamma(x)")]
+ [InlineData("polygamma(2, x)", "polygamma(2, x)", @"\psi^{(2)}\left(x\right)", "sympy.polygamma(2, x)")]
+ [InlineData("polygamma(0, x)", "digamma(x)", @"\psi\left(x\right)", "sympy.digamma(x)")]
+ public void IsParsedAndPrinted(string written, string text, string latex, string sympy)
+ {
+ var entity = written.ToEntity();
+ Assert.IsType(entity);
+ Assert.Equal(text, entity.Stringize());
+ Assert.Equal(latex, entity.Latexize());
+ Assert.Contains(sympy, MathS.ToSympyCode(entity));
+ Assert.Equal(entity, entity.Stringize().ToEntity());
+ }
+ }
+}
diff --git a/Sources/Tests/UnitTests/Core/Transformations/RuleAuthoringGuideTest.cs b/Sources/Tests/UnitTests/Core/Transformations/RuleAuthoringGuideTest.cs
index d49f30808..31b3b67e7 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(61, MatchPattern.BuildableNodeTypes.Count, "the number of buildable node types");
+ => Stated(62, MatchPattern.BuildableNodeTypes.Count, "the number of buildable node types");
[Fact]
public void ReplacementAPatternOrCode()